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);
    }
相关推荐
customer086 小时前
【开源免费】基于SpringBoot+Vue.JS体育馆管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
Miketutu7 小时前
Spring MVC消息转换器
java·spring
乔冠宇7 小时前
Java手写简单Merkle树
java·区块链·merkle树
LUCIAZZZ8 小时前
简单的SQL语句的快速复习
java·数据库·sql
komo莫莫da9 小时前
寒假刷题Day19
java·开发语言
S-X-S9 小时前
算法总结-数组/字符串
java·数据结构·算法
linwq89 小时前
设计模式学习(二)
java·学习·设计模式
桦说编程10 小时前
CompletableFuture 超时功能有大坑!使用不当直接生产事故!
java·性能优化·函数式编程·并发编程
@_@哆啦A梦10 小时前
Redis 基础命令
java·数据库·redis
字节全栈_rJF11 小时前
性能测试 —— Tomcat监控与调优:status页监控_tomcat 自带监控
java·tomcat