redis常用數據結構及使用場景

官網命令大全網址:http://www.redis.cn/commands.html

1、命令不區分大小寫,而key是區分大小寫

2、幫助命令: help @類型名詞,如:help @list

一、九大數據結構

清空所有key(慎用)

flush all

1、String(字符類型)

① 常用:

set key value
get key

② 同時設置/獲取多個鍵值

MSET key value [key value ....]
MGET key [key ....]

注:m:more

③ 遞增/遞減指定步長

遞增1/遞減1:

INCR key
DECR key

遞增/遞減指定步長:

INCRBY key increment
DECRBY key decrement

④ 獲取字符串長度

STRLEN key

⑤ 分佈式鎖

setnx key value---不存在才創建
set key value [Ex seconds][PX milliseconds][NX|XX]---以保留指定時間單位進行創建

⑥ 使用場景

商品編號、訂單號採用INCR命令生成

是否喜歡的文章

2、Hash(散列類型)

類似java中數據類型:Map<String,Map<Object,object>>

① 一次設置一個字段值/一次獲取一個字段值

HSET key field value
HGET key field

② 一次設置多個字段值/一次獲取多個字段值

HMSET key field value [field value ...]
HMGET key field [field ....]

③ 獲取所有字段值

hgetall key

④ 獲取某個key內的全部數量

hlen key

⑤ 刪除一個key

hdel key field

⑥ 應用場景 購物車早期,當前小中廠可用

hmset cart:001 product001 1 product003 5 sumprice 500.0RMB
hgetall cart:001

臨時決定增加3份商品product001的數量:

hincrby cart:001 product001 3

3、List(列表類型)

list數據結構是一個雙端鏈表

① 向列表左邊添加元素

LPUSH key value [value ...]

② 向列表右邊添加元素

RPUSH key value [value ....]

③ 查看列表

LRANGE key start stop

④ 獲取列表中元素的個數

LLEN key

⑤ 應用場景

微信文章訂閱公衆號

4、Set(集合類型)

注:集合中元素不重複

① 添加元素

SADD key member[member ...]

② 刪除元素

SREM key member [member ...]

③ 獲取集合中的所有元素

SMEMBERS key

④ 判斷元素是否在集合中

SISMEMBER key member

⑤ 獲取集合中的元素個數

SCARD key

⑥ 從集合中隨機彈出一個元素,元素不刪除

SRANDMEMBER key [數字]

⑦ 從集合中隨機彈出一個元素,出一個刪一個

SPOP key[數字]

⑧ 集合的差集運算A-B:屬於A但不屬於B的元素構成的集合

SDIFF key [key ...]

⑨ 集合的交集運算A∩B:屬於A同時也屬於B的共同擁有的元素構成的集合

SINTER key [key ...]

⑩ 集合的並集運算AUB:屬於A或者屬於B的元素合併後的集合

SUNION key [key ...]

應用場景:

① 微信抽獎小程序

1 用戶ID,立即參與按鈕sadd key 用戶ID2 顯示已經有多少人蔘與了,上圖23208人蔘加SCARD key3 抽獎(從set中任意選取N箇中獎人)
sadd key user001 user002 ...
SCARD key 多少人蔘與
SRANDMEMBER key 2 隨機抽獎2個人,元素不刪除
SPOP key 3 隨機抽獎3個人,元素會刪除
 

② 微信朋友圈點贊

sadd page:005 user001 user005 ...-------添加進點贊某文章集合
srem page:005 user005 -------某用戶取消點贊,從集合中移除

③ 微博好友關注社交關係

 共同關注的人

sadd user:001 user004 user005 user003
sadd user:003 user005 user009 user002

--共同關注的人
sinter user:001 user003

--我關注的人也關注了他
smembers user001
smembers user003

④ QQ內推可能認識的人

取差集

sdiff user:001 user:003

5、SortedSet(有序集合類型,簡稱zset)

向有序集合中加入一個元素和該元素的分數

① 添加元素

ZADD key score member [score member ...]

② 按照元素分數從小到大的順序 返回索引從start到stop之間的所有元素

ZRANGE key start stop [WITHSCORES]

③ 獲取元素的分數

 ZSCORE key member

④ 刪除元素

ZREM key member [member ...]

⑤ 獲取指定分數範圍的元素

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

⑥增加某個元素的分數

ZINCRBY key increment member

⑦ 獲取集合中元素的數量

ZCARD key

⑧ 獲得指定分數範圍內的元素個數

ZCOUNT key min max

⑨ 按照排名範圍刪除元素

ZREMRANGEBYRANK key start stop

⑩ 獲取元素的排名

1、從小到大

ZRANK key member

2、從大到小

ZREVRANK key member

應用場景:

1、根據商品銷售對商品進行排序顯示

思路:定義商品銷售排行榜(sorted set集合),key爲goods:sellsort,分數爲商品銷售數量。

商品編號1001的銷量是9,商品編號1002的銷量是15
zadd goods:sellsort 9 1001 15 1002
有一個客戶又買了2件商品1001,商品編號1001銷量加2
zincrby goods:sellsort 2 1001
求商品銷量前10名ZRANGE goods:sellsort 0 9 withscores
                                                        

2、抖音熱搜


抖音熱搜1點擊視頻ZINCRBY hotvcr:20200919 1八佰
ZINCRBY hotvcr:20200919 15 八佰 2 花木蘭2 展示當日排行前10條ZREVRANGE hotvcr:20200919 0 9 withscores

6、Bitmap(位圖)

7、HyperLogLog(統計)

8、GEO(地理)

9、Stream(流)

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