Redis的各種數據類型的應用場景與命令

Redis的常用數據類型String、List、Set、OrderSet、Hash
一、String類型
應用場景
1.web應用中保存用戶的token,用於集羣服務器的token校驗;
2.對web應用的查詢結果進行緩存;
3.保存系統中一些可以更變的key-value的數據,例如:設置系統某個定時器執行的時間;
4.incr是原子的,實現系統的計數統計,例如文檔保存的編號,第一個文檔爲1,第二個文件時調用incr訪問,將會返回2;系統訪問次數統計,每訪問一次調用incr一次;
5.設置暫停時間,例如設置機器休息5分鐘,setex 3000 devicestop value ,系統訪問時exists devicestop,如果存在,說明機器正在休息中,5分鐘後,機器自動到期;
6.分佈式鎖,setnx的作用是“當key不存在時,設值並返回1,當key已經存在時,不設值並返回0”,判斷key是否存在”和“設值”兩個操作是原子性地執行的,因此可以用string類型作爲分佈式鎖
String的Redis命令
set key value:保存一個字符串,如果該key存在就會重新覆蓋;
setex key seconds value:保存一個字符串並設置過期時間(單位秒),如果key存在就會重新覆蓋並重新設置過期時間;
setnx key value:保存一個字符串,如果key存在則保存失敗;
strlen key:獲取key長度;
setrange key offset value:從指定的offset處開始,覆蓋value的長度;如果offset比當前key對應string還要長,那這個string後面就補空字符串" “以達到offset;
append key :如果 key 已經存在,並且值爲字符串,那麼這個命令會把 value 追加到原來值(value)的結尾,如果不存在相當於set命令;
psetex key milliseconds value:跟setex一樣,但是過期單位換爲毫秒;
mset key value [key value …]:批量set;
msetnx key value [key value]:批量setnx;
get key:返回key的value;
mget key [key…]:批量返回key的value;
getset key:保存key的value,並獲取之前的值;
getrange key start end: 返回key對應的字符串value的子串,這個子串是由start和end位移決定的(兩者都在string內),可以用負的位移來表示從string尾部開始數的下標。所以-1就是最後一個字符,-2就是倒數第二個;
incr key:執行原子加1操作;
incrby key increment:執行原子加一個整數;
incrbyfloat key increment:執行原子加一個浮點數;
decr key:執行原子減1操作;
decrby key increment:執行原子減一個整數;
decrbyfloat key increment:執行原子減一個浮點數;
exists key :查詢一個key是否存在;
del key [key…]:刪除key;
expire key seconds:設置一個key的過期時間(秒);
pexpire key seconds:設置一個key的過期時間(毫秒);
expire key timestamp:設置一個key的過期時間(時間點 秒);
pexpire key timestamp:設置一個key的過期時間(時間點 毫秒);
persist key :移除key的過期時間;
ttl key :key的剩餘過期時間(秒);
pttl key :key的剩餘過期時間(毫秒);
random key:隨機返回key;
rename key newkey:key重命名,newkey存在時指被覆蓋;
renamenx key newkey:當且僅當 newkey 不存在時,將 key 改名爲 newkey ;
type key :返回key所存儲的value的數據結構類型,它可以返回string, list, set, zset 和 hash等不同的類型;
keys pattern :支持正則表達式,返回key值;
二、List類型
List應用場景
1.點對點消息隊列,同一份解答問題任務有20個不同的問題,把20個問題加入隊列中,然後由用戶獲取裏面的問題出來解答;
2.排行榜,把每天的統計的排行榜加入隊列中,通過lrange分頁查看隊列數據;
3.最新列表,lpush命令和lrange命令能實現最新列表的功能,ltrim控制列表大小;
List命令
lpush key value [value…]:左邊入隊一個或多個value;
lpushx key value:隊列存在時左邊入隊一個或多個value;
lrange key start end:從左邊獲取key的元素,下表從0開始,-1表示倒數第一個,獲取訪問>=start,<=end,元素不刪除;
lrem key count value:從左邊刪除key中的前count個value,-1表示倒數第一個;
lset key index value:設置 index 位置的list元素的值爲 valu;
ltrim key start end:修剪(trim)一個已存在的 list,這樣 list 就會只包含指定範圍的指定元素。start 和 end 都是由0開始計數的;
llen key:獲取隊列的長度;
lindex key index:通過索引獲取一個元素;
linsert key before|after povot value:把 value 插入存於 key 的列表中在基準值 pivot 的前面或後面;
lpop:從隊列的左邊出隊一個元素,元素減少;
rpop:從隊列的右邊出隊一個元素,元素減少;
rpush key value [value…]:右邊入隊一個或多個value;
rpushx key value:隊列存在時右邊入隊一個或多個value;
rpoplpush source destination:把隊列右邊最後一個元素放入新的隊列中,並返回;
blpop key[key…] timeout :從一個或多個隊列的左邊出隊一個元素,元素減少(阻塞模式);
rlpop key[key…] timeout :從一個或多個隊列的右邊出隊一個元素,元素減少(阻塞模式);
brpoplpush source destination:把隊列右邊最後一個元素放入新的隊列中,並返回(阻塞模式);
三、Set類型
Set應用場景
1.過率存儲不同的值的元素,自動去重;
2.自動隨機獲取不同的集合元素,撲克牌麻將出牌、隨機展示;
3.根據類型不同存不同集合,求交集、並集、差集,實現如共同關注、共同喜好、二度好友等功能;
4.set集合黑名單快速查詢;
Set命令
sadd key member [menber…]:添加一個或者多個元素到Set;
scard key:獲取Set元素數量;
sdiff key [key1…]:返回key的差集,key-key1;
sdiffstore destination key [key1…]:返回key的差集並存在destination中;
sinter key [key…]:獲得集合交集;
sinterstore destination key [key1…]:返回key的交集並存在destination中;
sismember key member:判斷一個元素是否在集合中;
smembers key:獲取集合裏面所有元素;
smove key destination member:移動key Set中的元素到destination;
spop key [count]:獲取Set中元素並刪除;
srandmember key [count]:隨機獲取Set元素,不刪除;
srem key member [member…]:從集合刪除一個或多個元素;
sunion key [key…]:獲取並集;
sunionstore destination key [key]:獲取並集放入destination;
sscan key sursor [MATCH pattern] [];
四、SortSets類型
SortSets應用場景
以某個條件權重排序,例如用戶得分排序;
根據某個權限查詢,例如查詢得分50-100的旅客;
查找集合最大或最小值的可以;
返回集合中元素的排名數;
sortSet命令
zadd key [nx|xx][ch][incr] score member [score member…]: 添加一個或多個分數/成員(score/member)對,如果指定添加的成員已經是有序集合裏面的成員,則會更新改成員的分數(scrore)並更新到正確的排序位置;其中參數XX僅僅更新存在的成員,不添加新成員,NX不更新存在的成員,CH只添加新成員修改返回值爲發生變化的成員總數,原始是返回新添加成員的總數,INCR成員的操作就等同ZINCRBY命令;
zcard key:返回sortSet元素個數;
zcount key min max:返回分數範圍的元素個數;
zincrby key increment member:sortSet中member的score增量increment;
zrange key start stop [withscores]:返回存儲在有序集合key中的指定範圍的元素,返回的元素可以認爲是按得分從最低到最高排列。 如果得分相同,將按字典排序;
zrangebylex key min max [limit offset count]:分數必須相同! 如果有序集合中的成員分數有不一致的,返回的結果就不準,返回指定成員區間內的成員,按成員字典正序排序, 分數必須相同,其中min、max必須以”[“開頭,或者以”(“開頭,可使用”-“代替;
zrangebyscore key min max [withscores] [limit offset count]:返回key的有序集合中的分數在min和max之間的所有元素,區間的取值使用閉區間,也可以通過給參數前增加”(“符號來使用可選的開區間(小於或大於);
zrank key member:返回有序集key中成員member的排名;
zlexcount zset [member1 [member5計算有序集合中指定成員之間的成員數量;
zpopmax key [count]:返回有序集合key中的最多count個具有最高得分的成員;
zpopmin key [count]:返回有序集合key中的最多count個具有最低得分的成員;
zrem key member [member …]:刪除key元素;
zremrangebylex key min max: 刪除名稱按字典由低到高排序成員之間所有成員,分數必須相同,其中min、max必須以”[“開頭,或者以”(“開頭,可使用”-"代替;
zremrangebyrank key start stop:移除有序集key中,指定排名(rank)區間內的所有成員。下標參數start和stop都以0爲底,0處是分數最小的那個元素-1是分數最高的元素;
zremrangebyscore key min max:移除有序集key中,所有score值介於min和max之間(包括等於min或max)的成員;
REVRANGE key start stop [WITHSCORES]:返回存儲在有序集合key中的指定範圍的元素,返回的元素可以認爲是按得分從最高到最低排列。 如果得分相同,將按字典排序;
zrevrangebylex key max min [LIMIT offset count]:類似zrangebylex,排序順序反過來;
zrevrangebyscore key max min [LIMIT offset count]:類似zrangebyscore,排序順序反過來;
zrevrank key member:類似zrank,排序順序反過來;
zscore key member:返回有序集key中,成員member的score值;
五、hash類型
應用場景
存儲經常修改屬性的對象;
存儲用戶關係,用戶id, 年齡,姓名是key對應value值;
命令
Hdel key field [field…]:刪除一個或多個hash的field;
Hexists key field:判斷field是否存在hash中;
hget key field :獲取hash中field的值;
hgetall key:從hash中讀取全部的key和value;
hincreby key field increment:hash中的key增加increment;
hincrbyfloat key field increment:hash中的key增加浮點數;
hkeys key :獲取hash的所有字段;
hlen key:獲取hash裏所有的字段的數量;
hmget key field [field…]:獲取hash裏指定字段的值;
hmset key field value [field value]:設置hash字段值;
hset key field value:設置hash裏面一個字段的值;
hsetnx key field:設置hash的一個字段值,當key不存在時有效;
hsetlen key field:獲取hash裏面指定field的長度;
hvals key:獲取hash的所有值;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章