1.字符串存儲String
熱點數(shù)據(jù)緩存
由于redis訪問速度塊、支持的數(shù)據(jù)類型比較豐富尘盼,所以redis很適合用來存儲熱點數(shù)據(jù),另外結合expire卿捎,我們可以設置過期時間然后再進行緩存更新操作,這個功能最為常見躺孝,我們幾乎所有的項目都有所運用底桂。
a.單值緩存:
set key value ex time
get key
b.對象緩存
1.set user:1 value(json數(shù)據(jù)格式)
2.mset user:1:name laowang user:1:balance 8888
megt user:1:name user:1:balance
分布式鎖
setnx product:1 true 返回1表示獲取鎖成功,返回0表示獲取鎖失敗
del product:1 刪除鎖
set product:1 true ex 10 nx 防止程序意外終止導致死鎖
計數(shù)籽懦,如:統(tǒng)計文章點擊數(shù)
incr article:count:{id}
get article:count:{id}
Session共享
使用session作為key,用戶信息作為value
分布式全局序列號
incrby key 1
2.哈希表存儲Hash
對象屬性操作
hset user username laowang
hset user balance 8001
hincrbyfloat user balance 22
購物車
添加購物車:
hset cart:1001 10089 1
hset cart:1001 10089 1
獲取購物車
hgetall cart:1001
優(yōu)缺點
優(yōu)點:
1)同類數(shù)據(jù)歸類整合存儲厅篓,方便數(shù)據(jù)管理
2)相比string捶码,消耗的資源更小
3)相比string,更節(jié)省空間
缺點:
1)過期功能不能使用在field上
2)redis分片集群下按key分片乏苦,不適合大規(guī)模適用
3.列表存儲List
常用數(shù)據(jù)結構
stack(棧)=lpush+lpop-->filo
queue(隊列)=lpush+rpop-->fifo
blocking queue(阻塞隊列)=lpush=brpop
消息的時間軸顯示
lpush msg:user-1001 msgid1
lpush msg:user-1001 msgid2
lrange msg:user-1001 0 5
4.集合Set
抽獎程序
sadd key {userId} --添加用戶
smembers key --查看所有用戶
srandmember key [count] --隨機抽取count人尤筐,不從集合刪除
spop key [count] --隨機抽取count人洞就,從集合刪除
點贊、收藏旬蟋、標簽
sadd like:msgId {userId} --點贊
srem like:msgId {userId} --取消點贊
sismember like:msgId {userId} --檢查用戶是否點過贊
smembers like:msgId --獲取點贊用戶列表
scard like:msgId --獲取點贊用戶數(shù)
5.有序集合SortedSet
熱點排行榜
zincrby hotNews:20201126 1 newsId --點擊+1
zrevrank hotNews:20201126 0 9 withscores --獲取排名前十的
zunionstore hotNews:20201120-20201126 7 hotNews:20201120 hotNews:20201121 ... hotNews:20201126 --7日新聞排行榜
zrevrank hotNews:20201120-20201126 0 9 withscores --暫時7日排行榜前十
6.位圖Bitmap
簽到功能
- 用戶2月17號簽到
SETBIT u:sign:1000:201902 16 1 # 偏移量是從0開始倾贰,所以要把17減1- 檢查2月17號是否簽到
GETBIT u:sign:1000:201902 16 # 偏移量是從0開始,所以要把17減1- 統(tǒng)計2月份的簽到次數(shù)
BITCOUNT u:sign:1000:201902- 獲取2月份前28天的簽到數(shù)據(jù)
BITFIELD u:sign:1000:201902 get u28 0- 獲取2月份首次簽到的日期
BITPOS u:sign:1000:201902 1 # 返回的首次簽到的偏移量匆浙,加上1即為當月的某一天