Redis常見使用場景

2021-08-07 12:21:34 字數 1963 閱讀 7417

1、使用string實現計數

特點:string的value一般是string,也可以是數字

內部實現:當涉及數字運算時,自動把string轉換為integer進行運算

應用場景:對客戶端傳送驗證碼次數進行限制

string借助incr、incrby、decr、decrby可以實現原子計數

2、 使用list實現佇列

特點:允許重複

內部實現:list實現為乙個雙向鍊錶,即可以支援反向查詢和遍歷,更方便操作,不過帶來了部分額外的記憶體開銷

(1)模擬生產者消費者模式

對於需要高併發寫入資料庫的場景

可以先將sql語句rpush放入佇列,後台執行緒定期從佇列中lpop,再將sql語句進行合併,最後以事務的方式一次執行,大大減輕資料庫的壓力

(2)事件提醒

blpop是lpop的阻塞版本,可以模擬【事件觸發】場景,當資料到來之前處於阻塞狀態,一旦資料到達立即處理,避免使用輪詢方式檢查資料

(3)訊息佇列、優先順序佇列(在高併發環境下,由於來不及同步處理,請求往往會發生堵塞):

使用阻塞方式:blpop high_list mid_list low_list,返回第乙個非空list的頭部元素

不使用阻塞方式:var listarr = [『high』,』mid』,』low』],在業務中自主選擇遍歷哪個list

使用sorted set實現(缺點是沒有阻塞版的介面):

zadd score 230 zhangshan 250 lisi 240 wangwu

由低到高:zrange score 0 -1

由高到低:zrevrange score 0 -1

3、使用hash儲存物件例項

特點:乙個key可對應多個field,乙個field對應乙個value

(1)儲存物件

需要儲存使用者物件資訊,key為使用者id,value包含使用者姓名、年齡、住址等

hmset user:001 name zhangshan age 40 city beijing

其它可能的實現

物件序列化

set user:001 「name:zhangshan,age:40,city:beijing」

jedis支援set(byte,byte)內部實現是序列化

缺點:序列化反序列化開銷

建立多個key

set user:001:name zhangshan

set user:001:age 40

set user:001:city beijing

缺點:大量物件會導致大量key

如何儲存list(object)

借助序列化發序列化,jedis支援set(byte,byte)

(2)訊息推送給指定使用者

服務端使用hash儲存不同使用者訊息,例如hmset message user01 msg01 user02 msg02 user03 msg03……..

客戶端啟動時主動拉取訊息,根據使用者id去查詢自己的訊息,例如hget message user01

4、set

特點:set不允許重複(自動去重),可以通過sismember判斷是否存在,不同的set可以求【交集】、【差集】、【並集】

內部實現:set內部實現是乙個 value永遠為null的hashmap

5、sortedset

特點:sortedset在set基礎上引入score,並可以在score基礎上進行一系列統計

內部實現:sorted set的內部使用hashmap和跳躍表(skiplist)來保證資料的儲存和有序,hashmap裡放的是成員到score的對映,而跳躍表裡存放的是所有的成員,排序依據是hashmap裡存的score,使用跳躍表的結構可以獲得比較高的查詢效率,並且在實現上比較簡單。

應用場景:實現優先順序佇列、需要排序場景等

Redis常見7種使用場景

1.簡單字串快取實戰 redis connect 127.0.0.1 6379 strcachekey test bihu set 應用 arrcachedata name job 男 age 30 redis set strcachekey,json encode arrcachedata red...

redis常見的幾種使用場景

排行榜top100 相關函式zadd lrange 使用方式使用zadd記錄每個value的分數值,字段即可實現排序,再進行lrange進行取前100,就實現了排行榜的效果 計數器 相關函式incr decr 使用方式設定乙個初始值為1的key,對其進行incr decr操作,進行計數的功能。佇列 ...

redis常見應用場景

redis應用場景總結redis平時我們用到的地方蠻多的,下面就了解的應用場景做個總結 1 熱點資料的快取由於redis訪問速度塊 支援的資料型別比較豐富,所以redis很適合用來儲存熱點資料,另外結合expire,我們可以設定過期時間然後再進行快取更新操作,這個功能最為常見,我們幾乎所有的專案都有...