设置过期时间

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 过期时间与缓存的更多相关文章

  1. Redis -- 过期时间 和 缓存 例子

    1.设置 key的生存时间,过期自动删除 exprire key  seconds    设置过期时间 秒数 ttl key   查询剩余时间 如果 设置了过期时间.对key进行 set 操作,会清除 ...

  2. redis学习(五) redis过期时间

    redis过期时间 1.redis过期时间介绍 有时候我们并不希望redis的key一直存在.例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销毁.redis提供了一些命令,能够让我们对ke ...

  3. Redis 过期时间

    http://www.redis.cn/commands/expire.html 附录: Redis 过期时间 Keys的过期时间 通常Redis keys创建时没有设置相关过期时间.他们会一直存在, ...

  4. localstorage实现带过期时间的缓存功能

    前言 一般可以使用cookie,localstorage,sessionStorage来实现浏览器端的数据缓存,减少对服务器的请求. 1.cookie数据存放在本地硬盘中,只要在过期时间之前,都是有效 ...

  5. 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透

    前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...

  6. Redis过期时间

    上次开发用了redis后效果不错,后来在进阶的开发中查询到,如果redis一直不释放也会占用内存,于是就想着给redis加上个过期时间. 具体操作很简单,只要在设置redis的时候加上exp就可以了, ...

  7. IIS使用十大原则,(IIS过期时间,IIS缓存设置) 【转载】

    1. 自定义错误页虽然自定义错误页很简单,但只有少数管理员有效地利用了它.管理员可以在MMC中将HTTP错误信息映像到服务器上的绝对URL或是某个文件,更为详细的信息可以在这里找到.如果你嫌这太麻烦, ...

  8. python设置redis过期时间

    import time import redis if __name__ == "__main__": try: conn=redis.StrictRedis(host='192. ...

  9. java实现带过期时间的缓存

    private static ScheduledExecutorService swapExpiredPool = new ScheduledThreadPoolExecutor(10); priva ...

随机推荐

  1. pri 知识点

    pri github:https://github.com/prijs/pri 添加路由后动态导入,使用的是 react-loadable:https://github.com/jamiebuilds ...

  2. java-普通类文件@Autowired自动注入为null

    @Autowired注解在非Controller中注入为null 1.配置文件(类文件所在的包) <context:component-scan base-package="net.n ...

  3. Spring Boot基础知识

    Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一 Spring Boot.Spring MVC 和 Spring 有什么区别 ...

  4. Hiero中修改BinView中binitem对象名字的方法

    之前博客提到了scan for more version这样一个功能,该功能会放宽查询条件,这就会导致BinItem的名称与activeVersion的名称不符.这篇博客提供了一个方法去统一名称. 该 ...

  5. linux上mongodb的安装与卸载

    安装 1.下载安装包 wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz 下载完成后解压缩压缩包 tar zxf mon ...

  6. NET Core Kestrel部署HTTPS

    NET Core Kestrel部署HTTPS ASP.NET Core配置 Kestrel部署HTTPS.现在大部分网站已经部署HTTPS,大家对于安全越来越重视. 今天简单介绍一下ASP.NET ...

  7. 持续集成(Continuous Integration)基本概念与实践

    本文由Markdown语法编辑器编辑完成. From https://blog.csdn.net/inter_peng/article/details/53131831 1. 持续集成的概念 持续集成 ...

  8. 【mongodb】之安装

    export PATH=/opt/mongodb64-3.4.10/bin:$PATHmongod --dbpath data --logpath logs/mongo.log --fork

  9. 【NIO】之IO和NIO的区别

    在Java1.4之前的版本,Java对I/O的支持并不完善,开发人员在开发高性能I/O程序的时候,会面临以下几个问题: 1.没有数据缓存区,I/O性能存在问题 2.没有C/C++通道的概念,输入和输出 ...

  10. SolrServer SolrRequest

    SolrServer实现类 HttpSolrServer HttpSolrServer uses the Apache Commons HTTPClient to connect to solr. H ...