生产环境谨慎使用keys命令
Last updated
Was this helpful?
Last updated
Was this helpful?
进入redis-cli之后,我们通常比较关心的是有哪些key(当然也可以用其他客户端工具),那么就不得不说keys命令
keys命令语法
? 匹配一个字符
* 匹配任意个(包括0个)字符
[] 匹配括号间的任一个字符,可以使用 "-" 符号表示一个范围,如 a[b-d] 可以匹配 "ab","ac","ad"
\x 匹配字符x,用于转义符号,如果要匹配 "?" 就需要使用 \?
获取当前库下的所有key
如下图所示,存在四个key:redis01、redis11、hbase01、hbase11
查找以redis开头的所有key
查找以hbase开头、第6位为任一字符、以”1”结尾的key
[],这和正则表示中的[]类似,每次可以配其中任何一个字符。
会匹配”redis01”和”redis11”,“2”不再【01】中,所有”redis21”未能匹配上
从上面开来,keys的模糊匹配功能很方便也很强大,但是在生产环境需要慎用!因为Keys,开发中使用keys的模糊匹配,会引发Redis锁,并且增加Redis的CPU占用
还有就是虽然redis存取很快,但是正常生产环境,redis服务器肯定和web服务器不是在一起,有时候甚至是在不同的地区,所以网络通信延迟就很重要了,所以要减少存取次数,一次存取完成更多的工作,否则你会发现做同样的事redis还没有关系型数据库快,所以redis存的时候一定要有技巧,尽可能减少存取次数。
那怎么解决这种类似的keys模糊匹配问题呢?其中常见的方法就是设置一个set,将需要使用的keys存储在set中。