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
Python代码实现:如何判断三角形的三... python三角形三条边长,判断能否构成三角形Python三角形的三个长边如下:...

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

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

4
MySQL查询加速秘籍:PolarDB ... mysql中in大量数据导致查询速度慢怎么优化?在MySQL中处理大量数据时,查...

5
SQL2000数据库备份压缩技巧:优化空... 怎么将SQL2000中的较大的备份数据库压缩变小更改数据库属性-选项-恢复模型很...

6
SQL字符串处理技巧:单引号使用与转义标... SQL语句中,字符串类型的值均使用什么符号标明?单引号如果字符串内有单引号,请小...

7
Windows环境下Redis安装指南与... redis安装windowsredis基本简介与安装安装Redis首先需要获取安...

8
深度解析:Redis性能优势与局限性,助... redis有哪些优缺点?Redis的全称是RemoteDictionary.Se...

9
深入解析:MySQL数据库的特性与应用 mysql是什么MySQL是一个关系数据库管理系统。MySQL是一个开源关系数据...

10
高效搭建与连接SQL Server 20... 如何建sqlserver数据库1.安装sqlserver2000,创建自己的数据...