当前位置:首页 > Java

java如何使用redis缓存

2026-03-18 16:47:41Java

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");

存储和获取对象(需序列化):

java如何使用redis缓存

// 使用 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

java如何使用redis缓存

@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)。

分享给朋友:

相关文章

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment 基本…

uniapp中如何使用iconfont

uniapp中如何使用iconfont

使用 Iconfont 在 Uniapp 中的步骤 下载 Iconfont 资源 访问 Iconfont 官网,选择需要的图标并添加到项目。下载时选择 Font class 格式,解压后会得到 .tt…

react thunk 如何使用

react thunk 如何使用

使用 React Thunk 的基本步骤 安装 Redux 和 Redux Thunk 作为依赖项: npm install redux redux-thunk 在 Redux store 配置中应…

react refs如何使用

react refs如何使用

React Refs 的基本概念 Refs 提供了一种直接访问 DOM 节点或 React 组件实例的方式。通常在需要直接操作 DOM 或访问组件方法时使用。 创建 Refs 使用 React.cr…

vue实现图片缓存

vue实现图片缓存

实现图片缓存的方案 在Vue项目中实现图片缓存可以通过多种方式,以下列举几种常见且有效的方法: 使用Service Worker缓存图片 通过注册Service Worker实现离线缓存,利用Cac…

react filter如何使用

react filter如何使用

react filter 的基本用法 在 React 中,filter 通常用于筛选数组数据,常见于列表渲染或数据处理场景。filter 是 JavaScript 数组的原生方法,但在 React 中…