redis中maxmemory和淘汰策略

2021-09-12 08:04:37 字數 993 閱讀 7522

在redis中,允許使用者設定最大使用記憶體大小maxmemory(需要配合maxmemory-policy使用),設定為0表示不限制;當redis記憶體資料集快到達maxmemory時,redis會實行資料淘汰策略。redis提供6種資料淘汰策略:

volatile-lru:從已設定過期時間的記憶體資料集中挑選最近最少使用的資料 淘汰;

volatile-ttl: 從已設定過期時間的記憶體資料集中挑選即將過期的資料 淘汰;

volatile-random:從已設定過期時間的記憶體資料集中任意挑選資料 淘汰;

allkeys-lru:從記憶體資料集中挑選最近最少使用的資料 淘汰;

allkeys-random:從資料集中任意挑選資料 淘汰;

no-enviction(驅逐):禁止驅逐資料。(預設淘汰策略。當redis記憶體資料達到maxmemory,在該策略下,直接返回oom錯誤);

關於maxmemory設定,通過在redis.conf中maxmemory引數設定,或者通過命令config set動態修改

關於資料淘汰策略的設定,通過在redis.conf中的maxmemory-policy引數設定,或者通過命令config set動態修改

如127.0.0.1:6379>config get maxmemory

1) 「maxmemory"

2) 「0」

127.0.0.1:6379>config set maxmemory 100mb

ok127.0.0.1:6379>config get maxmemory

「maxmemory"

「104857600」

注意,在64bit系統下,maxmemory設定為0表示不限制redis記憶體使用,在32bit系統下,maxmemory不能超過3gb;

應用:如mysql裡有2000w條資料,redis只存20w條熱點資料,如何保證redis中的資料都是熱點資料?

這就能設定最大記憶體,再設定淘汰策略,設定volatile-lru,allkeys-lru等都可以;

Redis中的事務

flushall清除所有的鍵值 1 multi 開啟事務,事務塊中的多條語句會按照順序放入佇列中。multi incr counter1 incr counter2 incr counter3 ping get counter1 2 exec 執行事務塊中的命令 3 watch 監視乙個或者多個ke...

redis中的事務

redis支援簡單的事務 redis與 mysql事務的對比 mysql redis 開啟 start transaction muitl 語句 普通sql 普通命令 失敗 rollback 回滾 discard 取消 成功 commit exec 注 rollback與discard 的區別 如果...

Redis 中的事務

redis支援簡單的事務 redis與 mysql 事務的對比 mysql redis 開啟start transaction muitl 語句普通sql 普通命令 失敗rollback 回滾 discard 取消 成功commit exec 注 rollback 與discard 的區別如果已經成...