Redis數據類型應用場景及具體方法總結

Strings
Strings 數據結構是簡單的key-value類型,value其實不僅是String,也可以是數字。使用Strings類型,你可以完全實現目前 Memcached 的功能,并且效率更高。還可以享受Redis的定時持久化,操作日志及 Replication等功能。除了提供與 Memcached 一樣的get、set、incr、decr 等操作外,Redis還提供了下面一些操作:

獲取字符串長度
往字符串append內容
設置和獲取字符串的某一段內容
設置及獲取字符串的某一位(bit)
批量設置一系列字符串的內容
Hashs
在Memcached中,我們經常將一些結構化的信息打包成hashmap,在客戶端序列化后存儲為一個字符串的值,比如用戶的昵稱、年齡、性別、積分等,這時候在需要修改其中某一項時,通常需要將所有值取出反序列化后,修改某一項的值,再序列化存儲回去。這樣不僅增大了開銷,也不適用于一些可能并發操作的場合(比如兩個并發的操作都需要修改積分)。而Redis的Hash結構可以使你像在數據庫中Update一個屬性一樣只修改某一項屬性值。

Lists
Lists 就是鏈表,相信略有數據結構知識的人都應該能理解其結構。使用Lists結構,我們可以輕松地實現最新消息排行等功能。Lists的另一個應用就是消息隊列,可以利用Lists的PUSH操作,將任務存在Lists中,然后工作線程再用POP操作將任務取出進行執行。Redis還提供了操作Lists中某一段的api,你可以直接查詢,刪除Lists中某一段的元素。

Sets
Sets 就是一個集合,集合的概念就是一堆不重復值的組合。利用Redis提供的Sets數據結構,可以存儲一些集合性的數據,比如在微博應用中,可以將一個用戶所有的關注人存在一個集合中,將其所有粉絲存在一個集合。Redis還為集合提供了求交集、并集、差集等操作,可以非常方便的實現如共同關注、共同喜好、二度好友等功能,對上面的所有集合操作,你還可以使用不同的命令選擇將結果返回給客戶端還是存集到一個新的集合中。

Sorted Sets
和Sets相比,Sorted Sets增加了一個權重參數score,使得集合中的元素能夠按score進行有序排列,比如一個存儲全班同學成績的Sorted Sets,其集合value可以是同學的學號,而score就可以是其考試得分,這樣在數據插入集合的時候,就已經進行了天然的排序。另外還可以用Sorted Sets來做帶權重的隊列,比如普通消息的score為1,重要消息的score為2,然后工作線程可以選擇按score的倒序來獲取工作任務。讓重要的任務優先執行。

Pub/Sub
Pub/Sub 從字面上理解就是發布(Publish)與訂閱(Subscribe),在Redis中,你可以設定對某一個key值進行消息發布及消息訂閱,當一個key值上進行了消息發布后,所有訂閱它的客戶端都會收到相應的消息。這一功能最明顯的用法就是用作實時消息系統,比如普通的即時聊天,群聊等功能。

Transactions
誰說NoSQL都不支持事務,雖然Redis的Transactions提供的并不是嚴格的ACID的事務(比如一串用EXEC提交執行的命令,在執行中服務器宕機,那么會有一部分命令執行了,剩下的沒執行),但是這個Transactions還是提供了基本的命令打包執行的功能(在服務器不出問題的情況下,可以保證一連串的命令是順序在一起執行的,中間有會有其它客戶端命令插進來執行)。Redis還提供了一個Watch功能,你可以對一個key進行Watch,然后再執行Transactions,在這過程中,如果這個Watched的值進行了修改,那么這個Transactions會發現并拒絕執行。

連接操作相關的命令

quit:關閉連接(connection)
auth:簡單密碼認證

持久化

save:將數據同步保存到磁盤
bgsave:將數據異步保存到磁盤
lastsave:返回上次成功將數據保存到磁盤的Unix時戳
shundown:將數據同步保存到磁盤,然后關閉服務

