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的頭部元素3、使用hash儲存物件例項不使用阻塞方式:var listarr = [『high』,』mid』,』low』],在業務中自主選擇遍歷哪個list
使用sorted set實現(缺點是沒有阻塞版的介面):
zadd score 230 zhangshan 250 lisi 240 wangwu
由低到高:zrange score 0 -1
由高到低:zrevrange score 0 -1
特點:乙個key可對應多個field,乙個field對應乙個value
(1)儲存物件
需要儲存使用者物件資訊,key為使用者id,value包含使用者姓名、年齡、住址等
hmset user:001 name zhangshan age 40 city beijing
其它可能的實現
物件序列化(2)訊息推送給指定使用者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)
服務端使用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,我們可以設定過期時間然後再進行快取更新操作,這個功能最為常見,我們幾乎所有的專案都有...