Redis Key操作命令全面解析

创始人
2025-01-12 06:53:41
0 次浏览
0 评论

Redis命令详解:Keys

Redis命令详解:keys

介绍完Redis连接相关的命令,我们重点介绍一下key相关的命令。
Redis作为一个key-value数据库,对于键操作是必不可少的。
接下来我们将主要操作相关的Redis命令一一分析。

DEL:最旧的可用版本是1.0.0。
用于删除指定的键值对。
如果指定的键不存在,则忽略它。
该命令的时间复杂度为O(N)。
对于字符串以外的数据类型,命令的时间复杂度为O(M),其中M是值中的元素数量。
在生产环境中,应避免一次性删除过多复杂数据类型的操作。

转储:最旧的可用版本是2.6.0。
用于将指定key中存储的值以Redis格式序列化,可以使用RESTORE命令对序列化后的值进行反序列化。
序列格式具有以下三个特点:不包含过期时间信息、使用PTTL命令获取生存时间、访问时间复杂度为O(1)、序列值的时间复杂度为O(N*M),N为分量值和元素个数,M为序列化较短字符串时元素的平均大小,时间复杂度可以认为是O(1)。

现有:最旧的可用版本是1.0.0。
用于判断key是否存在。
从3.0.3版本开始,支持多参数化,即同时判断多个key,并返回找到的key的个数。
判断单个key是否存在返回1或0,向后兼容。
注意,当参数中有重复命令时,返回结果不会进行去重。

到期:最旧的可用版本是1.0.0。
用于设置所选键的停留时间。
停留时间将被删除或替换为DEL、SET、GETSET和所有STORE命令。
修改密钥值而不修改生存期或保存到新密钥,密钥生存期保持不变。
当您使用RENAME重命名密钥时,将为新密钥设置原始密钥的生命周期。
使用PERSIST命令清除停留时间并使密钥永久化。
如果生存时间设置为非正数或者过期时间,则该key将被直接删除。
再次设置停留时间以更新按键的停留时间,这在应用中很常见。

关于时间精度,Redis2.1.3版本之前用生存时间修改key值时,2.4版本之后key会被彻底删除,过期时间依然可以达到1秒过期之内关键,2.6版本精确到1毫秒。
生存时间保存为Unix时间戳,这就要求计算机的时间可靠。
当将RDB文件上传到另一台机器时,时间间隙可能会导致key被删除或延长生存时间。

Redis的过期策略有两种:被动过期和主动过期。
被动过期会检查客户访问密钥时密钥的剩余时间,并且可能无法检测到长时间未访问的过期密钥。
Redis定期随机检查设置有生命周期的key,并在过期后及时清理。
每秒执行10次扫描。

已完成:最早可用的版本是1.2.0。
功能与EXPIRE相同,参数需要传递Unix时间戳。

键:最旧的可用版本是1.0.0。
返回匹配所有按键的命令,时间复杂度为O(N)。
官方文档中建议避免在生产环境中使用,尤其是不要使用KEYS*命令,以免导致生产环境长时间不可用。
建议使用SCAN或SET命令来查找密钥。

匹配策略介绍:?匹配一个字母,*匹配任意数量的字母,[ae]匹配a或e,^e不匹配e,a-c匹配a,b,c,特殊符号用\分隔。

迁移:最旧的可用版本是2.6.0。
通过原子操作将源实例密钥移动到目标实例并删除源实例密钥。
相当于执行DUMP+DEL操作对目标实例执行RESTORE操作。
此过程会阻止源实例和目标实例,直到传输完成。
3.2版本之后,支持同时发送多个密钥。

执行relay命令时,需要设置超时时间。
如果超时没有完成,则会抛出IOERR。
两个实例有两种可能的情况:指定的key在两个实例中都存在或者只有源实例存在,并且key不会丢失。
在版本3.0.6之后,可以使用KEYS参数并将源密钥参数设置为空字符串,同时发送多个密钥。
发送COPY参数后源实例的key并没有被删除,REPLACE参数替换目标实例已有的key。
这两个参数从3.0版本开始可用。

MOVE:最旧的可用版本是1.0.0。
将当前数据库密钥移动到选定的数据库。
如果目标数据库中已存在该密钥或当前数据库中不存在该密钥,则该命令将不执行任何操作。

对象:最旧的可用版本是2

redis如何count某字符开头的的key

统计Redis中以某个字母开头的key的数量;您可以将SCAN命令与符号结合使用。
具体步骤如下:

使用Redis客户端连接Redis服务器。

输入命令SCAN0MATCHprefix*COUNT10000;prefix是你要匹配的前缀,10000是一次扫描的最大键数。
0表示从Redis数据库中的第一个key开始扫描。
如果你需要找到所有的钥匙。
您可以将COUNT设置为一个较大的值,例如1000000。

在Redis中,第一个值是需要发送到下一个SCAN命令的游标,第二个值是代表所有匹配键的字符串。
第二个值的长度是以前一个字母开头的键的数量。

例如,如果要查找以user_开头的键的总数,可以运行以下命令:

SCAN0MATCHuser_*COUNT10000

Redis返回类似于以下结果的内容:

1)"5"

2)1)"user_1"

2)"user_2"

3)"user_3"

...

其中,第一个值5表示下一次扫描的起始位置,第二个值是包含所有以user_开头的键的字符串数组。
如果你想知道匹配键的数量,您只需要计算第二个值的长度。

因为SCAN命令扫描整个数据库的速度很慢;在大型Redis数据库中;执行该命令可能需要很长时间并且消耗大量资源当心。

热门文章
1
高效掌握:CMD命令轻松启动、关闭及登录... 如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...

2
MySQL分区删除技巧与8.0版本新特性... mysql删除分区在MySQL中,删除分区操作主要使用“可替代”的命令与“ dr...

3
Python代码实现:如何判断三角形的三... python三角形三条边长,判断能否构成三角形Python三角形的三个长边如下:...

4
深度解析:MySQL查询语句执行顺序及优... mysql查询语句执行顺序当这是由于执行SQL的过程时,了解其过程很重要。 ...

5
SQL教程:使用SUBSTRING和IN... sql取特定字符的前面几位字符selectsubstr('L-0FCLDRBCT...

6
MySQL日期差异计算方法:轻松获取日期... MySQL计算时间差两日期相减得月份mysql两时间相减得月MySQL计算时间之...

7
MySQL及SQL查询获取前10条数据方... MySql查询前10条数据sql语句是从MySQL获取前1 0个数据的SQL查询...

8
MySQL启动问题排查与解决指南 Mysql为什么启动不了如果要配置MySQL,则遇到无法启动的问题,可能是由于配...

9
DbVisualizer添加MySQL数... 如何在DbVisualizer中添加本地mysql数据库由于DbVisualiz...

10
SQL字段默认值设置全攻略:轻松实现自动... sql如何设置字段默认值设置SQL中某个字段的默认值;需要遵循几个步骤。首先您需...