1. 用過Redis嗎,它使用在哪些地方(使用場景)?
Redis是一種記憶體型資料庫,用作資料庫,快取和訊息代理,資料結構簡單,讀寫速度快(毫秒級),原子操作,
適用于: 資料高并發讀寫、海量資料讀寫、對擴展性要求高的資料 的場景,
解決應用服務器的CPU和記憶體壓力;
減少IO的讀操作,減輕IO的壓力;
關系型資料庫的擴展性不強,難以改變表結構,
常見應用場景:
-
快取: 熱點資料(讀多寫少),減輕資料庫壓力,
-
資料共享: 分布式會話session
-
排行榜: 誰得分高誰排名往上,命令:ZADD(有續集,sorted set)
-
限時業務: 秒殺 存盤登錄者用戶資訊 存盤短信驗證碼
-
分布式鎖: 單獨的服務,原子性(單執行緒)
參考 java分布式鎖終極解決方案之 redisson -
最新串列
List結構,LPUSH可以在串列頭部插入一個內容ID作為關鍵字,LTRIM可用來限制串列的數量,這樣串列永遠為N個ID,無需查詢最新的串列,直接根據ID去到對應的內容頁即可,Redis查詢不到key,再MySQL查詢 -
佇列(訊息佇列)
訊息佇列是大型網站必用中間件,主要用于業務解耦、流量削峰及異步處理實時性低的業務,Redis提供了發布/訂閱及阻塞佇列功能,能實作一個簡單的訊息佇列系統,如果對于資料一致性要求高的話還是用RocketMQ等專業系統,由于redis把資料添加到佇列是回傳添加元素在佇列的第幾位,所以可以做判斷用戶是第幾個訪問這種業務;佇列不僅可以把并發請求變成串行,并且還可以做佇列或者堆疊使用,
-
計數器: 統計點擊數等 int型別,incrby(incr)命令,利用原子性(單執行緒,可以避免并發問題),性能好100%毫秒級
瀏覽量(電商)、點贊數、收藏數、播放量、簽到打卡、 -
限流: int型別,incrby(incr)命令
以訪問者的ip和其他資訊作為key,訪問一次增加一次計數,超過次數則回傳false -
時間軸(Timeline): 與最新串列場景類似
-
位統計(大資料處理): String型別的bitcount(1.6.6的bitmap資料結構介紹)
字符是以8位二進制存盤的
set k1 a
setbit k1 6 1
setbit k1 7 0
get k1
/**
6 7 代表的a的二進制位的修改
a 對應的ASCII碼是97,轉換為二進制資料是01100001
b 對應的ASCII碼是98,轉換為二進制資料是01100010
因為bit非常節省空間(1 MB=8388608 bit),可以用來做大資料量的統計,
*/
參考
使用Redis的bitmaps統計用戶留存率、活躍用戶
用戶榷訓月活怎么統計 - Redis HyperLogLog 詳解
其他場景參考:
redis安裝及應用場景
Redis的8大應用場景
Redis 16 個常見使用場景
更多面試題
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/509583.html
標籤:其他
上一篇:密碼學奇妙之旅、02 混合加密系統、AES、RSA標準、Golang代碼
下一篇:執行緒池底層原理詳解與原始碼分析
