设置最大缓存(内存)有两个好处,一是避免系统资源用尽而崩溃,而是缓存数据太大必然影响效率如内存管理。并且设置了最大缓存,当你要缓存的数据大于最大缓存时,并不会引起OOM,Redis会根据策略方式淘汰掉他认为不会是热点的数据。
设置最大缓存首先进入redis安装目录,运行redis-cli.exe 程序,输入 CONFIG GET * 命令获取所有可以设置的项目,找到“maxmemory”查看下方显示的数字是多少(为0表示无限制)。
使用CONFIG SET maxmemory 3gb 命令设置最大缓存为3gb。
内存大小转换:
1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 1024*1024 bytes
1g => 1000000000 bytes
1gb => 1024*1024*1024 bytes
当然设置了最大缓存后,需要指定maxmemory-policy 策略方式(默认为noeviction),使用CONFIG SET maxmemory-policy allkeys-lru 命令设置达到缓存最大值时回收最近最少使用(LRU)的键。
策略方式:
volatile-lru -> 回收最近最少使用(LRU)的键,但是只回收有设置过期的键,为新数据腾出空间;
allkeys-lru -> 回收最近最少使用(LRU)的键,为新数据腾出空间;
volatile-random -> 回收随机的键,但是只回收有设置过期的键,为新数据腾出空间;
allkeys-random -> 回收随机的键,为新数据腾出空间;
volatile-ttl -> 回收有设置过期的键,尝试先回收离TTL最短时间的键,为新数据腾出空间;
noeviction -> 禁止淘汰数据,当到达内存限制时返回错误。当客户端尝试执行命令时会导致更多内存占用(大多数写命令,除了DEL和一些例外)。