redis 删除key中某一元素_Redis的键(key)命令

本文详细介绍了Redis中管理Key的各种命令,包括删除、序列化与反序列化、设置与查看过期时间、迁移和移动Key、检查存在性、查找Key、类型检查等操作,帮助理解Redis如何高效地操作Key。
摘要由CSDN通过智能技术生成

redis是Key-Value数据库,redis中所有的数据都是保存为键值对的形式,常见的redis的key命令有:

del key [key1 key2...]:删除指定的一个或多个key,不存在的key会被忽略,返回被删除key的数量

dump key:序列化指定的key并返回序列化之后的值(key不存在返回nil)

序列化生成的值有以下几个特点:

带有64位的校验和,用于检测错误,在进行反序列化之前会先检查校验和。

值的编码格式和RDB文件保持一致。

RDB版本会被编码在序列化值当中,如果因为Redis的版本不同造成RDB格式不兼容,那么Redis会拒绝对这个值进行反序列化操作。

序列化的值不包括任何生存时间信息。

restore key pttl serialized-value:反序列化给定的序列化值,并将它和给定的key关联。

参数ttl以毫秒为单位为key设置过期时间,为0则表示不设置过期时间

如果反序列化成功那么返回 OK ,否则返回一个错误

exists key:检查给定key是否存在,若存在则返回1,否则返回0

设置、删除和查看key的过期时间:

expire key seconds:以秒为单位设置过期时间,设置成功返回1,否则返回0

expireat key timestamp:以UNIX时间戳(精确到秒)设置过期时间,设置成功返回1,否则返回0

pexpire key milliseconds:以毫秒为单位设置过期时间,设置成功返回1,否则返回0

pexpireat key milliseconds-timestamp:以UNIX时间戳(精确到毫秒)设置过期时间,设置成功返回1,否则返回0

persist key:移除指定key的过期时间,移除成功返回1,否则返回0

ttl key:以秒为单位返回key的剩余过期时间,key不存在返回-2,key没有设置过期时间返回-1,否则正常

pttl key:以毫秒为单位返回key的剩余过期时间,key不存在返回-2,key没有设置过期时间返回-1,否则正常返回

keys pattern:查找符合pattern模式的所有的key并返回所有查找到的key列表

migrate host port key destination-db timeout [copy] [replace]:

将key传送到目标服务器的指定数据库,一旦传送成功,当前实例上的key会被删除。

timeout超时时间单位为毫秒

copy:不删除当前实例上的key

replace:覆盖替换目标服务器上已存在key

传送成功返回OK,否则返回相应的错误

move key db:将当前数据库的指定key移动到指定的数据库db中,如目标数据库中已存在相同的key,则不进行移动操作,移动成功返回1 ,失败则返回0

dbsize:返回当前数据库中key的数量

flushdb:清空当前数据库中的所有key,此命令从不失败,总是返回OK

flushall:清空整个Redis服务器的数据(删除所有数据库的所有key),此命令从不失败,总是返回OK

object command key:从内部察看给定key的Redis对象,通常用在除错或者了解为了节省空间而对key使用特殊编码的情况。

command有三个可能的值refcount、encoding、idletime

refcount返回给定key引用所储存的值的次数

encoding返回给定key所储存的值所使用的内部编码

idletime返回给定key自储存以来的空转(没有被读取也没有被写入)时间,以秒为单位

redis的内部编码:

字符串被编码为raw(长的数字也被编码为raw)

小的数字被编码为int

列表被编码为ziplist(较小的列表)或linkedlist

集合被编码为intset(只储存数字的小集合)或者hashtable

哈希表可以编码为zipmap(小哈希表)或者hashtable

有序集合可以被编码为ziplist(小的有序集合)或者skiplist格式

randomkey:从当前数据库中随机返回一个key,数据库为空时返回nil

rename oldkey newkey:将oldkey改名为newkey,当newkey已存在将覆盖旧值,改名成功返回OK,当新旧key相同或oldkey不存在返回一个错误

renamenx oldkey newkey:仅当newkey不存在时,将oldkey改名为newkey,修改成功返回1,newkey已存在返回0,oldkey不存在返回一个错误

type key:返回key所储存的值的类型,可能的返回值none(key不存在)、string(字符串)、list(列表)、set(集合)、zset(有序集)、hash(哈希表)

sort key [by pattern] [limit offset count] [get pattern [get pattern ...]] [asc | desc] [alpha] [store save_key]

返回或保存给定列表、集合、有序集合中经过排序的元素。排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。

by pattern:根据指定的模式获取某个其他的key并根据这些key进行排序,如果指定的模式没有匹配的key则跳过排序操作,直接返回原始结果

get pattern:根据排序的结果获取符合指定模式的key的值,当pattern为井号(#)表示获取被排序键的值

哈希表也可以作为by或get的参数,用key->name的格式来获取哈希表中的name的值,key和name中都可以使用通配符

limit:对排序之后的返回元素的数量进行限制offset表示要跳过显示的元素数量,count指定一共返回多少个元素

asc:从小到大排序(默认)

desc:从大到小排序

alpha:以字符串为对比对象进行排序

store save_key:将排序结果保存到save_key键上,如果被指定的save_key已存在,那么原有的值将被覆盖。

不使用store参数返回列表形式的排序结果,使用store参数返回排序结果的元素数量

增量式迭代(遍历)命令:

scan用于迭代当前数据库中的所有键

sscan用于迭代集合键中的元素

hscan用于迭代哈希键中的键值对

zscan用于迭代有序集合中的元素(包括元素成员和元素分值)

上面四个增量式迭代命令的工作方式都非常相似,参数的也基本相同,唯一不同的是:sscan、hscan、zscan第一个参数必须是一个键,scan命令则不需要(scan迭代的是当前数据库中的所有键)

下面讲一下scan的使用,另外三个用法基本相同:

scan cursor:增量式迭代(遍历)当前数据库中的所有键

游标参数被设置为0时,服务器将开始一次新的迭代,而当返回值第一个元素为0时,表示迭代已结束

scan并不保证每次都返回固定数量的元素,返回的元素数量甚至可能为0,但只要命令返回的游标不是0,迭代就没有结束

迭代的所有状态都保存在游标里面,服务器无须为迭代保存任何状态

返回一个包含两个元素的数组,第一个元素是用于进行下一次迭代的新游标, 而第二个元素是包含了所有被迭代的元素组成的数组。

count num:告知迭代命令在此次迭代中应该从数据集里返回多少元素,默认值为10, count选项只是一种提示(hint),并不保证每次都返回该选项指定数量的元素,但是在大多数情况下,这种提示都是有效的。

match pattern:只返回和给定模式(pattern)相匹配的元素

因为scan命令仅仅使用游标来记录迭代状态, 所以这些命令带有以下缺点:

同一个元素可能会被返回多次。

如果一个元素是在迭代过程中被添加到数据集的,又或者是在迭代过程中从数据集中被删除的,那么这个元素是不确定是否会返回。

增量式迭代命令并不保证每次执行都返回某个给定数量的元素。

最后编辑:2019-12-13作者:qingheluo

这个作者貌似有点懒,什么都没有留下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值