在使用Redis时,在分配内存时通常会遇到两个很重要的问题,那就是如何给当前Redis分配最大的内存?如何进行内存溢出的控制手段。
今天就来学习一下这两个问题如何解决吧。
如何给当前Redis分配最大的内存
当我们想要根据目前实际情况来分配最大的内存时,就需要先获取当前的最大内存,以此来做个比较,然后再进行配置一个新的最大内存,这才合理。
如何获取当前最大内存?
config get maxmemory;
,这个命令,可以获取到当前的最大内存。
如何设置最大内存?
config set maxmemory 1GB;
,通过此命令,可以设置Redis的最大内存。
如何进行内存溢出的控制手段?
当Redis所占用的内存,超出设置的最大内存时,我们该当如何处理呢,这个情况Redis也提供了相应的内存溢出策略。来看一下吧。
Redis内存溢出策略?
- noeviction(默认策略):拒绝所有写入操作并返回客户端以错误信息(error),报错信息如下:
OOM command not allowed when used memory
,此项策略只响应读操作。一般不推荐使用,太影响用户体验。
- volatile-lru:根据 LRU 算法删除设置了超时属性(expire)的键,直到腾出足够空间为止。如果当前Redis中并没有可删除的键对象,则不再执行该策略,回退到 noeviction 策略。推荐使用,此种策略在各方面比较友好,但是前提需要你对部分键设置了超时时间。
- allkeys-lru:根据 LRU 算法针对Redis中的键进行删除,不管Redis数据有没有设置超时属性,一律按照LRU逻辑清理,直到腾出足够空间为止。推荐使用
- allkeys-random:随机删除所有键,直到腾出足够空间为止。较推荐使用
- volatile-random:随机删除过期键,直到腾出足够空间为止。较推荐使用
- volatile-tth:根据键值对象的 ttl 属性,删除最近将要过期数据。如果没有,回退到 noeviction 策略。不太推荐使用