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

1588

被折叠的 条评论
为什么被折叠?



