Redis常用命令,key过期策略

本文介绍了Redis中核心命令GET和SET,以及全局指令如keys、exists、del、expire、TTL等。重点讲解了Redis的过期策略,包括惰性删除和定期删除,以及如何通过type检查数据类型。
摘要由CSDN通过智能技术生成

这篇文章仅用于本人在学习Redis过程中,熟悉和操作各种命令的使用。

在Redis常见的命令中,当然不止redis,基本所以的组件或者一些知名软件,要查看使用第一时间都是查看官方文档Redis

这里的查询进行一个命名或指令的查询

GET和SET

首先这里介绍Redis中最核心的两个命令 一个是get,一个是set。因为redis中是按照键值对进行的取值,所以set是把键值对存入进redis中,get是根据key来取出对应的键值对value
这里首先是set 同时要是同时set过程中2个key的值相同,是会进行一个覆盖操作的

  • set key value (这里的key和value都是字符串)
  • get key(获取value的值) 

在获取value值的时候,要是不存在相应的key,则会返回nil 。这里的nil和null是同一个意思,但是硬要说区别的话 null使用在计算机,ai,数学等方面居多,nil使用在运动等方面居多

全局指令

能够搭配任意数据结构来使用的命令

1.keys

1. keys 查询服务器上相匹配的key 也就是通过一些特殊符号或通配符来模糊查找是否存在相应的key。 keys的时间复杂度是O(n)所以在生产环境中一般不使用keys 尤其是keys *

2.exists

2.  exists 判定一个key是否存在,他可以同时判断多个key 返回结果为存在key的个数

  • exists key1 key2

当然因为redis也是客户端服务器结构的程序,所以一次查询多个效率肯定比多次查询一个会高很多

3. del

del就是英文delete的缩写 del也支持同时删除多个键值对,删除之后返回删除成功的个数。

  • del key1 key2

因为redis本来的使用场景一般是,存放热点数据,来代替MySQL负重前行的,真实的数据还会继续保留在MySQL中,所以当redis应用场景是热点数据缓存时,删除操作的影响不会像MySQL这么巨大,但是当redis作为数据库时,删除操作就有很大的风险。

总的来说还是不要乱删数据,因为很容易把自己的工资删跑、

4.expire

给指定的key设置存活时间超过这个时间限制,就会自动删除对应的key(非常有用和实用的一个功能) 比如平时手机中的短信验证码  
expire设置的时间单位就是s(秒)

  • expire key seconds
  • pexpire key seconds (这个的单位是毫秒)

要是返回值是0表示设置失败,1表示设置成功了。

5.ttl

(这条需要看完第4条之后看)ttl英文翻译为time to live 也就是存活时间,就是描述当前key还能存在多长的时间(返回的值为剩余的过期时间,返回-1的话表示没有关联过期时间,-2表示key不存在)

  • ttl key

redis的key过期策略

讲述完上述两个通用命令之后,我们讲一下一个常用的面试题,就是关于redis中的key过期策略的

  • 定期删除
  • 惰性删除

首先呢,因为redis是一个单线程的程序,所以在Redis中,是没有一个扫描线程,去一直进行一个过期key的扫描的,这里的话和多线程那块的阻塞队列可能稍微不相同。

redis中一般会存在大量的key,所以直接遍历去删除key的话是十分消耗时间并且不可靠的一种策略,所以在redis中采用了惰性删除的策略,惰性删除指的是,假设一个key已经到了过期时间了,但是他还是会存在内存中,我也不清楚具体有哪些key到过期时间了,但是在随后的过程中,在后面一次的访问过程中,正好用到了这个key,redis发现key已经过期了,于是redis就会触发删除操作,并返回一个nil。但是呢,上述情况很可能就会出现一个问题,就是每一次的操作中,每访问一个key,这个key都处于过期的状态,所以为了解决上述问题,有引入了一个机制,为定期删除,就是每隔一段时间,就拿多少数据出来检出,比如没过3秒就200个数据进行一次检测,要是数据中有过期的就进行一个删除,要是没有的话就不管了。但每次抽查都有一个前提,就是不影响redis的速度,因为毕竟是一个单线程的程序。虽然有了上述两种策略,但其实删除效果还是很一般的,因为很多key可能会存在残留,删不干净,redis为了优化上述机制,还增加了一些列内存淘汰策略(后面要是有机会的介绍)但主要是还是通过上述2种策略完成的。

6. type

返回key对应的数据类型

这里的话稍微列举几个,不是很全面讲究看看就好了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值