SpringDataRedis

SpringDataRedis

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis,官网地址:https://spring.io/projects/spring-data-redis

  • l提供了对不同Redis客户端的整合(Lettuce和Jedis)
  • l提供了RedisTemplate统一API来操作Redis
  • 支持基于JDK、JSON、字符串、Spring对象的数据序列化及反序列化

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

API 返回值类型 说明
redisTemplate.opsForValue() ValueOperations 操作String类型数据
redisTemplate.opsForHash() HashOperations 操作Hash类型数据
redisTemplate.opsForList() ListOperations 操作List类型数据
redisTemplate.opsForSet() SetOperations 操作Set类型数据
redisTemplate.opsForZSet() ZSetOperations 操作SortedSet类型数据
redisTemplate 通用的命令

使用步骤

SpringBoot已经提供了对对SpringDataRedis的支持,直接引入依赖

<!--Redis依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--连接池依赖-->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

编写配置文件

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: 123456
    lettuce:
      pool:
        max-active: 8 # 最大连接
        max-idle: 8 # 最大空闲连接
        min-idle: 0 # 最小空闲连接
        max-wait: 100 # 连接等待时间

StringRedisTemplate注入即可使用

@SpringBootTest
public class ShopTest {
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Test
    void demo() {
        redisTemplate.opsForValue().set("key","value");
    }
}

注意事项

RedisTemplate可以接收任意Object作为值写入Redis,只不过写入前会把Object序列化为字节形式,默认是采用JDK序列化,得到的结果是这样的:

在这里插入图片描述

这样存存入的数据毫无可读性,且占用内存

RedisTemplate的序列化器,如过在创建时没有指定就会使用默认的序列化器,也就是JDK的序列化器

在这里插入图片描述

在这里插入图片描述

JDK的底层序列化器是直接把Java对象转成字节的形式存储到Redis中,可读性差,且占用内存。

所以我们就需要改变RedisTemplate的Serializer,

@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
    // 创建Template   
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
    // 设置连接工厂
    redisTemplate.setConnectionFactory(redisConnectionFactory);
    // 设置序列化工具
    GenericJackson2JsonRedisSerializer jsonRedisSerializer = 
        new GenericJackson2JsonRedisSerializer();
    // key和 hashKey采用 string序列化   
    redisTemplate.setKeySerializer(RedisSerializer.string()); 	   redisTemplate.setHashKeySerializer(RedisSerializer.string());
    // value和 hashValue采用 JSON序列化    
    redisTemplate.setValueSerializer(jsonRedisSerializer);    redisTemplate.setHashValueSerializer(jsonRedisSerializer);
        return redisTemplate;
}


相关推荐

  1. Redis—SpringDataRedis

    2024-04-04 04:52:02       27 阅读
  2. SpringDataRedis 基本使用

    2024-04-04 04:52:02       31 阅读
  3. SpringBoot项目配置SpringDataRedis

    2024-04-04 04:52:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 04:52:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 04:52:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 04:52:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 04:52:02       20 阅读

热门阅读

  1. c++day6

    c++day6

    2024-04-04 04:52:02      14 阅读
  2. Stable Diffusion的微调方法详解

    2024-04-04 04:52:02       14 阅读
  3. 【linux】sed的用法

    2024-04-04 04:52:02       12 阅读
  4. LeetCode 27.移除元素

    2024-04-04 04:52:02       14 阅读
  5. 【c++基础】数池塘(八方向)

    2024-04-04 04:52:02       16 阅读
  6. 4/4 清明work

    2024-04-04 04:52:02       13 阅读
  7. 什么是设计模式?使用英雄联盟来介绍设计模式

    2024-04-04 04:52:02       16 阅读
  8. “八皇后”问题——回溯+深搜

    2024-04-04 04:52:02       17 阅读
  9. 程序员的前景和未来

    2024-04-04 04:52:02       13 阅读