Redis核心命令和全局命令的学习

1.redis核心的俩个命令:

1.1get命令:这个命令是从redis中根据key去取value

get key1 value1

1.2set命令:这个命令是根据key去存value

set key1 value1

如果key1没有value的话,我们get key1 返回的是nil,这个nil和null表示的意思一样

1.3ping命令:ping(message)message是什么返回就是什么,如果只输入ping就会返回PONG,这个我们通常用来检测redis客户端是否连接redis服务器。

注意:我们用redis-cli直接连的话连接的是本机服务器的redis,如果想连其它redis服务器就得redis-cli -h ip地址  -p 端口号,ip地址和端口号是你要连的那个redis服务器的,可通过redis.conf配置文件查看。

(redis的数据是以键值对的形式存储的,同时key和value都是字符串,但可以不加双引号和单引号,注意在linux操作redis的时候一定要先切换成redis的客户端 redis-cli 才能识别我们的reids的相关命令)

2.redis全局命令:

概念:就是可以搭配任意一个数据结构(value)来使用的命令

value可以是哈希表,字符串,集合,有序集合,列表

2.1keys命令

语法:keys pattern

作用:返回所有满足样式pattern的key

pattern里面的通配符意思:

?匹配任意一个字符

*匹配0个或者多个字符

 [asd]只匹配这个括号里面的

[^e] 除了e其它都匹配

[a-c]匹配a到c的所有,相当于给了个区间

注意:keys时间复杂度是O(n),生成环境尽量避免使用,尤其是keys *

redis是个单线程的,如果key特别多,key*会消耗大量时间,导致redis不能给其它redis客户端提供服务.

2.2exists命令

语法:exists key [多个key直接用空格隔开]

作用:返回这些key的数量

时间复杂度度:O(1)

因为redis里面的键值对就是拿哈希表存的value又是可以包含这些数据结构,哈希表查询时间复杂度为O(1),所有exists命令去查key的数量时间复杂度为O(1)。

1.exists hello hallo 返回(Interger) 2

2.exists hello 返回(Interger)1

exists hallo 返回 (Interger)1

区别:区别很大,因为我们redis是客户端服务器结构,他们直接是通过网络通信的,我们上面那个包装成一个请求,传到服务器,服务器给一个响应。

下面就是俩次请求了,消耗更大。   

2.3del命令

语法:del key[多个key用空格隔开] 

作用:根据这些key删除键值对

这个相比mysql的delete  drop这些操作,还是比较安全的,因为它作为缓存的话里面存的,热点数据是经常变化的,而mysql你要删了就是真的啥也没了。

2.4expire命令

语法:expire key seconds

         pexpire key 毫秒

作用:给指定的key设置过期时间(时间一过就会被删除)

时间复杂度:O(1)

返回:1(设置成功) 0(设置失败)

2.5ttl命令

语法:ttl key

          pttl 配合毫秒那个设置的

 作用:查询当前key还有多少秒(或者毫秒pttl)过期

时间复杂度:O(1)

返回结果: -1(表示key没有设置过期时间)-2(没这个key)

问题?

redis的过期策略是如何实现的?(我这里写的不是很全可以根据相关名词自行查阅理解

答:根据定时删除和惰性删除实现,但是在某些极端情况下redis仍然会有残留的key这个时候,就引入了定时器,定时器可以用优先级队列实现或者时间轮实现。

定时删除:我们去设置一个时间去定时的进行删除

惰性删除:key虽然过期了但当下不删,等到redis下一次请求涉及到这个key的时候删除

定时器

利用优先级队列实现,队首就是最先过期的,然后我们设置一个时间差(当前时间-对首过期时间),然后看队首过期没,过期了就把这个队列全删了。

利用时间轮,就是想象成一个轮子,我们把时间分成许多小格子(按实际需求分这个时间),每一个格子挂一个链表。 

2.6type命令

语法:type key

作用:返回key对应value的数据类型(key都是String类,key对应的value可能存在多种类型)

时间复杂度:O(1)

返回值类型:none,String,list,set,zset,hash and stream(当redis作为消息队列的时候,使用这个作为value的类型)                      (集合)

上述类型操作方法:lpush ---》list  sadd---》set   hset---》hash,可以创建出对应value类型的键值对

lpush key value

sadd key value

hset key value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值