遠程服務控制

info:提供服務器的信息和統計
monitor:實時轉儲收到的請求
slaveof:改變復制策略設置
config:在運行時配置Redis服務器

對value操作的命令

exists(key):確認一個key是否存在
del(key):刪除一個key
type(key):返回值的類型
keys(pattern):返回滿足給定pattern的所有key
randomkey:隨機返回key空間的一個
keyrename(oldname, newname):重命名key
dbsize:返回當前數據庫中key的數目
expire:設定一個key的活動時間(s)
ttl:獲得一個key的活動時間
select(index):按索引查詢
move(key, dbindex):移動當前數據庫中的key到dbindex數據庫
flushdb:刪除當前選擇數據庫中的所有key
flushall:刪除所有數據庫中的所有key

對String操作的命令

set(key, value):給數據庫中名稱為key的string賦予值value
get(key):返回數據庫中名稱為key的string的value
getset(key, value):給名稱為key的string賦予上一次的value
mget(key1, key2,…, key N):返回庫中多個string的value
setnx(key, value):添加string,名稱為key,值為value
setex(key, time, value):向庫中添加string,設定過期時間time
mset(key N, value N):批量設置多個string的值
msetnx(key N, value N):如果所有名稱為key i的string都不存在
incr(key):名稱為key的string增1操作
incrby(key, integer):名稱為key的string增加integer
decr(key):名稱為key的string減1操作
decrby(key, integer):名稱為key的string減少integer
append(key, value):名稱為key的string的值附加value
substr(key, start, end):返回名稱為key的string的value的子串

對List操作的命令

rpush(key, value):在名稱為key的list尾添加一個值為value的元素
lpush(key, value):在名稱為key的list頭添加一個值為value的 元素
llen(key):返回名稱為key的list的長度
lrange(key, start, end):返回名稱為key的list中start至end之間的元素
ltrim(key, start, end):截取名稱為key的list
lindex(key, index):返回名稱為key的list中index位置的元素
lset(key, index, value):給名稱為key的list中index位置的元素賦值
lrem(key, count, value):刪除count個key的list中值為value的元素
lpop(key):返回并刪除名稱為key的list中的首元素
rpop(key):返回并刪除名稱為key的list中的尾元素
blpop(key1, key2,… key N, timeout):lpop命令的block版本。
brpop(key1, key2,… key N, timeout):rpop的block版本。
rpoplpush(srckey, dstkey):返回并刪除名稱為srckey的list的尾元素,并將該元素添加到名稱為dstkey的list的頭部

對Set操作的命令

sadd(key, member):向名稱為key的set中添加元素member
srem(key, member) :刪除名稱為key的set中的元素member
spop(key) :隨機返回并刪除名稱為key的set中一個元素
smove(srckey, dstkey, member) :移到集合元素
scard(key) :返回名稱為key的set的基數
sismember(key, member) :member是否是名稱為key的set的元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, (keys)) :求交集并將交集保存到dstkey的集合
sunion(key1, (keys)) :求并集
sunionstore(dstkey, (keys)) :求并集并將并集保存到dstkey的集合
sdiff(key1, (keys)) :求差集
sdiffstore(dstkey, (keys)) :求差集并將差集保存到dstkey的集合
smembers(key) :返回名稱為key的set的所有元素
srandmember(key) :隨機返回名稱為key的set的一個元素

對Hash操作的命令

hset(key, field, value):向名稱為key的hash中添加元素field
hget(key, field):返回名稱為key的hash中field對應的value
hmget(key, (fields)):返回名稱為key的hash中field i對應的value
hmset(key, (fields)):向名稱為key的hash中添加元素field?
hincrby(key, field, integer):將名稱為key的hash中field的value增加integer
hexists(key, field):名稱為key的hash中是否存在鍵為field的域
hdel(key, field):刪除名稱為key的hash中鍵為field的域
hlen(key):返回名稱為key的hash中元素個數
hkeys(key):返回名稱為key的hash中所有鍵
hvals(key):返回名稱為key的hash中所有鍵對應的value
hgetall(key):返回名稱為key的hash中所有的鍵(field)及其對應的value

