在redis中,允許用戶設置最大使用內存大小maxmemory(需要配合maxmemory-policy使用),設置爲0表示不限制;當redis內存數據集快到達maxmemory時,redis會實行數據淘汰策略。Redis提供6種數據淘汰策略:
如127.0.0.1:6379>CONFIG GET maxmemory
1) 「maxmemory"
2) 「0」
127.0.0.1:6379>CONFIG SET maxmemory 100MB
OK
127.0.0.1:6379>CONFIG GET maxmemory
注意,在64bit系統下,maxmemory設置爲0表示不限制Redis內存使用,在32bit系統下,maxmemory不能超過3GB;
應用:
如mysql裏有2000w條數據,redis只存20w條熱點數據,如何保證redis中的數據都是熱點數據?
這就能設置最大內存,再設置淘汰策略,設置volatile-lru,allkeys-lru等都可以;
------------------------------------------------------------------------
redis讀取/重啓之後讀取報錯:(error) LOADING Redis is loading the dataset in memory
1.redis將之持久化的數據重新寫入,等待數據寫入完成以後即可正常訪問
2. AOF(append only file)持久化。appendonly no,默認不開啓。appendonly yes,開啓持久化。
3.修改配置文件 vi redis.conf
maxmemory 5GB
maxmemory-policy allkeys-lru
appendonly no
重啓redis,./redis_multi rewrite all --釋放redis存儲