`

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的...

    springMybatis+redis三级缓存框架

    "springMybatis+redis三级缓存框架"是一个高效且灵活的解决方案,它将MyBatis的二级缓存与Redis相结合,形成一个三级缓存体系,以优化数据读取速度并减轻数据库压力。 首先,MyBatis作为一款轻量级的持久层框架,其...

    spring + ehcache + redis两级缓存

    这通常可以通过设置过期时间、缓存更新事件监听器等方式实现。 4. **代码中使用缓存**: 在业务代码中,我们可以使用Spring的`@Cacheable`、`@CacheEvict`和`@CachePut`注解来声明方法的返回结果应被缓存,清除特定...

    基于redis的二级缓存

    1. **数据同步**:一级缓存与二级缓存之间的数据同步是至关重要的。当一级缓存中的数据被修改后,需要及时更新到Redis中,反之亦然。这可以通过监听缓存更新事件并在事件触发时执行同步操作来实现。 2. **缓存穿透*...

    Redis_Redis分布式缓存_

    **Redis数据结构与缓存策略** 1. **数据结构**: Redis支持多种数据结构,如字符串、列表、集合、有序集合和哈希表,这些结构适应各种应用场景。例如,哈希表适合存储对象,列表可以用于消息队列,有序集合用于排行...

    (源码)基于Redis的秒杀与缓存管理系统.zip

    # 基于Redis的秒杀与缓存管理系统 ## 项目简介 本项目是一个基于Redis的秒杀与缓存管理系统,旨在通过Redis的高性能和分布式特性,实现高效的秒杀活动管理和缓存策略。项目涵盖了从缓存更新、缓存穿透、缓存雪崩、...

    mybatis+redis实现二级缓存

    将MyBatis的二级缓存与Redis相结合,可以利用Redis的高速读写能力,提高应用的响应速度。 项目集成Redis的过程通常包括以下步骤: 1. **添加依赖**:在项目的pom.xml文件中,需要添加Redis客户端库(如Jedis)和...

    mybatis+redis缓存配置

    ### MyBatis与Redis缓存配置详解 #### 一、MyBatis缓存机制概述 在MyBatis中,缓存是一项重要的性能优化措施。它能够显著减少数据库的访问次数,提高应用程序的响应速度。MyBatis提供了两种级别的缓存支持:一级...

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

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

    redis多级缓存搭建资料

    保持缓存与数据库的一致性是多级缓存设计的重要考虑因素。常见的一致性模型有强一致性和最终一致性,前者要求每次读取都返回最新数据,后者允许短暂的不一致,但保证最终达到一致。 七、缓存雪崩与穿透 缓存雪崩是...

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

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

    c#使用Redis缓存

    Redis允许设置键的过期时间,确保数据不会永久存储。在C#中,这可以通过`TimeSpan`参数实现: ```csharp db.KeyExpire("key", TimeSpan.FromMinutes(30)); ``` 除了基础操作,Redis还支持发布/订阅(Pub/Sub)模式...

    定时完成Springmvc+mybatis+redis完成二级缓存

    这种方式确保了缓存中的数据始终是最新的,避免了因为缓存过期而带来的数据延迟问题。 项目的实现流程大致如下: 1. **配置Spring MVC**:设置Spring MVC的DispatcherServlet,配置视图解析器,以及MyBatis的...

    Redis缓存+PHPredis 扩展

    - **TTL(Time To Live)**:Redis允许为每个键设置生存时间,到期后键会自动删除。 2. Redis数据类型: - **字符串(String)**:最基本的类型,可存储任何可打印的字符序列。 - **哈希(Hash)**:键值对的...

    Redis系统学习之缓存穿透,缓存击穿,缓存雪崩的概念及其解决方案.docx

    ### Redis系统学习之缓存穿透、缓存击穿与缓存雪崩的概念及其解决方案 #### 缓存穿透 **概念**: 缓存穿透是指在高并发场景下,大量的请求访问了一个既不在缓存中也不在数据库中的数据。这种情况通常发生在非法...

    缓存使用场景,介绍redis/内存等缓存的使用场景,更新策略等

    缓存通常设置成永不过期(当使用内存作为缓存介质),或者设置成一个远大于缓存更新频率的时常(当使用Redis作为缓存介质)。 缓存使用场景非常广泛,括Redis缓存和内存缓存等多种缓存解决方案。不同的缓存解决方案...

    基于Redis的Java Method缓存包.zip

    Redis支持设置过期时间,可以为每个缓存项设定不同的过期时间。也可以使用`TTL`(Time To Live)命令动态更新缓存的生命周期。 6. **缓存失效与更新** - **手动失效**:当数据源(如数据库)中的数据发生变化时,...

    Redis缓存数据库_redis_数据库系统_

    3. 性能调优:根据业务场景调整Redis配置,例如过期策略、最大内存限制等。 综上,Redis在Windows环境下提供了便捷的数据缓存解决方案,其高效、灵活的特点使其在许多场景下成为首选。了解并熟练掌握Redis的使用,...

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

    Java 操作 Redis 缓存设置过期时间是指在 Java 应用程序中使用 Redis 缓存时设置缓存项的过期时间,以便自动删除缓存项。下面将详细介绍 Java 操作 Redis 缓存设置过期时间的方法。 为什么需要设置过期时间 在...

Global site tag (gtag.js) - Google Analytics