轉載于:https://www.cnblogs.com/toward-the-sun/p/6406471.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284597.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284597.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284597.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

幾種距離的計算

http://www.tinysoft.com.cn/TSDN/HelpDoc/display.tsl?id12831 http://www.3566t.com/news/kvqa/1172028.html轉載于:https://www.cnblogs.com/wangduo/p/5526003.html

vue vue-router vuex element-ui axios 寫一個代理平臺的學習筆記(十一)構思商品頁面...

在寫商品頁面product.vue之前,我應該思考一下,商品頁面要實現那些功能,該不如布局?要實現的功能 1、所有商品列表的展示2、分類商品的列表展示 3、搜索商品或得列表展示4、單一商品的詳細頁面5、商品列表分頁功能6、還沒想到的...…

【ArcGIS Pro微課1000例】0019:ArcGIS Pro從海洋的視角看世界---海洋投影(Spilhaus Projection)

從海洋的視角看世界: 世界地圖大多是以陸地為主要載體,如果以海洋為主角,就需要使用一種海洋投影。該投影以Spilhaus博士的名稱命名。ArcGIS Pro自2.5版本以來提供了Spilhaus Projection。 投影效果預覽: 接下來演示ArcGIS Pro 2.8中海洋投影的轉換方法: 1. 新建一個工程…

有人擼了個網頁版win11,驚艷!

演示地址:https://win11.blueedge.me/ Github地址:https://github.com/blueedgetechno/windows11

Vue3+.NET6+C#10,最近優質前后端分離項目匯總

據說80%的WEB開發都是管理后臺,一套開源的優秀管理后臺開發模板堪稱福音!分享一套Vue3 Axios TS Vite Element Plus .NET 6 WebAPI JWT SqlSugar的前后端分離架構的通用管理后臺源碼數據庫腳本,還有與之配套錄制的一組視頻教程,全…

九九乘法表

問題描述:打印乘法表如圖:1*112*12 2*243*13 3*26 3*394*14 4*28 4*312 4*4165*15 5*210 5*315 5*420 5*5256*16 6*212 6*318 6*424 6*530 6*6367*17 7*214 7*321 7*428 7*535 7*642 7…

C++ 對象的內 存布局(下)

原文地址:http://blog.csdn.net/haoel/article/details/3081385 (注:看本文的時候由于宿舍快斷電了,來不及細看,所以怕自己忘記,先貼出來.不排除文章有錯誤,大家自己測試一下.) 重復繼承 下面我們再來看看,發生重復繼承的情況。所謂重復繼承,…

用python快速合并代碼(方便軟著申請)

Title: This is a file for …… Author: JackieZheng Date: 2021-09-08 09:43:58 LastEditTime: 2021-09-08 21:14:22 LastEditors: Please set LastEditors Description: FilePath: \\pythonCode\\mergeCodeFile.py import os# 允許提取的文件類型 include_file_types[.php,…

【GIS風暴】一文徹底弄懂數字地形(DEM、DOM、TDOM、DSM)的區別與聯系

在2021自然資源部發布的《實景三維中國建設技術大綱(2021版)》中,空間數據部分包括“數字高程模型(DEM)、數字表面模型(DSM)、數字正射影像(DOM)、真正射影像(TDOM)、傾斜攝影三維模型、激光點云等。” 那么到底什么是DEM、DOM、TDOM、DSM,它們之間又有什么用的區別…

na+mb與gcd

