【Redis】Redis 通用命令

一、帮助文档

通用指令是对任何的数据类型都可以使用的一些命令,这些命令有哪些呢?我们可以去官方文档中查看,它都放在 Generic 这一组下了。

image-20240522210834672

除了在官方文档中可以看见,我们也可以打开命令行:@Generic,可以发现出现了很多很多命令,及其使用方式也非常多。

如此多的命令不要去记,只要你会帮助文档,随时可以来查,没有必要去记忆。

image-20240522211025539

虽然很多,但是真正常用的就几个:

  • KEYS:查看符合模板的所有key
  • DEL:删除一个指定的key
  • EXISTS:判断key是否存在
  • EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除
  • TTL:查看一个KEY的剩余有效期

通过 help [command](命令名称) 可以查看一个命令的具体用法,例如:

KEYS 后面跟着 pattern,代表模板。

Find all keys matching the given pattern:查找与给定模式匹配的所有键。

这个模版有点像一种匹配的表达式,但是不是正则,而是redis内置的一种表达式,这种表达式一般是使用通配符,例如 * 代表所有。

1652887865189

或者去官方网站上找 KEYS,同样也能找到它的用法。

image-20240522212218272

点进去后官方文档中还有示例

image-20240522212329262

其中

  • * 表示多个字符
  • ? 表示一个字符

其他的通配符可以到官网上看,这里就不再赘述。

这些都是在 KEYS 的官方文档中。

image-20240522213410847

二、KEYS

tab 有自动补全功能,并且告诉你后面接 pattern

image-20240522213620931

# *表示任意的,因此这里就匹配到了所有的key
127.0.0.1:6379> keys * 
1) "name"
2) "age"
127.0.0.1:6379>

# 查询以a开头的key
127.0.0.1:6379> keys a*
1) "age"
127.0.0.1:6379>

既然它这里支持通配符搜索,那它底层肯定有一种模糊查询的机制。

像这种模糊查询,效率肯定不高,事实上,当redis数据量达到一定规模时,例如数百万 / 上千万,甚至更多时,如果使用模糊匹配查询,往往会给服务器带来巨大的负担,也就是说它的搜索可能会搜很长时间。又因为redis是单线程的,在它搜索的这段时间内,它就无法执行其他的命令,等于整个redis服务都被阻塞了。

贴心小提示:因此在生产环境下,不推荐使用keys 命令,因为这个命令在key过多的情况下,效率不高

但如果你的redis是一个集群模式,有主有从,在从节点上执行这个命令,就是可以的,但是千万别在主节点做,因为会阻塞所有的请求。


三、DEL

DEL:删除 一个 / 多个 指定的Key,返回值是删除key的数量

127.0.0.1:6379> help del # 首先查询帮助文档
  # 参数就是要删除的Key,后面有个[],意思是它可以接收多个key
  DEL key [key ...]
  summary: Delete a key # 删除一个Key
  since: 1.0.0
  group: generic

127.0.0.1:6379> del name #删除单个
(integer) 1  # 成功删除1个

127.0.0.1:6379> keys *
1) "age"

127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3 #批量添加数据
OK

127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
4) "age"

127.0.0.1:6379> del k1 k2 k3 k4 # 我们的库中只有3个key,k4是不存在的,注意观察是否能删除
(integer) 3   # 此处返回的是成功删除的key,由于redis中只有k1,k2,k3 所以只成功删除3个,最终返回
127.0.0.1:6379>

127.0.0.1:6379> keys * #再查询全部的key
1) "age"	#只剩下一个了
127.0.0.1:6379>

三、EXISTS

EXISTS:判断key是否存在,存在返回1,不存在返回0

127.0.0.1:6379> help EXISTS # 首先查询帮助文档
  # 可以发现这个命令后面也可以跟一个或多个
  EXISTS key [key ...]
  summary: Determine if a key exists # 判断key是否存在
  since: 1.0.0
  group: generic

127.0.0.1:6379> exists age
(integer) 1

127.0.0.1:6379> exists name
(integer) 0

四、EXPIRE

EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除单位是秒。

为什么redis要有这样的一个命令呢?

因为redis是基于内存存储的,随着时间的增加,内存中存储的数据越来越多,总有一天内存可能会被占满,redis就为我们提供了这个功能,为key设置有效期。

例如我存了一个数进去,根据业务需求,例如是短信验证码,我们知道,验证码一般存在时间就是五分钟,此时我就可以设置五分钟有效期,到期以后自动删除,这样一来就可以节省redis的内存空间,因此EXPIRE也是非常常用的。

跟它合作使用的另外一个命令叫 ttl,它是查看一个 Key的剩余有效期

127.0.0.1:6379> help EXPIRE
  # 命令后面跟上两个参数,key:给谁设置有效期,seconds:设置多长时间,单位是秒
  EXPIRE key seconds
  # 设置Key的存活时间,time to live即存活时间,简称为ttl
  summary: Set a key's time to live in seconds 
  since: 1.0.0
  group: generic

127.0.0.1:6379> expire age 10 # 为age设置10秒有效期
(integer) 1

127.0.0.1:6379> ttl age # 查看age的剩余有效期
(integer) 8 # 还剩8秒

127.0.0.1:6379> ttl age
(integer) 6 # 还剩6秒

127.0.0.1:6379> ttl age
(integer) -2  # 当这个key查询出来就是-2,表示这个key已经被移除了

127.0.0.1:6379> keys *
(empty list or set)

127.0.0.1:6379> set age 10 # 如果没有设置过期时间
OK

127.0.0.1:6379> ttl age
(integer) -1  # 此时ttl的返回值就是-1,代表永久有效,但建议在给redis存入数据时,最好都设置一个有效期

五、总结

image-20240522215945555

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值