当前位置:首页 > 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 基本…

vue怎么实现路由缓存

vue怎么实现路由缓存

Vue 实现路由缓存的方法 使用 <keep-alive> 组件 在 Vue 中,可以通过 <keep-alive> 组件实现路由缓存。该组件会缓存不活动的组件实例,避免重复渲…

vue如何实现路由缓存

vue如何实现路由缓存

Vue 路由缓存的实现方法 在 Vue 项目中,可以通过 keep-alive 组件和路由配置实现页面缓存,避免重复渲染和提升性能。 使用 keep-alive 包裹路由视图 在 App.vue 或…

react dnd如何使用

react dnd如何使用

React DnD 使用指南 React DnD(Drag and Drop)是一个用于在 React 应用中实现拖放功能的库。它基于 HTML5 的拖放 API,提供了更高级的抽象和更好的 Reac…

react如何使用dispatch

react如何使用dispatch

使用 useDispatch 钩子 在函数组件中,通过 react-redux 提供的 useDispatch 钩子获取 dispatch 函数。引入 useDispatch 后直接调用即可:…

react如何使用sass

react如何使用sass

安装 Sass 依赖 在 React 项目中安装 sass 作为开发依赖: npm install sass --save-dev 或使用 Yarn: yarn add sass --dev 创建…