蒜頭君和花椰妹在玩一個游戲,他們在地上將 nn 顆石子排成一排,編號為 11 到 nn。開始時,蒜頭君隨機取出了 22 顆石子扔掉,假設蒜頭君取出的 22 顆石子的編號為 aa, bb。游戲規則如下,蒜頭君和花椰妹 22 人輪流取石子&a…

什么是“異步 Request-Reply”模式?編程如何實現?

在某些情況下,WEB API 可能需要很長時間來處理請求,而客戶端如果一直等待工作完成是不可行的,比如連接超時等。這時,可以使用“異步 Request-Reply 模式”。異步 Request-Reply 模式異步 Request-Reply 模式是指:在后端…

【測繪程序設計】Excel度分秒(° ‘ “)轉換度(°)模板附代碼超實用版

在實際工作中,無論是ArcGIS中,還是CASS中,作圖時需要將GPS實測的經緯度度分秒( ’ ")坐標轉換為度(),在前面的文章中介紹了C#中將度分秒轉為度的轉換程序,本文講解在Excel中快速度分秒( ’ ")轉換度(),提高工作效率。 文章目錄 準備工作編寫代碼注意事…

IO擴展控件(System.IO.Abstractions)

剛看到這個Namespace的時候還以為是.Net Framework里自帶的包,結果查了一圈無任何結果。果斷上Github搜索,一擊即中 https://github.com/tathamoddie/System.IO.Abstractions先翻譯下開發者給出的簡單說明,今后再慢慢使用類似于System.Web.Ab…

從零開始學_JavaScript_系列(21)——dojo(8)(手把手教你封裝一個widget)

(73)封裝一個widget 醒目:必須在web環境下使用,無論是python的web.py或者是通過http訪問網站環境,都可以,但純本地是不可行的。 首先,什么是widget? 簡單來說,就是一個do…

[轉]面向對象(1、三大特征;2、六大原則)

目錄 一、面向對象的概述: 二、封裝: 1、封裝概述 2、封裝原則 3、封裝好處 4、封裝壞處 5、封裝代碼展示 三、繼承: 1、概念: 2、實現格式: 3、特點: 4、好處: 5、弊端&#xff1…

Python的MySQLdb模塊安裝

在配置Django時,選擇的是mysql數據庫,要安裝MySQLdb模塊,不過安裝過程中,遇到了很多errors,記錄一下。 系統:ubuntu 11.10 mysql:直接apt-get安裝的,version:5.1.62 到官方下載MySQL for Python 然后解壓&a…

【測繪程序設計】C#將度分秒(° ‘ “)轉換度(°)程序實現(附源碼)

在實際工作中,無論是ArcGIS中,還是CASS中,作圖時需要將GPS實測的經緯度度分秒( ’ ")坐標轉換為度(),在前面的文章中介紹了Excel中將度分秒轉為度的轉換程序,本文講解在Visual Studio中,采用C#語言實現快速度分秒( ’ ")轉換度(),提高工作效率。 案例…

Spotlight監控工具使用

Spotlight on unix監控linux服務器 1.下載安裝,工具包下載地址: 注:安裝之后需要破解注冊碼 2.由于spotlight不能默認使用root用戶登錄,所以必須先創建一個具有root權限的用戶 注:密碼最好不要設置的過于簡單化 [rootm…

Grpc MagicOnion庫 之 客戶端和服務端 (案例版)

之前通過自己寫動態代理和用現成的動態代理庫等實現過RPC功能,今天,就寫一下如何直接引用GRPC的庫來實現業務邏輯。gRPC的介紹,之前我也說了這個g的含義太多,也包含谷歌的意思了。可以看這個gRPC的文檔介紹 : https://grpc.io/doc…

Windows11右下角出現評估副本水印如何去除?

Universal Watermark Disabler是一款十分好用的桌面工具,這款工具可以幫助用戶輕松的去除Windows11 版本的操作系統右下角的水印。 使用方法 1、打開Universal Watermark Disabler軟件,顯示出當前系統的版本與水印狀態。 2、Status中顯示Ready for insta…