zset:預設ziplist儲存,在資料量達到一定數量下(配置檔案可定製),使用跳表skiplist實現
萬億級日訪問量下,redis在微博的9年優化歷程 ~~乾貨滿滿
**:首先介紹一下業務背景:總使用者量大概是 5億左右,月活 5kw,日活近 2kw 。服務端有1000多個 redis 例項,100+ 集群,每個例項的記憶體控制在 20g 以下。
典型場景:
kv 快取,分布式鎖,延時佇列,定時任務,頻率控制,服務發現,位圖,模糊計數,布隆過濾器
**訪問統計、分布式session、應用排行榜、社交關係圖
基本使用:用 redis 來快取使用者資訊、會話資訊、商品資訊等等
當資料量不斷增長時,就使用 codis 或者 redis-cluster 集群來擴容。
除此之外 redis 還提供了快取模式,set 指令不必設定過期時間,它也可以將這些鍵值對按照一定的策略進行淘汰。
開啟快取模式的指令是:config set maxmemory 20gb ,這樣當記憶體達到 20gb 時,redis 就會開始執行淘汰策略,給新來的鍵值對騰出空間。
這個策略 redis 也是提供了很多種,總結起來這個策略分為兩塊:劃定淘汰範圍,選擇淘汰演算法。
比如我們線上使用的策略是 allkeys-lru。這個 allkeys 表示對 redis 內部所有的 key 都有可能被淘汰,不管它有沒有帶過期時間,而volatile只淘汰帶過期時間的。
當這個範圍圈定之後,會從中選出若干個名額,怎麼選擇呢,這個就是淘汰演算法。
最常用的就是 lru 演算法,它有乙個弱點,那就是表面功夫做得好的人可以逃過優化。 redis 4.0 裡面引入了 lfu 演算法,要對平時的成績也進行考核,只做表面功夫就已經不夠用了,還要看你平時勤不勤快。
最後還一種極不常用的演算法 —— 隨機搖號演算法,這個演算法有可能會把 ceo 也給淘汰了,所以一般不會使用它。
給你乙個億的keys,redis如何統計?
ZooKeeper典型應用場景
zookeeper 是乙個開源的高可用的分布式資料管理與系統協調框架,基於對 paxos 演算法的實現,保證了分布式環境中資料的強一致性。發布與訂閱模型 發布者發布資料到 zk 節點上,供訂閱者動態獲取資料。在資料量很少,但是資料更新快的場景下 訊息中介軟體中的發布者和訂閱者的負載均衡,linked...
Redis應用場景
redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...
Redis應用場景
redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...