`
decao
  • 浏览: 78363 次
  • 性别: 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)算法即“最近最少使用”,其认为最近最少使用的键在未来一段时间内也不会被用到,即当需要空间是认为这些键是可以被删除的。

 

分享到:
评论

相关推荐

    spring-ehcache-redis两级缓存

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

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

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

    Redis缓存+PHPredis 扩展

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

    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过期key,做对应业务处理

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

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

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

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

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

    Redis面试专题.pdf

    8.缓存与数据库不一致怎么办 9.主从数据库不一致如何解决 10.Redis 常见的性能问题和解决方案 11.Redis 的数据淘汰策略有哪些 12.Redis 当中有哪些数据结构 13.假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是...

    springboot集成redis缓存之手机验证码.docx

    1、采用session方式将验证码放入seeeion中并设置过期时间,用户注册登录发送验证码,然后合适对比; 2、采用数据库存储方式,每次将验证码和用户手机号绑定,然后直接查询数据库比对验证码; 3、采用redis方式将手机...

    redis缓存过期设置1

    1)volatile-lru:使用LRU算法移除key,只对设置了过期时间的键(2)allkeys-lru:使用LRU算法移除key(3)volatile-ra

    Redis面试题50道(含答案)_.pdf

    28、Redis key 的过期时间和永久有效分别怎么设置? 29、Redis 如何做内存优化? 30、Redis 回收进程如何工作的? 31、Redis 回收使用的是什么算法? 32、Redis 如何做大量数据插入? 33、为什么要做 Redis 分区? ...

    redisStudy.zip

    缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力 解决方案:1.互斥锁 如果项目...

    java中redis工具类

    根据key 获取过期时间,返回0代表为永久有效 判断key是否存在 删除缓存,可以传一个值 或多个 普通缓存获取 普通缓存放入 普通缓存放入并设置时间,time要大于0 如果time小于等于0 将设置无限期 递增,传参指定要...

    springboot 整合 redis 简单示例 (可设置缓存过期)

    springboot 整合 redis 简单示例 1、添加依赖 pom.xml 2、主入口添加注解@EnableCaching 获取缓存方法添加@Cacheable 3、初始化缓存管理器 4 实现put get方法 其中一个put方法添加了过期时间 5 调用方法获取缓存。...

    window手动操作清理redis缓存的技巧总结

    缓存击穿是指缓存中的一个热点Key(比如一个秒杀商品),在某个时间点过期的时候,恰好在这个时间点访问量剧增,对这个Key有大量的并发请求过来,请求发现缓存过期一般都会从后端DB加载数据并回设回缓存,但就在缓存中...

    Python的Flask框架使用Redis做数据缓存的配置方法

    Redis性能极高能支持超过100K+每秒的读写频率,还支持通知key过期等等特性,所以及其适合做缓存。 下载安装 根据redis中文网使用wget下载压缩包 $ wget http://download.redis.io/releases/redis-3.0.5.tar.gz $ ...

Global site tag (gtag.js) - Google Analytics