首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Redis 高效删除key

一、大key删除问题 大key(bigkey)是指 key 的 value 是个庞然大物,例如 Hashes, Sorted Sets, Lists, Sets,日积月累之后,会变得非常大,可能几十上百...渐进式删除 思路: 分批删除,通过 scan 命令遍历大key,每次取得少部分元素,对其删除,然后再获取和删除下一批元素。...示例: 删除大 Hashes 步骤: (1)key改名,相当于逻辑上把这个key删除了,任何redis命令都访问不到这个key了 (2)小步多批次的删除 伪代码: # key改名 newkey = "gc...三、总结 使用 del 删除key可能会造成长时间阻塞,甚至崩溃。...可以使用渐进式删除,对 Hashes, Sorted Sets, Lists, Sets 分别处理,思路相同,先逻辑删除,对key改名,使客户端无法使用原key,然后使用批量小步删除

7K20

Redis过期key删除策略

key的过期时间都保存在过期字典中,如果一个键过期了,那么redis什么时候会被删除呢?...删除策略 (1)惰性删除key进行操作时才进行过期检查,对CPU最为友好,因为只有在不得不做的适合才进行操作,并且只涉及当前的目标key,与其他key无关,不浪费CPU资源 同样也有缺点,它对内存是最不友好的...,然后再进行当前命令的操作 (2)定期删除 每隔一段时间对数据库执行一次过期key检查,并通过对删除操作的执行时间和频率进行限制,来尽量减少对CPU的占用时间 定期删除有效降低了对内存的浪费,比较平衡的兼顾了...(3)AOF重写 和RDB方式的处理过程一样,会先检查key是否过期,过滤掉过期的key 主从复制过程对过期key的处理 (1)master中按照正常的删除策略执行 (2)slave的过期key删除由主服务器控制...: master执行过期key删除操作后,显式向slave发送删除命令,slave在收到删除命令之前,对过期key不做删除,如果收到客户端的命令请求,正常执行命令,收到删除命令后才进行删除

1.5K70

redis过期key删除策略

前言 在使用redis的过程中,不免会产生过期的key,而这些key过期后并不会实时地马上被删除,当这些key数量累积越来越多,就会占用很多内存,因此在redis底层同时使用了三种策略来删除这些key。...第一种策略:被动删除 当读/写一个key时,redis首先会检查这个key是否存在,如果存在且已过期,则直接删除这个key并返回nil给客户端。...清理过程如下: 遍历所有的db 从db中设置了过期时间的key的集合中随机检查20个key 删除检查中发现的所有过期key 如果检查结果中25%以上的key已过期,则继续重复执行步骤2-3,否则继续遍历下一个...关于big key的清理 在删除元素数量很多的集合(set/hash/list/sortedSet)时,无论是使用DEL命令删除还是redis为了释放内存空间而进行的删除,在删除这些big key的时候...使用lazy free删除big key时,和一个O(1)指令的耗时一样,亚毫秒级返回,然后把真正删除key的耗时动作交由bio后台子线程执行。

1.1K30

js Object.defineProperty()详解

数据属性有 4个特性描述它们的行为: Configurable:表示属性是否可以通过 delete 删除并重新定义,是否可以修改它的特性,以及是否可以把它改为访问器属性。...访问器属性有 4 个特性描述它们的行: Configurable:表示属性是否可以通过 delete 删除并重新定义,是否可以修改它的特性,以及是否可以把它改为数据属性。...false, // configurable 设置为 false,意味着这个属性不能从对象上删除 value: 25 // 设置age的值,不设置的话默认为undefined 后续不再演示value...}); console.log(person.age); // 25 delete person.age; // 因为configurable设置为false,所以无法删除该属性 console.log..." }); console.log(person.name); // 小明 value属性将值修改 delete person.name; // 因为configurable设置为false,所以无法删除该属性

2.3K20
领券