java如何使用redis缓存
Java 使用 Redis 缓存的方法
添加 Redis 依赖
在 Maven 项目中,添加 Jedis 或 Lettuce 客户端依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.1</version>
</dependency>
或 Lettuce:
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.2.1.RELEASE</version>
</dependency>
连接 Redis 服务器
使用 Jedis 创建连接:
Jedis jedis = new Jedis("localhost", 6379);
// 验证密码(如果设置了)
jedis.auth("yourpassword");
使用 Lettuce 创建连接:
RedisClient client = RedisClient.create("redis://password@localhost:6379");
StatefulRedisConnection<String, String> connection = client.connect();
基本缓存操作
存储和获取字符串数据:
jedis.set("key", "value");
String value = jedis.get("key");
设置过期时间(秒):
jedis.setex("tempKey", 60, "expiringValue");
存储和获取对象(需序列化):

// 使用 Jackson 序列化
ObjectMapper mapper = new ObjectMapper();
String userJson = mapper.writeValueAsString(user);
jedis.set("user:1", userJson);
// 反序列化
String json = jedis.get("user:1");
User user = mapper.readValue(json, User.class);
使用连接池
Jedis 连接池配置:
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(128);
try (JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379)) {
try (Jedis jedis = jedisPool.getResource()) {
jedis.set("pooledKey", "pooledValue");
}
}
Spring Boot 集成 Redis
添加 Spring Data Redis 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置 application.properties:
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=yourpassword
使用 RedisTemplate:

@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void saveUser(User user) {
redisTemplate.opsForValue().set("user:" + user.getId(), user);
}
public User getUser(String id) {
return (User) redisTemplate.opsForValue().get("user:" + id);
}
缓存注解
在 Spring Boot 中使用 @Cacheable:
@Cacheable(value = "users", key = "#id")
public User findUserById(String id) {
// 数据库查询逻辑
}
清除缓存:
@CacheEvict(value = "users", key = "#id")
public void deleteUser(String id) {
// 删除逻辑
}
高级功能
使用 Redis 发布/订阅:
jedis.subscribe(new JedisPubSub() {
@Override
public void onMessage(String channel, String message) {
System.out.println("Received: " + message);
}
}, "channel");
Lua 脚本执行:
String script = "return redis.call('get', KEYS[1])";
Object result = jedis.eval(script, 1, "key");
注意事项
- 确保 Redis 服务器已启动并允许远程连接(如需要)。
- 生产环境建议使用连接池管理资源。
- 敏感信息避免明文存储,考虑加密或哈希处理。
- 大量数据存储时注意内存限制,可配置淘汰策略(如 LRU)。





