SpringDataRedis快速入门

SpringDataRedis

什么是SpringDataRedis

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis

SpringDataRedis中提供了RedsiTemplate工具类,其中封装了各种对Redis的操作。并且将不同数据类型的操作API封装到了不同的类中

基于SpringBoot使用

1.引入依赖

复制代码
  <!--添加 redis 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

2.配置yml文件

复制代码
spring:
  redis:
    host: 你的虚拟机ip
    port: 端口号
    password: 你的redis密码
    lettuce:
      pool:
        max-active: 8 #最大连接
        max-idle: 8 #最大空闲连接
        min-idle: 0 #最小空闲连接
        max-wait: 100ms #连接等待时间

3.注入RedisTemolate

java 复制代码
 @Autowired
    RedisTemplate redisTemplate;

4.编写测试

java 复制代码
@SpringBootTest
public class RedisDemoApplicationTests {

    @Autowired
    RedisTemplate redisTemplate;

    @Test
    void Test(){
        //写入一条String数据
        redisTemplate.opsForValue().set("name","你好");
        //获取String数据
        Object res = redisTemplate.opsForValue().get("name");
        System.out.println(res);
    }
}

redistemplate默认将key和value当作java对象,会自动将key和value序列化

我们可以自定义RedisTemplate的序列化方式

java 复制代码
@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){
        //创建RedisTemplate对象
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        //设置连接工厂
        template.setConnectionFactory(connectionFactory);
        //创建JSON序列化工具
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
        //设置Key的序列化
        template.setKeySerializer(RedisSerializer.string());
        template.setHashKeySerializer(RedisSerializer.string());
        //设置Value的序列化
        template.setValueSerializer(jsonRedisSerializer);
        template.setHashKeySerializer(jsonRedisSerializer);
        //返回
        return template;
    }
}

为了节省内存空间,我们不会使用JSON序列化器来处理value,而是统一使用String序列化器,要求只能存储String类型的key和value。当要存储Java对象时,手动完成对对象的序列化和反序列化

Spring默认提供了一个StringRedisTemplate类,它的key和value的序列化方式默认就是String方式。省去了我们自己定义RedisTemplate的过程:

java 复制代码
@SpringBootTest
public class RedisStringTest {

    @Autowired
    StringRedisTemplate stringRedisTemplate;
    //JSON工具
    private static final ObjectMapper mapper = new ObjectMapper();

    @Test
    void testUser() throws JsonProcessingException {
        User user = new User("小张",16);
        //将对象序列化后存入
        stringRedisTemplate.opsForValue().set("user1", mapper.writeValueAsString(user));
        String user1 = stringRedisTemplate.opsForValue().get("user1");
        //将取出的字符串反序列化
        User user2 = mapper.readValue(user1, User.class);
        System.out.println(user2.getName()+":"+user2.getAge());
    }
}

使用hash类型

java 复制代码
@Test
    void testHash(){
        stringRedisTemplate.opsForHash().put("user:200","name","小张");
        stringRedisTemplate.opsForHash().put("user:200","age","16");
        Map<Object, Object> entries = stringRedisTemplate.opsForHash().entries("user:200");
        System.out.println(entries);
    }
相关推荐
码智社17 分钟前
Redis 哨兵模式详解:从原理到生产实践
java·redis
救救孩子把25 分钟前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务
silvamux_43 分钟前
微头条爆款体平台适配实测:把交付要求变成可计算的指标
java·线性代数·算法·决策树·矩阵
论文复现现场43 分钟前
DeepSeek V4.1 Flash 和 V4 Pro 有什么区别?API 价格、性能与迁移建议
java·服务器·人工智能·python·大模型api·deepseek·deepseek v4.1
郭小李1 小时前
转发与重定向
java·服务器·数据库
你看我名字1 小时前
数眼智能 Search + Reader 实战:联网问答怎样避免“搜到了,却引用错了”
android·java·开发语言
MetaLite2 小时前
Spring Boot 加了 @Valid,嵌套参数为什么还没校验?
java·spring boot·后端
半杯咖啡半行码2 小时前
QML与 Qt Quick入门实战:从零基础到 C++ 双向通信详解
java·qt·交互
霸道流氓气质2 小时前
Lingua 语言检测库:n-gram 统计模型、置信度阈值调优与 Spring Boot 分层检测管道的生产级实战
java·spring boot·后端
文丑颜不良啊2 小时前
LeetCode1281~1300题目解析
java·leetcode