springboot使用redis中的lru
时间: 2024-10-01 11:09:58 浏览: 41
Spring Boot 中可以使用 Spring Data Redis 或 Jedis 等库来操作 Redis,并利用其内置的 LRU (Least Recently Used) 算法来管理缓存数据。当 Redis 的缓存空间达到预设容量时,LRU 就会自动移除最久未使用的条目,以便腾出空间存储新的数据。
具体配置和使用步骤如下:
1. 添加依赖:在 `pom.xml` 文件中添加 Spring Data Redis 或 Jedis 的依赖。
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
```
或者
```xml
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
```
2. 配置 Redis:在 `application.properties` 或 `application.yml` 中配置 Redis 的连接信息。
```properties
spring.redis.host=localhost
spring.redis.port=6379
```
3. 使用 LRU 缓存:Spring Data Redis 提供了 `@Cacheable` 注解来标记缓存方法,如果使用 RedisTemplate 直接操作,可以设置 KeyGenerator 来指定基于哪个属性生成 LRU 删除键。
例如:
```java
import org.springframework.data.annotation.Cacheable;
import org.springframework.data.redis.core.RedisTemplate;
@Service
public class MyService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
// 使用 Cacheable 注解并设置 keyGenerator 为 LRU
@Cacheable(value = "myCache", key = "#id", cacheManager = "cacheManager", condition = "#id > 0")
public String getData(int id) {
// 获取数据逻辑...
}
// 另外,如果你使用的是 Spring Data Redis,可以配置缓存管理器
@Bean
public CachingRedisTemplate cachingRedisTemplate(RedisConnectionFactory factory) {
CachingRedisTemplate template = new CachingRedisTemplate(factory);
// 设置 LRU 超过一定大小后开始淘汰缓存
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(5))
.disableCachingNullValues()
.accessCacheEnabled(true)
.evictionPolicy(LRUPolicy.class);
template.setCacheConfigurations(Collections.singletonMap("myCache", config));
return template;
}
}
```
阅读全文