redis 过期时间与缓存
设置过期时间
redis对于存储的键值可以设置过期时间,对于过期了的键值,redis会自动删除。
> OK > get price " > expire price (integer) > get price " > get price (nil)
上述代码对price设置了5秒的过期时间,5秒内能查出数据,5秒后则返回null
需要说明的是,expire设置的时间单位是秒,如果需要更加精确的话,需要通过pexpire来设置,单位是毫秒,即expire price 1等价于pexpire price 1000
查询键值还有多久过期 命令ttl/pttl
对于未设置过期时间的键值,返回-1;对于不存在的键值,返回-2
> OK > ttl price (integer) - > expire price (integer) > ttl price (integer)
取消过期时间设置
使用persist取消过期时间设置,使用set重置键值的话也会取消过期时间设置
> OK > expire price (integer) > ttl price (integer) > persist price (integer) > ttl price (integer) - >
缓存
redis常用作缓存系统,利用的就是过期时间这个功能。在实际使用中,若大量使用缓存键且缓存时间设置的过长,则会导致Redis占满内存;若过期时间设置的太短,则会导致内存浪费且缓存命中率低。目前比较合适的解决方案是设置redis的最大使用内存maxmemory和淘汰缓存键的规则(依据maxmemory-policy),当内存满时由redis自动删除键值。
Redis支持的淘汰键的规则
| 规则 | 说明 |
| volatile-lru | 使用LRU算法删除一个键(只对设置了过期时间的键) |
| allkeys-lru | 使用LRU算法删除一个键 |
| volatile-random | 随机删除一个键(只对设置了过期时间的键) |
| allkeys-random | 随机删除一个键 |
| volatile-ttl | 删除过期时间最近的键 |
| noeviction | 不删除键,只返回错误 |
redis 过期时间与缓存的更多相关文章
- Redis -- 过期时间 和 缓存 例子
1.设置 key的生存时间,过期自动删除 exprire key seconds 设置过期时间 秒数 ttl key 查询剩余时间 如果 设置了过期时间.对key进行 set 操作,会清除 ...
- redis学习(五) redis过期时间
redis过期时间 1.redis过期时间介绍 有时候我们并不希望redis的key一直存在.例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销毁.redis提供了一些命令,能够让我们对ke ...
- Redis 过期时间
http://www.redis.cn/commands/expire.html 附录: Redis 过期时间 Keys的过期时间 通常Redis keys创建时没有设置相关过期时间.他们会一直存在, ...
- localstorage实现带过期时间的缓存功能
前言 一般可以使用cookie,localstorage,sessionStorage来实现浏览器端的数据缓存,减少对服务器的请求. 1.cookie数据存放在本地硬盘中,只要在过期时间之前,都是有效 ...
- 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透
前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...
- Redis过期时间
上次开发用了redis后效果不错,后来在进阶的开发中查询到,如果redis一直不释放也会占用内存,于是就想着给redis加上个过期时间. 具体操作很简单,只要在设置redis的时候加上exp就可以了, ...
- IIS使用十大原则,(IIS过期时间,IIS缓存设置) 【转载】
1. 自定义错误页虽然自定义错误页很简单,但只有少数管理员有效地利用了它.管理员可以在MMC中将HTTP错误信息映像到服务器上的绝对URL或是某个文件,更为详细的信息可以在这里找到.如果你嫌这太麻烦, ...
- python设置redis过期时间
import time import redis if __name__ == "__main__": try: conn=redis.StrictRedis(host='192. ...
- java实现带过期时间的缓存
private static ScheduledExecutorService swapExpiredPool = new ScheduledThreadPoolExecutor(10); priva ...
随机推荐
- less 引用阿里巴巴字体图标的线上地址
@import url("//at.alicdn.com/t/font_546826_wghayhobtn.css");
- spring-AOP框架(基于AspectJ注解配置AOP)
基于AspectJ注解配置AOP 1.加入jar包: 要在Spring应用中使用AspectJ注解,必须在classpath下包含AspectJ类库:aopalliance.jar.aspectj.w ...
- tomcat中catalina是什么
catalina 就是Tomcat服务器使用的 Apache实现的servlet容器的 名字. Tomcat的核心分为3个部分: (1)Web容器---处理静态页面: (2)catalina --- ...
- nginx支持android、ios、微信扫一扫
首先做一个android下载的html页面,页面中识别微信浏览器提示在浏览器中打开,然后在nginx对ios进行识别并跳转到apple store #下载App location ^~ /appDow ...
- GTX的生成(包括COMMON)
GTX的生成(包括COMMON) 1.每一个GTX Quad需要一个GTX common,同时GTX common只包含有QPLL,不包含CPLL. 2.kintex-7设备只支持GTX 3.参考时钟 ...
- js switch 函数类型 序列化 转义
switch(name){ case '1': age = 123; break; case '2': age = 456; break; default : age = 777; } 函数 func ...
- 实现类QQ的编辑框
第一步,平面效果.Windows系统有几个消息专门用来处理Windows组件的边框部位,那就是WM_NCCALCSIZE和WM_NCPAINT这两个消息,从消息名字看来NC这个就代表着No Clien ...
- docker-compose使用volume部署mysql时permission deny问题解决
问题整体情况为使用docker做mysql的容器,然后结合其他服务一起通过docker-compose启动,并且为了一次性建表和设置用户权限我又在mysql中封装了setup.sh.schema.sq ...
- vlan交换机的端口模式有哪几种
一 端口类型1 ,Access用户模式2 ,Trunk链路模式3 ,Hybrid模式(跟Trunk很类似但比trunk高级)二 端口介绍2.1 ,Access类型端口:只允许默认vlan的以太网帧,也 ...
- IDEA运行tomcat8.5.35源代码
前提环境,安装和配置好java1.8+环境,maven,IDEA 1.下载Tomcat源代码:https://tomcat.apache.org/download-80.cgi#8.5.35 2.创建 ...