Redis 删除大key的方法
注意: 是删除大key,不是删除大量的key
系统中存在一些占用内存很大的键值对,例如 redis.set("content", value)
其中value这个变量占用很大的内存
如果直接删除这些大key,会导致线程阻塞、内存IO爆涨等问题,以下提供几种方案进行参考
选择业务低峰期进行删除
scran 分批删除
例如
redis-cli --scan --pattern '*' --count 10
扫描Redis
中所有键,返回前10个键的大小最大的键。
通过这样,可人工筛选出一批大Key,进行删除
再例如:
redis.hset("school", "class_1", "ucvouzox很大的内容")
redis.hset("school", "class_1", "ucvouzox很大的内容")
redis.hset("school", "class_2", "ucvouzox很大的内容")
redis.hset("school", "class_1", "ucvouzox很大的内容")
redis.hset("school", "class_53", "ucvouzox很大的内容")
redis.hset("school", "class_12", "ucvouzox很大的内容")
……
最终要删除哈希类型key=school
的值,可根据自己业务拆分,hdel
(非del
)命令进行逐步删除
异步删除 unlink
Redis的4.0版本引入的新命令,类似于 DEL 命令,都是用于删除键值对
主要特点是它是非阻塞
的,它会在后台异步地删除键值对,而不会阻塞服务器的正常操作