Redis中的keys和Hkeys的区别

1、主要区别

keys和hkeys最根本的区别就是操作的对象不同

  • keys:针对的是redis中的所有key值,用于检索redis中符合条件的key值
  • hkeys:针对的是单个hash,目的是获得该hash对象的字段值

2、keys

2.1、官方解释

KEYS pattern
查找符合给定模式的key。

  • 可以使用正则表达式

KEYS 命中数据库中所有key。
KEYS h?llo命中hello, hallo and hxllo等。
KEYS h
llo命中hllo和heeeeello等。
KEYS h[ae]llo命中hello和hallo,但不命中hillo。
KEYS h[a-z]llo
KEYS hello[0-9]
特殊符号用”\”隔开

2.2、时间复杂度

O(N),N为数据库中key的总数量

2.3、返回值

符合给定模式的key列表。

2.4、带来的性能问题

keys的时间复杂度是O(N),在执行此命令的时候redis会锁定,花费的时间较长。
由于redis的单线程性质,会导致后续提交给redis命令都阻塞在队列中,redis服务器CPU增高。
许多客户端发出的redis命令长时间得不到响应,进一步影响业务甚至引起系统的雪崩效应。

在业内有一条铁律:禁止在生产环境使用Keys正则匹配操作(实际即便是开发、测试环境也要慎重使用)

3、HKeys

3.1、官方解释

HKEYS key
返回单个哈希表key中的所有域。

3.2、时间复杂度

O(N),N为哈希表的大小。

3.3、返回值

一个包含哈希表中所有域的表。
当key不存在时,返回一个空表。
当key存在,但是类型不是hash类型的时候,则抛出异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值