Redis全局命令

"那篝火在银河尽头~" 


Redis-cli命令启动

        现如今,我们已经启动了Redis服务,下⾯将介绍如何使⽤redis-cli连接、操作Redis服务。客户端与服务端交互的方式有两种:

● 第⼀种是交互式⽅式: 后续所有的操作都是通过交互式的⽅式实现,不需要再执⾏redis-cli了。

redis-cli-h{host}-p{port}

        进入redis后,我们可以敲下使用redis的一个命令:

● 第⼆种是命令⽅式: 就可以直接得到命令的返回结果.

reids-cli -h {host} -p {port} {command}

        这里有两点需要注意由于我们连接的Redis服务位于127.0.0.1,端⼝也使⽤的是默认的6379端⼝。所以很多时候,所以可以省略-h{host}-p{port}。       


Redis全局命令:

如何理解全局命令?        

(1) set与get

        redis中最核心的两个命令就是: "set" 和 "get".set是用来把 "key" 和 "value"存储进去,而"get"是用来通过 "key" 获取 ”value".

set命令使用:

        set后面可以携带很多参数,但是开始学习阶段,我们就采取它最简单的用法。

        对于上述的key value,如果你要表示字符串可以不用加 "",即便加上redis也不会报错。 

get命令使用:

        你说你现在设置了两个key就设置了嘛?你总得给我看看你设置的key是什么吧!

  

nil vs null:

        null和nil都可以表示没有或者在价值上为0的概念,其中我们使用 "null"大多数用在数学、编程、商业等等,另一方面,在体育竞技或游戏方面使用 "nil"。

(2) Keys 

参数效果
?匹配任意一个字符
*        匹配0个或多个任意字符
[abcde]只能匹配到这个选型的任意一个
[^e]匹配字符但 不包括e
[a-b]匹配a~b这个范围,范围都是闭区间

          设置部分keys。

keys *:

        keys命令的时间复杂度是O(n),这很好理解,就是遍历redis服务器是上存储的所有key。"keys *"其效果就是遍历访问 redis上的所有设置过的key!在生产环境中,一般会禁止使用"keys *"命令, 因为执行 " keys *"命令所花费的时间非常长,而Redis是一个单线程进程,此时就会导致redis服务器被阻塞住了,无法给其他客户端提供服务! 

     

(3) EXISTS

        redis中支持很多数据结构,指的是value可以是一些复杂的数据结构。相对于redis自身的键值对,是通过哈希表的方式来组织的。

  

为什么redis很多命令可以进行多参数传递?        

        这两次写法有什么区别?

        

        我们需要了解,redis是一个网络服务,它的服务端和客户端的交流方式一定是以这样的形式:

        如果输入多条命令,也就是需要多次网络传输网络通信,相反,如果将这些命令打包成一条命令,那么仅仅需要进行一次网络传输即可!大大减少了网络IO次数,提高数据处理的能力! 

        

(4) DEL

         

(5) (P)EXPIRE\(P)TTL

        返回值:1表⽰设置成功。0表⽰设置失败。

        这里我们可以联想我们手机收到的验证码,什么几分钟内有效。

返回值:剩余过期时间。-1表⽰没有关联过期时间,-2表⽰key不存在。

        对计算机而言,秒实在是很慢,所以你也会看到p开头的诸如 “pexpire\pttl”它们的时间是以毫秒为单位。 

(6) type                

        当然这些数据结构,会在后面的篇幅中讲解。我们现在只需要观察结果,不用在意敲击的命令是什么意思。

        我们通过type可以很快地知道,每个redis中存在的key存储的value是什么类型。 


Redis中的过期策略

        我们可以使用Expire命令设置key的到期时间。可是一个redis中一定不止一个key设置了过期时间,这些key一定需要什么管理其来,到一定的时间对这些key进行释放。redis咋可能知道哪些key已经过期需要被删除呢,哪些可以还没有过期呢?

        可是Redis是一个单线程进程,如果是遍历所有的key,这样显然是行不通的,效率太低了,那么redis采取的过期策略是什么呢?

        虽然上述两种策略相结合,但是仍然会残存很多的过期Key,没有得到及时的删除。因此,redis还提供了一系列内存淘汰的策略,解决这个问题。 

        有兴趣可以看看这篇讲解redis的内存淘汰策略的文章:

https://baijiahao.baidu.com/s?id=1729630215002937706&wfr=spider&for=pc

        redis并没有选择使用定时器的方式来实现对key的过期删除,如果存在多个key需要被过期删除,那么一个定时器可以高效、节省cpu资源的前提下,完成对过期key的清理。                

        所以,借着这个机会,我们来看看定时器思想的两种实现方法。

定时器思想:

1) 基于优先级队列实现的定时器:        

2) 基于时间轮实现的定时器 

        再次注意,redis中并没有采取这两种方案的任何一种来解决过期key的清理,但这两种方案都是高效的定时器实现方式,还是有一定的了解必要。       


小结:

        当前我们已经学了 redis几个基本的全局命令: get\set是redis的核心命令
① keys: 用来匹配规则pattern的所有key.

② exists: 用来判定指定的key是否存在.

③ (p)expire: 给key设置过期时间.  ---> redis的过期策略

④ (p)ttl: 查询key的过期时间.

⑤ type: 查询key对应的value类型.

⑥ del: 删除指定的key


感谢你的阅读

祝你好运,向阳而生~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值