mysql裡有2000w資料,redis中只存20w的資料,如何保證redis中的資料都是熱點資料?
redis 會根據自身資料淘汰策略,載入熱資料到記憶體。
所以,計算一下 20w 資料大約占用的記憶體,然後設定一下 redis 記憶體限制即可。
比如使用者資料。資料庫有2000w條。
活躍使用者:
redis sortset裡放兩天內(為方便取一天內活躍使用者)登入過的使用者,登入一次zadd一次,如set已存在則覆蓋其分數(登入時間)。
鍵:login:users,值:分數 時間戳、value userid。設定乙個週期任務,比如每天03:00:00點刪除sort set中前一天3點前的資料(保證set不無序增長、留近一天內活躍使用者)。
取時,拿到當前時間戳(int 10位),再減1天就可按分數範圍取過去24h活躍使用者。
即redis的快取每命中一次,就給命中的快取增加一定ttl(過期時間)(根據具體情況來設定, 比如10分鐘).
一段時間後, 熱資料的ttl都會較大, 不會自動失效, 而冷資料基本上過了設定的ttl就馬上失效了。
redis 提供 6種資料淘汰策略:
(1)volatile-lru:從已設定過期時間的資料集(server.db[i].expires)中挑選最近最少使用的資料淘汰;
(2)volatile-ttl:從已設定過期時間的資料集(server.db[i].expires)中挑選將要過期的資料淘汰;
(3)volatile-random:從已設定過期時間的資料集(server.db[i].expires)中任意選擇資料淘汰;
(4)allkeys-lru:從資料集(server.db[i].dict)中挑選最近最少使用的資料淘汰;
(5)allkeys-random:從資料集(server.db[i].dict)中任意選擇資料淘汰;
(6)no-enviction(驅逐):禁止驅逐資料。
redis如何保證資料都是熱點資料
背景 眾所周知,redis是純記憶體的操作。所以速度極快。然而記憶體的大小是有限的。如 mysql中有2000w的資料,redis中只存20w的資料,那麼如何保證redis中的資料都是熱點資料呢?答案 redis記憶體資料集達到一定大小的時候,就會實行資料淘汰策略,記憶體的淘汰機制的初衷是為了更好地...
如何保證redis中都是熱點資料
redis 記憶體資料集大小上公升到一定大小的時候,就會施行資料淘汰策略。redis 提供 6種資料淘汰策略 volatile lru 從已設定過期時間的資料集 server.db i expires 中挑選最近最少使用的資料淘汰 volatile ttl 從已設定過期時間的資料集 server.d...
如何保證Redis中的資料都是熱點資料
redis 提供 6 種資料淘汰策略 1.volatile lru 從已設定過期時間的資料集 server.db i expires 中挑選最近最少使用的資料淘汰 常用 2.volatile ttl 從已設定過期時間的資料集 server.db i expires 中挑選將要過期的資料淘汰 3.vo...