当前位置: 首页 > article >正文

Redis 学习总结(2) Java 操作 Redis 的示例

1. 背景

在 java 开发中集成 redis。

我们用到 Spring Data Redis 。

2.知识

Spring Data Redis 是更大的 Spring Data 系列的一部分,它提供了从 Spring 应用程序对 Redis 的轻松配置和访问。

它支持 两种 Redis 驱动程序:

  • Lettuce
  • Jedis

Spring Data Redis 实现了对底层的抽象, 无论是那一种驱动,使用起来是一样的。

3. 示例

3.1 导入依赖包

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

3.2 配置数据源

在配置文件 application.yml 里:

spring:
  redis:
    host: localhost
    port: 6379
    password: 123456
    database: 0

3.3 配置一个 RedisTemplate 对象

Springboot 强大的自动化配置会把 RedisConnectionFactory 对象配置好,直接用就好了。它会按 上一步的配置文件的参数配置好数据源。

RedisTemplate 是Spring 的模板方法,提供了对 redis 的抽象,我们注入一个配置,后续就可以自动装载了。

@Configuration
public class RedisConfig {


    /**
     * 通过 Spring 注入 一个 RedisTemplate
     *
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        StringRedisTemplate redisTemplate = new StringRedisTemplate();
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer());
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }

    /**
     * 注入一个 json 序列化转换器
     *
     * @return
     */
    @Bean
    public Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        return jackson2JsonRedisSerializer;
    }

}

3.3 可以使用自动装载了

    @Autowired
    private RedisTemplate redisTemplate;

代码使用:

ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
final String KEY = String.format("users:%s", id);
String result = valueOperations.get(KEY);

4. 扩展

4.1 可以操作 hash结构

写入:

 // 同时按 email 存一个id 的引用
final String KEY_MAIL = "users:by:email";
HashOperations<String, String, String> hashOperations = redisTemplate.opsForHash();
hashOperations.put(KEY_MAIL, email, result.getId() + "");

读取:

final String KEY_MAIL = "users:by:email";
HashOperations<String, String, String> hashOperations = redisTemplate.opsForHash();
String id = hashOperations.get(KEY_MAIL, email);
if (id != null) {
    return getEntity(Integer.parseInt(id));
}
return null;

5.附录

我的代码示例:https://github.com/vir56k/java_demo/tree/master/springboot_redis_demo

6.参考:

https://spring.io/projects/spring-data-redis#overview
https://docs.spring.io/spring-data/redis/docs/2.5.3/reference/html/#reference

最后编辑于:2025-02-24 20:47:13


喜欢的朋友记得点赞、收藏、关注哦!!!


http://www.kler.cn/a/569263.html

相关文章:

  • 华为开源自研AI框架昇思MindSpore应用案例:基于MindSpore框架实现one-stage目标检测模型SSD
  • Rust语言基础知识详解【四】
  • 【Golang学习之旅】Go-zero + GORM:微服务架构中的 ORM 与数据库操作
  • Dify使用和入门
  • FPGA开发,使用Deepseek V3还是R1(7):以“FPGA的整体设计框架”为例
  • LLMR//https://github.com/microsoft/llmr?locale=zh-cn
  • vue3:四嵌套路由的实现
  • ARM Linux LCD上实时预览摄像头画面
  • Android Activity栈关系解析
  • 【弹性计算】弹性裸金属服务器和神龙虚拟化(二):适用场景
  • 深度学习pytorch之4种归一化方法(Normalization)原理公式解析和参数使用
  • Aria Gen 2来了!AI感知、机器人、可穿戴计算的新突破
  • 基于51单片机超声波测量报警LCD1602显示( proteus仿真+程序+设计报告+讲解视频)
  • C++STL---<limits>
  • 【Redis学习】Redis Docker安装,自定义config文件(包括RDB\AOF setup)以及与Spring Boot项目集成
  • Github 仓库 git clone 速度过慢解决方案
  • Spring Cloud GateWay搭建
  • C++中的“结界”机制:作用域与变量可见性探秘
  • 使用cmake preset + vs2022构建Qt C++项目
  • Composer如何通过GitHub Personal Access Token安装私有包:完整教程