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);
    }
相关推荐
方白羽3 分钟前
Kotlin遇上Java 静态方法
android·java·kotlin
通往曙光的路上5 分钟前
焚决糟糕篇
java·spring boot·tomcat
h***346317 分钟前
Redis安装教程(Windows版本)
数据库·windows·redis
3***g20520 分钟前
如何使用Spring Boot框架整合Redis:超详细案例教程
spring boot·redis·后端
狂奔小菜鸡35 分钟前
Day18 | 深入理解Object类
java·后端·java ee
jiayong2336 分钟前
Maven NUL文件问题 - 解决方案实施报告
java·maven
未秃头的程序猿37 分钟前
🔒 从单机到分布式:三大锁机制深度剖析与实战指南
java·后端
大猫子的技术日记40 分钟前
[百题重刷]前缀和 + Hash 表:缓存思想, 消除重复计算
java·缓存·哈希算法
s***35301 小时前
Spring Boot3.x集成Flowable7.x(一)Spring Boot集成与设计、部署、发起、完成简单流程
java·spring boot·后端
a***13141 小时前
redis存取list集合
windows·redis·list