KeyDB 发布 5.1 版本——快来看看有哪些新功能!
我们很高兴地宣布 5.1 版本,它为 RELEASE_5 分支带来了新的稳定功能。如果您还没有跟上 KeyDB 的最新动态,这里有一些您可以期待看到的新内容!
- 您现在可以使用 EXPIREMEMBER 和 EXPIREMEMBERAT 为集合(set)中的单个成员设置过期时间
- EXPIRE 命令已更新,能够近乎实时地主动删除过期的键。这对大量使用 EXPIRE 功能的用户来说是一项重大改进
- EXPIRE 和 EXPIREMEMBER 现在比以前占用更少的内存
- OBJECT 现在有了一个新的子命令 LASTMODIFIED,允许您查看键自上次修改以来的时间(不包括读取操作)
- BITOP 现在提供 LSHIFT 和 RSHIFT 选项
- TTL 和 PTTL 已被修改,以支持子键(subkey)过期功能
- KeyDB 的基准测试显示,单节点性能是 Redis 的 5 倍
#
EXPIREEXPIRE 命令的链接KeyDB 现在使用一种确定性算法,以线性方式主动删除过期的键。这使得过期键的移除近乎实时。对于大量使用 EXPIRE 命令的用户来说,这可以显著节省内存使用。
以前使用的是一种随机算法,当过期键的数量开始增加时,主动移除过期标签的能力就会变差。以下面的例子为例,从一个包含 10,000 个带过期设置的键的数据库中移除 100 个过期键所需的时间。这个过程是非线性的,需要一段时间才能移除这些键。在过期键更多,且活跃过期键(TTL>0)与已过期键(TTL<=0)比例更高的数据集中,您可能会发现有些键等待数天才被删除。
在上述场景中,使用更新后的算法,KeyDB 的键在不到 1 秒的时间内就被移除了
另一个很棒的特性是,对 EXPIRE 功能的更新并不会增加 CPU 密集度,实际上比以前大约节省了 10% 的内存。
请查看这篇文章,深入了解所做的更改:此处
#
EXPIREMEMBEREXPIREMEMBER 命令的链接KeyDB 现在支持子键过期。这意味着您可以为集合中的单个成员设置过期时间。该命令是 EXPIREMEMBER,实际上比常规的 EXPIRE(在 EXPIRE 更新之前——与 Redis 相比)要少占用约 5% 的内存。
命令格式:EXPIREMEMBER key member delay [Unit: ms,s]
#
EXPIREMEMBERATEXPIREMEMBERAT 命令的链接这是一个新命令,与 EXPIREMEMBER 类似,但不是指定持续时间,而是指定子键过期的 Unix 时间戳。
命令格式:EXPIREMEMBERAT key member timestamp
#
链接到 TTL 和 PTTLTTL 和 PTTL 命令这些命令已更新以支持子键过期,因此您可以查询集合中成员上设置的过期剩余时间。
子键的命令格式:TTL key member
或 PTTL key member
#
OBJECT LASTMODIFIEDOBJECT LASTMODIFIED 命令的链接OBJECT 现在有了一个新的子命令 LASTMODIFIED,它返回自键上次被修改以来经过的时间(以秒为单位)。这与 IDLETIME 不同,因为它不受键的读取操作影响。
命令格式:OBJECT LASTMODIFIED key
#
链接到 BITOP LSHIFT 和 RSHIFTBITOP LSHIFT 和 BITOP RSHIFT 命令这是 BITOP 的一个新功能,可以按指定数量进行按位左移或右移。这是小端格式,并为处理位串等提供了新功能。
命令格式:BITOP LSHIFT key integer
或 BITOP RSHIFT key integer
#
保持联系如果您希望看到某个功能被添加到 KeyDB 中,请在 Github 上创建一个 issue,我们会认真考虑!
要了解 KeyDB 的最新动态,请订阅我们的邮件列表。我们会尽量让邮件内容包含项目信息,并避免发送垃圾邮件。
如果您有有趣的用例或加载场景想要分享,请通过 support@eqalpha.com 联系我们。