一口氣說(shuō)出 Redis 16 個(gè)常見(jiàn)使用場(chǎng)景
來(lái)源丨Java后端
緩存 數(shù)據(jù)共享分布式 分布式鎖 全局ID 計(jì)數(shù)器 限流 位統(tǒng)計(jì) 購(gòu)物車 用戶消息時(shí)間線timeline 消息隊(duì)列 抽獎(jiǎng) 點(diǎn)贊、簽到、打卡 商品標(biāo)簽 商品篩選 用戶關(guān)注、推薦模型 排行榜
1、緩存
2、數(shù)據(jù)共享分布式
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
3、分布式鎖
public static boolean getLock(String key) {
Long flag = jedis.setnx(key, "1");
if (flag == 1) {
jedis.expire(key, 10);
}
return flag == 1;
}
public static void releaseLock(String key) {
jedis.del(key);
}
4、全局ID
5、計(jì)數(shù)器
6、限流
7、位統(tǒng)計(jì)
set k1 a
setbit k1 6 1
setbit k1 7 0
get k1
/* 6 7 代表的a的二進(jìn)制位的修改
a 對(duì)應(yīng)的ASCII碼是97,轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)是01100001
b 對(duì)應(yīng)的ASCII碼是98,轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)是01100010
因?yàn)閎it非常節(jié)省空間(1 MB=8388608 bit),可以用來(lái)做大數(shù)據(jù)量的統(tǒng)計(jì)。
*/
setbit onlineusers 01
setbit onlineusers 11
setbit onlineusers 20
BITOPANDdestkeykey[key...] ,對(duì)一個(gè)或多個(gè) key 求邏輯并,并將結(jié)果保存到 destkey 。
BITOPORdestkeykey[key...] ,對(duì)一個(gè)或多個(gè) key 求邏輯或,并將結(jié)果保存到 destkey 。
BITOPXORdestkeykey[key...] ,對(duì)一個(gè)或多個(gè) key 求邏輯異或,并將結(jié)果保存到 destkey 。
BITOPNOTdestkeykey ,對(duì)給定 key 求邏輯非,并將結(jié)果保存到 destkey 。
BITOP "AND" "7_days_both_online_users" "day_1_online_users" "day_2_online_users" ... "day_7_online_users"
8、購(gòu)物車

key:用戶id;field:商品id;value:商品數(shù)量。 +1:hincr。-1:hdecr。刪除:hdel。全選:hgetall。商品數(shù):hlen。
9、用戶消息時(shí)間線timeline
10、消息隊(duì)列
blpop:blpop key1 timeout 移除并獲取列表的第一個(gè)元素,如果列表沒(méi)有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。 brpop:brpop key1 timeout 移除并獲取列表的最后一個(gè)元素,如果列表沒(méi)有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。
隊(duì)列:先進(jìn)先除:rpush blpop,左頭右尾,右邊進(jìn)入隊(duì)列,左邊出隊(duì)列 棧:先進(jìn)后出:rpush brpop
11、抽獎(jiǎng)
spop myset
12、點(diǎn)贊、簽到、打卡

點(diǎn)贊了這條微博:sadd like:t1001 u3001 取消點(diǎn)贊:srem like:t1001 u3001 是否點(diǎn)贊:sismember like:t1001 u3001 點(diǎn)贊的所有用戶:smembers like:t1001 點(diǎn)贊數(shù):scard like:t1001
13、商品標(biāo)簽

sadd tags:i5001 畫(huà)面清晰細(xì)膩 sadd tags:i5001 真彩清晰顯示屏 sadd tags:i5001 流程至極
14、商品篩選
// 獲取差集
sdiff set1 set2
// 獲取交集(intersection )
sinter set1 set2
// 獲取并集
sunion set1 set2

sadd brand:apple iPhone11
sadd brand:ios iPhone11
sad screensize:6.0-6.24 iPhone11
sad screentype:lcd iPhone 11
sinter brand:apple brand:ios screensize:6.0-6.24 screentype:lcd
15、用戶關(guān)注、推薦模型
sadd 1:follow 2 sadd 2:fans 1 sadd 1:fans 2 sadd 2:follow 1
sinter 1:follow 2:fans
用戶1可能認(rèn)識(shí)的人(差集):sdiff 2:follow 1:follow 用戶2可能認(rèn)識(shí)的人:sdiff 1:follow 2:follow
16、排行榜
zincrby hotNews:20190926 1 n6001
zrevrange hotNews:20190926 0 15 withscores

地址:https://blog.csdn.net/weixin_43878826/article/details/119461093-End-
最近有一些小伙伴,讓我?guī)兔φ乙恍?nbsp;面試題 資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來(lái),可以說(shuō)是程序員面試必備!所有資料都整理到網(wǎng)盤(pán)了,歡迎下載!

面試題】即可獲取評(píng)論
圖片
表情
