`
decao
  • 浏览: 79086 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Redis过期时间与缓存

阅读更多

1、设置过期时间

 

EXPIRE   key  seconds       其中 seconds 参数标识键的过期时间,单位是秒。返回1表示设置成功,返回0则表示键不存在或设置失败。

 

TTL  key        查看一个键还有多久的时间会被删除。返回值是剩余的时间,单位是秒。当键不存在时该命令会返回 -2.

 

 PEXPIRE   key  seconds       其中 seconds 参数标识键的过期时间,单位是毫秒。返回1表示设置成功,返回0则表示键不存在或设置失败。

 

PTTL  key        查看一个键还有多久的时间会被删除。返回值是剩余的时间,单位是毫秒。当键不存在时该命令会返回 -2.

 

PERSIST  key    取消键的过期时间,即将键恢复成永久的。过期时间被成功清楚则返回1,否则返回0(键不存在或键本来就是永久的)

 

127.0.0.1:6379> set session:101 uid1314

 

OK

 

127.0.0.1:6379> expire session:101 120

 

(integer) 1

 

 127.0.0.1:6379> ttl session:101

 

(integer) 106

 

127.0.0.1:6379> ttl session:101

 

(integer) 93

 

127.0.0.1:6379> ttl session:101

 

(integer) -2

 

没有为键设置过期时间,既永久存在,这是建立一个键后的默认情况。TTL命令返回  -1。

 

在2.6版本中,无论键不存在还是键没有过期时间都会返回 -1,知道 2.8 版本后两种情况才会分别返回 -2 和 -1 两种结果。

 

2、实现缓存

 

当服务器内存有限时,如果大量地使用缓存键且过期时间设置的过长就会导致Redis占满内存;如果将缓存键的过期时间设置的过短,就可能导致缓存命中率过低并且大量内存白白地闲置。

 

很难为缓存键设置合理的过期时间,为此可以限制Redis能使用的最大内存,并让Redis按照一定的规则淘汰不需要的缓存键。

 

设置方法:修改配置文件的 maxmemory 参数,限制Redis最大可用内存大小(单位是字节),当超出这个限制时Redis会依据 maxmemory-policy 参数指定的策略来删除不需要的键直到Redis占用的内存小于指定的内存。

 

volatile-lru                使用LRU算法删除一个键(支队设置了过期时间的键)

 

allkeys-lru                使用LRU算法删除一个键

 

volatile-random        随机删除一个键(支队设置了过期时间的键)

 

allkeys-random        随即删除一个键

 

volatile-ttl                删除过期时间最近的一个键

 

noeviction               不删除键,只返回错误

 

LRU(Least Recently Used)算法即“最近最少使用”,其认为最近最少使用的键在未来一段时间内也不会被用到,即当需要空间是认为这些键是可以被删除的。

 

分享到:
评论

相关推荐

    Redis缓存穿透,缓存击穿,缓存雪崩面试题解析

    Redis缓存穿透、缓存击穿、缓存雪崩面试题解析 Redis缓存穿透、缓存击穿、缓存雪崩是Redis中的三个重要概念,它们都是Redis缓存机制中可能出现的错误或问题。下面我们将详细解析这三个概念,并提供相应的解决方案。...

    spring-ehcache-redis两级缓存

    两级缓存在redis的方案上做一步优化,在缓存到远程redis的同时,缓存一份到本地进程ehcache(此处的ehcache不用做集群,避免组播带来的开销),取缓存的时候会先取本地,没有会向redis请求,这样会减少应用服务器<–...

    redis分布式缓存中间件培训PPT

    1. 缓存机制 – Redis提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。 2. 排行榜系统 – Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜...

    仿redis缓存Java版轻量级缓存组件LocalCache

    仿redis缓存Java版轻量级缓存组件LocalCache,基于JVM内存实现数据缓存及过期机制

    Redis缓存+PHPredis 扩展

    包含了redis的下载,以及php的redis扩展,自己确切使用可以

    Redis缓存穿透缓存雪崩缓存击穿的原因和解决方案.docx

    2. 多级缓存:采⽤多级缓存,本地进程作为一级缓存,Redis 作为二级缓存,不同级别的缓存设置的超时时间不同,即使某级缓存过期了,也有其他级别缓存兜底。 3. 缓存标记:记录缓存数据是否过期,如果过期会触发通知...

    java操作Redis缓存设置过期时间的方法

    主要介绍了java操作Redis缓存设置过期时间的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Redis缓存设计与性能优化精要

    另外,详细阐述了缓存与数据库双写一致性问题及解决策略。最后,提供了Redis键值设计和性能优化的实用建议,如合理的key名设计、避免bigkey、选择合适的数据类型,以及客户端连接池使用优化。这些内容对于提升Redis...

    springboot 整合ehcache+redis 通过配置文件切换缓存类型

    1、添加依赖 pom.xml 2、主入口添加注解@EnableCaching 获取缓存方法添加@Cacheable 3、初始化缓存管理器 4 实现put get方法 其中一个put方法添加了过期时间 5 调用方法获取缓存 注意需要在本地部署redis服务注意...

    RedisConfig-cgd.java

    springboot2.x版本的redis配置java类,修改redis缓存默认过期时间。

    DelayQueue延迟队列和Redis缓存实现订单自动取消功能

    java使用DelayQueue延迟队列和Redis缓存实现订单自动取消功能

    redis缓存三大问题及解决方案.docx

    2. 永不过期:为每个 value 设置一个逻辑过期时间,当发现超过逻辑过期时间后,会使用单独的线程去构建缓存。 了解 Redis 缓存的三大问题及其解决方案,可以帮助开发者更好地使用 Redis 缓存,提高系统的性能和可用...

    Redis学习实践 - 超实用超详细

    redis基本命令 Redis数据结构、原理分析、应用实战 什么是Redis Redis的作用 Redis的存储结构 Redis的安装 Redis的数据类型 字符串类型 列表类型 ...缓存与数据一致性问题 缓存雪崩与缓存穿透 布隆过滤器

    监听redis过期key,做对应业务处理

    1.springboot集成redis,并监听redis过期key做相应的业务处理

    Redis学习实践 - 适合初学者 从0到精通

    redis命令实践 Redis数据结构、原理分析、应用实战 什么是Redis Redis的作用 Redis的存储结构 Redis的安装 Redis的数据类型 字符串类型 列表类型 ...缓存与数据一致性问题 缓存雪崩与缓存穿透 布隆过滤器

    Redis使用-缓存穿透,雪崩,击穿以及解决方案分析.docx

    另外也有一个更为简单粗暴的方法,如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。 二、缓存雪崩 缓存雪崩是指缓存中大...

    springboot2.x整合redis做mybatis的二级缓存

    springboot整合redis做mybatis的二级缓存,含有自定义key,自定义过期时间,自定义序列化方式

    Redis过期-淘汰机制的解析和内存占用过高的解决方案.docx

    · 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。 · 如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。 · 设置热点数据永远不过期。 在使用 Redis 时,我们需要了解...

    Redis 事务与过期时间详细介绍

    Redis 事务与过期时间详细介绍 一、Redis事务: Redis中支持事务,事务即为当我们...二、Redis过期时间: 实际开发中经常会遇到一些有时效性的数据,比如缓存,过一段时间就需要删除这些数据,Redis支持设置一个键的

    Redis实现缓存功能总结.docx

    一定要加上 @EnableCaching,如果你只想使用默认配置,可以把它打在启动类上,不写配置类,但是这样一般无法满足实际业务需求,因为有些设置是必要的,例如缓存的过期时间,cacheManager 方法配置了缓存过期时间,...

Global site tag (gtag.js) - Google Analytics