Redis 16大應(yīng)用場(chǎng)景

1埠胖、緩存

String類型
例如:熱點(diǎn)數(shù)據(jù)緩存(例如報(bào)表、明星出軌)格仲,對(duì)象緩存押袍、全頁(yè)緩存、可以提升熱點(diǎn)數(shù)據(jù)的訪問(wèn)數(shù)據(jù)凯肋。

2、數(shù)據(jù)共享分布式

String 類型汽馋,因?yàn)?Redis 是分布式的獨(dú)立服務(wù)侮东,可以在多個(gè)應(yīng)用之間共享

例如:分布式Session

<dependency> 
 <groupId>org.springframework.session</groupId> 
 <artifactId>spring-session-data-redis</artifactId> 
</dependency>

3、分布式鎖

String 類型setnx方法豹芯,只有不存在時(shí)才能添加成功悄雅,返回true

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

int類型铁蹈,incrby宽闲,利用原子性

incrby userid 1000

分庫(kù)分表的場(chǎng)景,一次性拿一段握牧。

5容诬、計(jì)數(shù)器

int類型,incr方法

例如:文章的閱讀量沿腰、微博點(diǎn)贊數(shù)览徒、允許一定的延遲,先寫(xiě)入Redis再定時(shí)同步到數(shù)據(jù)庫(kù)

6颂龙、限流

int類型习蓬,incr方法

以訪問(wèn)者的ip和其他信息作為key,訪問(wèn)一次增加一次計(jì)數(shù)措嵌,超過(guò)次數(shù)則返回false

7躲叼、位統(tǒng)計(jì)

String類型的bitcount(1.6.6的bitmap數(shù)據(jù)結(jié)構(gòu)介紹)

字符是以8位二進(jìn)制存儲(chǔ)的

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ì)。
*/

例如:在線用戶統(tǒng)計(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 滔驶。

計(jì)算出7天都在線的用戶

BITOP "AND" "7_days_both_online_users" "day_1_online_users" "day_2_online_users" ...  "day_7_online_users"

8遇革、購(gòu)物車

String 或hash。所有String可以做的hash都可以做

key:用戶id揭糕;field:商品id萝快;value:商品數(shù)量。
+1:hincr著角。-1:hdecr揪漩。刪除:hdel。全選:hgetall吏口。商品數(shù):hlen奄容。

9、用戶消息時(shí)間線timeline

list产徊,雙向鏈表昂勒,直接作為timeline就好了。插入有序

10囚痴、消息隊(duì)列

List提供了兩個(gè)阻塞的彈出操作:blpop/brpop叁怪,可以設(shè)置超時(shí)時(shí)間

  • blpop:blpop key1 timeout 移除并獲取列表的第一個(gè)元素,如果列表沒(méi)有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止深滚。
  • brpop:brpop key1 timeout 移除并獲取列表的最后一個(gè)元素奕谭,如果列表沒(méi)有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。

上面的操作。其實(shí)就是java的阻塞隊(duì)列。學(xué)習(xí)的東西越多展鸡。學(xué)習(xí)成本越低

  • 隊(duì)列:先進(jìn)先除:rpush blpop鸽素,左頭右尾衩婚,右邊進(jìn)入隊(duì)列,左邊出隊(duì)列
  • 棧:先進(jìn)后出:rpush brpop

11靖榕、抽獎(jiǎng)

自帶一個(gè)隨機(jī)獲得值

spop myset

12欧聘、點(diǎn)贊根吁、簽到员淫、打卡

假如上面的微博ID是t1001,用戶ID是u3001

用 like:t1001 來(lái)維護(hù) t1001 這條微博的所有點(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)簽

老規(guī)矩介返,用 tags:i5001 來(lái)維護(hù)商品所有的標(biāo)簽。另外沃斤,Redis 系列面試題和答案全部整理好了圣蝎,微信搜索Java技術(shù)棧,在后臺(tái)發(fā)送:面試衡瓶,可以在線閱讀徘公。

  • sadd tags:i5001 畫(huà)面清晰細(xì)膩
  • sadd tags:i5001 真彩清晰顯示屏
  • sadd tags:i5001 流程至極

14、商品篩選

// 獲取差集
sdiff set1 set2
// 獲取交集(intersection )
sinter set1 set2
// 獲取并集
sunion set1 set2

假如:iPhone11 上市了

sadd brand:apple iPhone11sadd brand:ios iPhone11sad screensize:6.0-6.24 iPhone11sad screentype:lcd iPhone 11

賽選商品哮针,蘋(píng)果的关面、ios的、屏幕在6.0-6.24之間的十厢,屏幕材質(zhì)是LCD屏幕

sinter brand:apple brand:ios screensize:6.0-6.24 screentype:lcd

15缭裆、用戶關(guān)注、推薦模型

follow 關(guān)注 fans 粉絲

相互關(guān)注:

sadd 1:follow 2
sadd 2:fans 1
sadd 1:fans 2
sadd 2:follow 1

我關(guān)注的人也關(guān)注了他(取交集):

sinter 1:follow 2:fans

可能認(rèn)識(shí)的人:

用戶1可能認(rèn)識(shí)的人(差集):sdiff 2:follow 1:follow
用戶2可能認(rèn)識(shí)的人:sdiff 1:follow 2:follow

16寿烟、排行榜

id 為6001 的新聞點(diǎn)擊數(shù)加1:zincrby hotNews:20190926 1 n6001

另外,關(guān)注公眾號(hào)Java技術(shù)棧辛燥,在后臺(tái)回復(fù):面試筛武,可以獲取我整理的 Redis 系列面試題和答案,非常齊全挎塌。

獲取今天點(diǎn)擊最多的15條:

zrevrange hotNews:20190926 0 15 withscores
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末徘六,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子榴都,更是在濱河造成了極大的恐慌待锈,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘴高,死亡現(xiàn)場(chǎng)離奇詭異竿音,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拴驮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)春瞬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人套啤,你說(shuō)我怎么就攤上這事宽气。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵萄涯,是天一觀的道長(zhǎng)绪氛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)涝影,這世上最難降的妖魔是什么枣察? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮袄琳,結(jié)果婚禮上询件,老公的妹妹穿的比我還像新娘。我一直安慰自己唆樊,他們只是感情好宛琅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著逗旁,像睡著了一般嘿辟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上片效,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天红伦,我揣著相機(jī)與錄音,去河邊找鬼淀衣。 笑死昙读,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膨桥。 我是一名探鬼主播蛮浑,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼只嚣!你這毒婦竟也來(lái)了沮稚?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤册舞,失蹤者是張志新(化名)和其女友劉穎蕴掏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體调鲸,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盛杰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了线得。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饶唤。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贯钩,靈堂內(nèi)的尸體忽然破棺而出募狂,到底是詐尸還是另有隱情办素,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布祸穷,位于F島的核電站性穿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏雷滚。R本人自食惡果不足惜需曾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祈远。 院中可真熱鬧呆万,春花似錦、人聲如沸车份。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扫沼。三九已至出爹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缎除,已是汗流浹背严就。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留器罐,地道東北人梢为。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像轰坊,于是被迫代替她去往敵國(guó)和親抖誉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容