Redis中keys和hkeys的区别

Redis中keys和hkeys的区别

在redis中,keys和hkeys最根本的区别就是操作的对象不一样

  • keys操作的是redis库中的key值,用于检索redis中的key;
  • hkeys操作的对象是hash对象的字段值。

keys

官方解释

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]
 特殊符号用"\"隔开

时间复杂度:

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

返回值:

符合给定模式的key列表。

利用keys的模糊匹配带来的性能问题

从上面开来,keys的模糊匹配功能很方便也很强大,但是在生产环境需要慎用!开发中使用keys的模糊匹配却发现redis的CPU使用率极高,所以一般不建议在redis上面使用keys这样的命令。

那怎么解决这种类似的keys模糊匹配问题呢?其中常见的方法就是设置一个set,将需要使用的keys存储在set中。

hkeys

官方解释

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

时间复杂度

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

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

(error) WRONGTYPE Operation against a key holding the wrong kind of value
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值