❶ Redis命令详解:Keys
Redis命令详解:Keys
介绍完Redis连接相关命令后,我们接下来将重点介绍与Key相关的命令。Redis作为一款key-value数据库,对Key的操作是不可或缺的。接下来,我们将逐一解析与Key操作相关的Redis命令。
DEL:最早可用版本为1.0.0。用于删除指定的键值对。若指定的key不存在,则忽略。命令时间复杂度为O(N)。对于除字符串外的其他数据类型,命令的时间复杂度为O(M),M为值的元素个数。在生产环境中,应避免一次性删除过多复杂数据类型的操作。
DUMP:最早可用版本为2.6.0。用于以Redis格式序列化指定键存储的值,可用RESTORE命令将序列化值反序列化。序列化格式有以下3个特点:不包含过期时间信息,使用PTTL命令获取存活时间;访问时间复杂度为O(1),序列化值时间复杂度为O(N*M),N为组成值的元素数量,M为元素平均大小;序列化较短字符串时,时间复杂度可看做O(1)。
EXISTS:最早可用版本为1.0.0。用于判断key是否存在。自3.0.3版本后,支持多参数,即一次性判断多个key,返回存在的key数量。单个key存在的判断返回1或0,向后兼容。注意,参数中有重复存在命令时,返回结果不进行去重。
EXPIRE:最早可用版本为1.0.0。用于为指定的key设置存活时间。存活时间会被DEL、SET、GETSET和所有STORE命令删除或覆盖。修改key值而不修改存活时间或保存到新key中,key的存活时间保持不变。使用RENAME重命名key时,原有key的存活时间会赋给新key。使用PERSIST命令清除存活时间,将key变为永久。如果设置存活时间非正数或过期时间,则key直接被删除。再次设置存活时间更新key的存活时间,在应用中常见。
关于时间精度,Redis2.1.3版本之前修改带有存活时间的key值时,会删除整个key;2.4版本后,过期时间在key过期一秒内仍可访问,2.6版本精确到1毫秒。存活时间保存为Unix时间戳,要求计算机时间可靠,加载RDB文件到另一台机器时,时间差距可能导致key被删除或存活时间延长。
Redis过期策略有两种:被动过期和主动过期。被动过期在客户端访问时检查key的存活时间,可能无法及时发现长时间未访问的过期key。Redis定期随机检查被设置过存活时间的key,过期后及时清理。每秒执行10次检查操作。
EXPIREAT:最早可用版本为1.2.0。作用与EXPIRE相同,参数需要传Unix时间戳。
KEYS:最早可用版本为1.0.0。返回匹配所有key的命令,时间复杂度为O(N)。在官方文档中建议避免在生产环境中使用,尤其是不要使用KEYS *命令,以免导致生产环境长时间不可用。推荐使用SCAN或sets命令查找key。
匹配策略介绍:?匹配单个字符,*匹配任意数量字符,[ae]匹配a或e,^e不匹配e,a-c匹配a、b、c,特殊符号使用隔开。
MIGRATE:最早可用版本为2.6.0。将源实例的key以原子操作传输到目标实例,删除源实例key。相当于执行DUMP+DEL操作在目标实例执行RESTORE操作。此操作会阻塞源实例和目标实例,直到传输完成。3.2版本后支持一次性传输多个key。
执行MIGRATE命令时需设置超时时间,超时未完成抛出IOERR。两个实例状态可能两种:均存在指定key或仅源实例存在,key不会丢失。3.0.6版本后支持一次传输多个key,使用KEYS参数,源key参数设置为空字符串。COPY参数传输后不删除源实例key,REPLACE参数替换目标实例已存在的key。这两个参数自3.0版本开始可用。
MOVE:最早可用版本为1.0.0。将当前数据库key移动到指定数据库。如果目标数据库已存在key或当前数据库不存在key,命令不做任何操作。
OBJECT:最早可用版本为2.2.3。用于查看Redis对象内部信息,调试时常用。具体用法如下:查看对象编码格式。
PERSIST:最早可用版本为2.2.0。删除指定key的过期时间,使之变为永久key。
PEXPIRE:最早可用版本为2.6.0。与EXPIRE作用相同,参数时间单位为毫秒。
PEXPIREAT:最早可用版本为2.6.0。与EXPIREAT作用相同,参数同样是毫秒。
PTTL:最早可用版本为2.6.0。返回指定key剩余存活时间的毫秒数。3.0版本后,key不存在返回-2,永久key返回-1。
RANDOMKEY:最早可用版本为1.0.0。从当前数据库返回一个随机key。
RENAME:最早可用版本为1.0.0。重命名key。若key不存在,返回错误。新key已存在时,覆盖原key(隐式执行DEL命令,操作延时较高)。3.2版本前,源key和目标key相同会报错。
RENAMENX:若新key不存在,则重命名key;新key已存在返回0;成功返回1。
RESTORE:最早可用版本为2.6.0。使用RESTORE key ttl serialized-value [REPLACE]命令将序列化值反序列化存储到key,ttl为0则key永久存在。3.0版本后,未使用REPLACE参数且key已存在时返回错误“Target key name is busy”。
SCAN:最早可用版本为2.8.0。使用SCAN cursor MATCH pattern COUNT count命令,返回小部分数据,不会阻塞Redis。基于游标操作,每次调用返回游标用于下一次迭代。游标返回0表示迭代结束。
每次返回数量不固定,可能为空。SCAN命令支持匹配。
测试存储10000个key:
返回结果表明,虽然设置count为1000,但每次返回的值只有10个左右。
SORT:最早可用版本为1.0.0。用于返回或保存list、set和sorted set的键,默认对数字或排序key排序,视为双精度浮点数。按字典顺序排序使用ALPHA参数;按外部字段排序使用BY参数。
TOUCH:最早可用版本为3.2.1。修改key最后访问时间,key不存在忽略。
TTL:最早可用版本为1.0.0。返回指定key的剩余存活时间,单位为秒。2.6版本及以前,key不存在或永久key返回-1。从2.8版本开始,key不存在返回-2,永久key返回-1。
TYPE:最早可用版本为1.0.0。返回key存储值的类型。
UNLINK:最早可用版本为4.0.0。删除key,时间复杂度O(1),先从keyspace中删除key,指定key已删除,内存未释放。在另一个线程中执行内存释放操作,时间复杂度O(N)。
WAIT:最早可用版本为3.0.0。阻塞客户端,直至所有写操作完成并保存指定数量副本。总会返回副本数量或超时。
❷ Redis启动、停止、Redis命令行的操作
1.redis命令
1 redis执行了make install后,redis的课执行文件都会自动复制到 /usr/local/bin 目录
2 redis-server redis服务器
3 redis-cli redis命令行客户端
4 redis-benchmark redis性能测试工具
5 redis-check-aof aof文件修复工具6redis-check-mp rdb文件检查工具
2.停止 redis 命令
# 停止Redis命令
redis-cli shutdown
3.启动 redis 命令
(1). # 启动 redis-server
redis-server
(2). # 带配置文件启动
(3). # 带配置文件启动 且指定某几个配置 配置名称前加 --
会覆盖配置文件里面的值
回到顶部
4.redis命令行客户端
(1).发送命令
注意:框里面的是 6379 里面没有登录成功,下面改成了 1123 成功了,因为刚才上面改了端口
(2).命令返回值
状态回复:pong表示可用
错误回复:不知道这个什么命令
整数回复:多种命令会回复整数
下面的字符串回复,都是赋值了才有。
字符串回复:
多行字符串回复:
❸ redis常用命令是什么
1、连接操作相关命令:
type(key):返值类型。
使用的注意事项
1、 Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。
2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3、虚拟内存–Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘 。
4、过期策略–memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10 。