Redis 使用 maxmemory 参数限制最大可用内存。限制内存的目的主要有:
1、用于缓存场景,当超出内存上限 maxmemory 时使用 LRU 等回收策略释放空间
2、防止所用的内存超过服务器物理内存,导致 OOM 后进程被系统杀死
maxmemory 限制的是 Redis 实际使用的内存量,也就是 used_memory 对应的内存。
实际消耗的内存可能会比 maxmemory 设置的大,要小心因为这部分内存导致 OOM。所以,如果你有 10GB 的物理内存,最好将 maxmemory 设置为 8 或者9G

Redis默认采用noeviction策略
volatile-lru: # 在设置了过期时间的所有键中,选取最近最少使用的数据删除 volatile-lfu: # 在设置了过期时间的所有键中,选取最近最不常用,也就是一定时期内被访问次数最少的数据删除 volatile-random: # 筛选出设置了过期时间的键值对,随机删除。 volatile-ttl: # 筛选出设置了过期时间的键值对,越早过期的越先被删除。 allkeys-lru: # 在所有键中,选取最近最少使用的数据删除 allkeys-lfu: # 在所有键中,选取最近最不常用,也就是一定时期内被访问次数最少的数据删除 allkeys-random: # 采用随机淘汰策略删除所有的键值对,这个策略不常用。 noeviction: # 不淘汰任何键值对,当内存满时,如果进行读操作,例如get命令,它将正常工作, # 如果做写操作,它将返回错误, # 也就是说,当Redis采用这个策略内存达到最大的时候,它就只能读不能写了
所以最后可以设置如下两个字段:
maxmemory 2097152000 maxmemory_policy allkeys-lru
0