Redis 生产问题:内存满了怎么解决?
Redis 的内存使用受最大内存阈值 maxmemory 参数限制。这个阈值是通过redis.conf的maxmemory参数来 定义的。64 位操作系统下,maxmemory 默认为 0 ,表示不限制内存大小。32 位操作系统下,默认的最大内存值是 3GB。
你可以使用命令 config get maxmemory 来查看 maxmemory的值,使用 info memory 命令查看 Redis 内存相关的信息。
> config get maxmemory
maxmemory
0
> info memory
used_memory:104857600
maxmemory:0
...
如果要修改最大内存阈值的话,一种方式是修改 redis.conf 中对应配置(找到 maxmemory 参数),还有一种方式是使用 config set 命令:
config set maxmemory 2147483648 # 设置为 2GB(单位为字节)
Redis 的内存淘汰策略只有在运行内存达到了配置的最大内存阈值时才会触发。
Redis 提供了 6 种内存淘汰策略:
- volatile-lru(least recently used):从已设置过期时间的数据集(
server.db[i].expires)中挑选最近最少使用的数据淘汰。 - volatile-ttl:从已设置过期时间的数据集(
server.db[i].expires)中挑选将要过期的数据淘汰。 - volatile-random:从已设置过期时间的数据集(
server.db[i].expires