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的...
"springMybatis+redis三级缓存框架"是一个高效且灵活的解决方案,它将MyBatis的二级缓存与Redis相结合,形成一个三级缓存体系,以优化数据读取速度并减轻数据库压力。 首先,MyBatis作为一款轻量级的持久层框架,其...
这通常可以通过设置过期时间、缓存更新事件监听器等方式实现。 4. **代码中使用缓存**: 在业务代码中,我们可以使用Spring的`@Cacheable`、`@CacheEvict`和`@CachePut`注解来声明方法的返回结果应被缓存,清除特定...
1. **数据同步**:一级缓存与二级缓存之间的数据同步是至关重要的。当一级缓存中的数据被修改后,需要及时更新到Redis中,反之亦然。这可以通过监听缓存更新事件并在事件触发时执行同步操作来实现。 2. **缓存穿透*...
**Redis数据结构与缓存策略** 1. **数据结构**: Redis支持多种数据结构,如字符串、列表、集合、有序集合和哈希表,这些结构适应各种应用场景。例如,哈希表适合存储对象,列表可以用于消息队列,有序集合用于排行...
# 基于Redis的秒杀与缓存管理系统 ## 项目简介 本项目是一个基于Redis的秒杀与缓存管理系统,旨在通过Redis的高性能和分布式特性,实现高效的秒杀活动管理和缓存策略。项目涵盖了从缓存更新、缓存穿透、缓存雪崩、...
将MyBatis的二级缓存与Redis相结合,可以利用Redis的高速读写能力,提高应用的响应速度。 项目集成Redis的过程通常包括以下步骤: 1. **添加依赖**:在项目的pom.xml文件中,需要添加Redis客户端库(如Jedis)和...
### MyBatis与Redis缓存配置详解 #### 一、MyBatis缓存机制概述 在MyBatis中,缓存是一项重要的性能优化措施。它能够显著减少数据库的访问次数,提高应用程序的响应速度。MyBatis提供了两种级别的缓存支持:一级...
仿redis缓存Java版轻量级缓存组件LocalCache,基于JVM内存实现数据缓存及过期机制
保持缓存与数据库的一致性是多级缓存设计的重要考虑因素。常见的一致性模型有强一致性和最终一致性,前者要求每次读取都返回最新数据,后者允许短暂的不一致,但保证最终达到一致。 七、缓存雪崩与穿透 缓存雪崩是...
Redis缓存穿透、缓存击穿、缓存雪崩面试题解析 Redis缓存穿透、缓存击穿、缓存雪崩是Redis中的三个重要概念,它们都是Redis缓存机制中可能出现的错误或问题。下面我们将详细解析这三个概念,并提供相应的解决方案。...
Redis允许设置键的过期时间,确保数据不会永久存储。在C#中,这可以通过`TimeSpan`参数实现: ```csharp db.KeyExpire("key", TimeSpan.FromMinutes(30)); ``` 除了基础操作,Redis还支持发布/订阅(Pub/Sub)模式...
这种方式确保了缓存中的数据始终是最新的,避免了因为缓存过期而带来的数据延迟问题。 项目的实现流程大致如下: 1. **配置Spring MVC**:设置Spring MVC的DispatcherServlet,配置视图解析器,以及MyBatis的...
- **TTL(Time To Live)**:Redis允许为每个键设置生存时间,到期后键会自动删除。 2. Redis数据类型: - **字符串(String)**:最基本的类型,可存储任何可打印的字符序列。 - **哈希(Hash)**:键值对的...
### Redis系统学习之缓存穿透、缓存击穿与缓存雪崩的概念及其解决方案 #### 缓存穿透 **概念**: 缓存穿透是指在高并发场景下,大量的请求访问了一个既不在缓存中也不在数据库中的数据。这种情况通常发生在非法...
缓存通常设置成永不过期(当使用内存作为缓存介质),或者设置成一个远大于缓存更新频率的时常(当使用Redis作为缓存介质)。 缓存使用场景非常广泛,括Redis缓存和内存缓存等多种缓存解决方案。不同的缓存解决方案...
Redis支持设置过期时间,可以为每个缓存项设定不同的过期时间。也可以使用`TTL`(Time To Live)命令动态更新缓存的生命周期。 6. **缓存失效与更新** - **手动失效**:当数据源(如数据库)中的数据发生变化时,...
3. 性能调优:根据业务场景调整Redis配置,例如过期策略、最大内存限制等。 综上,Redis在Windows环境下提供了便捷的数据缓存解决方案,其高效、灵活的特点使其在许多场景下成为首选。了解并熟练掌握Redis的使用,...
Java 操作 Redis 缓存设置过期时间是指在 Java 应用程序中使用 Redis 缓存时设置缓存项的过期时间,以便自动删除缓存项。下面将详细介绍 Java 操作 Redis 缓存设置过期时间的方法。 为什么需要设置过期时间 在...