宁德腾讯云数据库Redis内存过期策略分为什么?Redis多少钱?

2020-07-14 16:08:48

  内存过期策略主要的作用就是,在缓存过期之后,能够及时的将失效的缓存从内存中删除,以减少内存的无效暂用,达到释放内存的目的。

  过期策略分类

  Redis内存过期策略分为三类,定时策略、惰性策略和定期策略。

  定时策略

  含义:在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除。

  优点:保证内存被尽快释放,减少无效的缓存暂用内存。

  缺点:若过期key很多,删除这些key会占用很多的CPU时间,在CPU时间紧张的情况下,CPU不能把所有的时间用来做要紧的事儿,还需要去花时间删除这些key。定时器的创建耗时,若为每一个设置过期时间的key创建一个定时器(将会有大量的定时器产生),性能影响严重。一般来说,是不会选择该策略模式。

u=3634340218,2505771942&fm=26&gp=0.jpg

  惰性策略

  含义:key过期的时候不删除,每次从数据库获取key的时候去检查是否过期,若过期,则删除,返回null。

  优点:删除操作只发生在从数据库取出key的时候发生,而且只删除当前key,所以对CPU时间的占用是比较少的,而且此时的删除是已经到了非做不可的地步(如果此时还不删除的话,我们就会获取到了已经过期的key了)。

  缺点:若大量的key在超出超时时间后,很久一段时间内,都没有被获取过,此时的无效缓存是永久暂用在内存中的,那么可能发生内存泄露(无用的垃圾占用了大量的内存)。

  定期策略

  含义:每隔一段时间对设置了缓存时间的key进行检测,如果可以已经失效,则从内存中删除,如果未失效,则不作任何处理。

  优点:通过限制删除操作的时长和频率,来减少删除操作对CPU时间的占用--处理"定时删除"的缺点 定期删除过期key--处理"惰性删除"的缺点。

  缺点:在内存友好方面,不如"定时删除",因为是随机遍历一些key,因此存在部分key过期,但遍历key时,没有被遍历到,过期的key仍在内存中。在CPU时间友好方面,不如"惰性删除",定期删除也会暂用CPU性能消耗。

  难点:合理设置删除操作的执行时长(每次删除执行多长时间)和执行频率(每隔多长时间做一次删除)(这个要根据服务器运行情况来定了)

  该方式不是去便利所有的ky,而是随机抽取一些key做过期检测。

  定期策略

  策略注意事项

  过期策略对持久化存储的影响

  持久化存储,指的是将内存的缓存永久存在磁盘中。也就是说我们的AOF和RDB持久化存储方式。因为该两种方式,将内存中的数据写入磁盘,这时候就需要考虑到我们过期的缓存是否会被写入到磁盘中?如果写入磁盘又是怎么处理的?

  RDB持久化

  持久化key之前,会检查是否过期,过期的key不进入RDB文件。

  数据载入数据库之前,会对key先进行过期检查,如果过期,不导入数据库(主库情况)。

  AOF持久化

  当key过期后,还没有被删除,此时进行执行持久化操作(该key是不会进入aof文件的,因为没有发生修改命令)。

  当key过期后,在发生删除操作时,程序会向aof文件追加一条del命令(在将来的以aof文件恢复数据的时候该过期的键就会被删掉)。

  因为AOF方式,向存储文件追加的是Redis的操作命令,而不是具体的数据,然而RDB确是存储的安全的二进制内容。

  重写时,会先判断key是否过期,已过期的key不会重写到aof文件。

  即使在重写时,不验证是否过期,然而追加了del命令,测试无效的key同样会被删除。判断的情况是为了防止没有加入del命令的key。

timg (5).jpg

  内存淘汰机制

  定义说明

  内存淘汰机制针对是内存不足的情况下的一种Redis处理机制。例如,当前的Redis存储已经超过内存限制了,然而我们的业务还在继续往Redis里面追加缓存内容,这时候Redis的淘汰机制就起到作用了。

  Redis命令

  这里总结几个Redis中常用的与时间有关的命令。

  exists key:判断键是否存在,如果存在则返回1,不存在则返回0;

  expire key:给键设置过期时间,单位s(秒);

  ttl key:返回键剩余的过期时间,单位s(秒);当键不存在是返回-2;存在并且未设置过期时间,返回-1;如果返回≥0,则该返回值则为过期的时间;

  ptt key:返回键剩余的过期时间,单位ms(毫秒);当键不存在是返回-2;存在并且未设置过期时间,返回-1;如果返回≥0,则该返回值则为过期的时间;


联系人:罗先生

582059487 15026612550
立即咨询

QQ

QQ:582059487 点击复制添加QQ好友

电话

15026612550
7*24小时服务热线

微信

二维码扫一扫添加微信
TOP
微信咨询 获取代理价(更低折扣)
更低报价 更低折扣 代金券申请
咨询热线:15026612550