redis怎么动态添加内存?
前言
在部署redis的时候,一般都会设置最大使用内存,来限制redis实例的最大使用内存,但是在启动后,发现内存不够用了,redis提供动态调整的参数。如果不设置maxmemory或者设置为0,64位系统不限制内存,32位系统最多使用3GB内存。
实际操作
修改最大使用内存:
config set maxmemory 2gb
查看最大使用内存
config get maxmemory
如果达到最大使用内存会怎么样呢?
如果设定了maxmemory,使用redis的时候,redis的内存使用量不能超过设定的值,一旦redis的内存使用量达到了最大值,redis将会尝试按照选择的eviction policy(回收策略)移除相应的keys。
如果redis不能根据回收策略移除keys,或者回收策略设置成noeviction,那么redis将对需要写操作的命令返回错误信息,如SET,LPUSH操作,对GET这样的只读操作会继续响应。
支持的回收策略:
# volatile-lru -> remove the key with an expire set using an LRU algorithm
# allkeys-lru -> remove any key according to the LRU algorithm
# volatile-random -> remove a random key with an expire set
# allkeys-random -> remove a random key, any key
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
# noeviction -> don't expire at all, just return an error on write operations