目录
一、引言
二、基础命令
1.set
2.get
3.keys
3.1 keys ?
3.2 keys *
3.3 keys [abe]
3.4 keys [^]
3.5 keys [a-b]
4.exists
5.delete
6.expire
7.ttl
8.type
三、Redis中的过期策略(面试题)
1.惰性删除
2.定期删除
3.定时器
四、总结
一、引言
本篇文章就Redis在Ubunto上面的一些简单命令进行介绍。
二、基础命令
1.set
set命令就是设置键值对的,例如 set key value
2.get
获取键的值
3.keys
全局命令,简单理解就是在整个redis上面进行查找
3.1 keys ?
?能够代替其中一个字符
3.2 keys *
* 能够代替零个或者多个字符
3.3 keys [abe]
[]查找里面的内容代替的字符
3.4 keys [^]
查找除了这个的字符
3.5 keys [a-b]
查找a-b的内容
注意:尽量少使用keys * 这样的查找全部的操作,可能会把服务器卡崩,所以尽量不用这类操作
4.exists
判定key是否存在,返回值是key存在的个数,时间复杂度是O(1)
5.delete
和keys,exists一样,返回值是删除的个数,时间复杂度是O(1)
6.expire
给指定的key设置过期时间,超过这个时间这个key就会被自动删除。返回值是一个数字,1表示成功,0表示失败。此处的设定过期时间,必须是针对已经存在的key设置,时间复杂度也是O(1).
想使用毫秒的话,使用pexpire key。
7.ttl
查询过期时间,time to live 存活时间,同时还存在pttl 这样的操作命令,时间复杂度是O(1)
返回值是剩余过期时间,-1表示没有关联过期时间,-2表示key不存在
8.type
返回key对应的数据类型,但redis所有的key都是String类型,此处指的是对应的value的类型。
三、Redis中的过期策略(面试题)
redis整体的策略是定期删除和惰性删除
1.惰性删除
假设key已经到过期时间了,暂时还没进行删除。key还存在。后面访问到了这个key,发现这个key已经过期,这次访问就会让redis服务器触发删除key的操作,同时返回一个nil
2.定期删除
每次抽取一部分key进行过期时间(保证抽取检查的过程足够快)
redis还提供了一系列内存淘汰=策略。
3.定时器
在某个时间到达之后,执行指定的任务。
1.基于优先级队列(堆),过期时间早的先出队列。
队首元素就是最早要过期的key。
此时定时器只要一个线程,让这个线程去检查队首元素,看其是否过期即可,如果队首元素还没过期,后续元素一定没过期。
2.时间轮
设置一个类似轮盘来进行定时的操作
但以上两种方案redis都没有实现。
四、总结
本篇文章就介绍了Redis的通用命令,但Redis还有更多的命令,这就需要再使用时大家能够去Redis官网进行查询。感谢大家观看!