内存优化配置
maxmemory 1610612736
maxmemory-policy allkeys-lru
作用
这两个参数对Redis的内存管理非常重要,可以帮助Redis避免因为内存占用过多而导致性能下降或运行崩溃的问题。maxmemory参数可以控制Redis实例的内存上限,防止Redis使用过多内存而导致操作系统的OOM(Out-Of-Memory)杀掉Redis进程。maxmemory-policy参数则决定了当Redis占用内存达到上限时,应该优先释放哪些key来腾出内存空间,以避免过多的内存使用而导致Redis的性能下降或运行崩溃的问题。
例如,如果Redis的maxmemory为1GB,当内存使用达到1GB时,Redis将根据设置的maxmemory-policy参数来决定清理哪些key的内存数据。allkeys-lru表示Redis将优先清理长时间没有被使用的key,以释放内存空间。这种策略适用于那些写入频率比较低的应用场景,可以避免过多的数据占用内存而影响Redis的性能。
maxmemory表示Redis所占用的内存上限,该参数的单位是字节。例如:maxmemory 1610612736表示Redis最多占用1.6GB的内存。
maxmemory-policy表示当Redis内存占用达到上限时的清理策略。allkeys-lru表示优先淘汰最近最少使用的key(Least Recently Used,LRU算法的一种)来腾出内存空间。这个参数还有其他几种可选的策略,例如:volatile-lru,表示只对带过期时间的key进行LRU淘汰,noeviction表示当内存满了后,所有写入Redis的操作都会返回错误。
需要注意的是,当Redis实例使用的内存达到了maxmemory限制时,Redis会根据配置的maxmemory-policy参数来决定淘汰哪些key释放内存。如果采用了带有过期时间的key,同时maxmemory-policy参数设置为volatile-lru,那么Redis会优先淘汰过期时间较早的key。
关于Redis的过期时间,可以使用expire、pexpire等命令设置。在设置过期时间时,Redis会根据指定的过期时间和使用情况自动淘汰过期的key,以节省内存空间。