SpringBoot集成Redis

导读:本篇文章讲解 SpringBoot集成Redis,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

概述

Reids面向Java推出了Jedis,提供了与Redis命令对应封装的API,可以在Reids官网下载。

spring-data-redis提供了在spring中通过简单的配置去访问Redis服务。
对Redis底层开发包进行了高度封装,其中的RedisTemplate提供了Redis的各种操作。

spring-data-redis针对Jedis提供了这些功能:

  1. 连接池自动管理,提供了高度封装了RedisTemplate
  2. 将同一数据类型的操作封装为operation接口
    operation接口:
    • ValueOperations:简单的K-V操作
    • HashOperations:map类型操作
    • ListOperations:list类型操作
    • SetOperations:set类型操作
    • ZSetOperations:zset 类型操作
  3. 针对数据的序列化反序列化,提供了多种可选择的策略(RedisSerializer)
    1. JdkSerializationRedisSerializer
      POJO对象(实体类)存储取出使用JDK本身的序列化机制

    2. StringRedisSerializer
      K 或 V 为string的场景,根据指定的编码格式charset将字节序列转为字符串
      new String(bytes, charset)string.getBytes(charset)的封装
      是最轻量级和高效的策略

    3. JacksonJsonRedisSerializer
      jackson-json可以将实体类JSON格式互相转换,存储在Redis中

搭建

1. 添加Reids依赖

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

2. 配置Redis信息

spring:
  redis: # redis配置
    host: 122.112.196.221   # 服务器地址
    port: 6379              # Redi端口6379
    password: 123           # 在redis.conf里设置密码
    database: 0             # 选择一个数据库:0~15,默认使用0
    pool:
      max-active: 8         # 连接池最大连接数(使用负值表示没有限制)
      max-wait: -1ms        # 连接池最大阻塞等待时间(使用负值表示没有限制)
      max-idle: 8           # 连接池中的最大空闲连接
      min-idle: 0           # 连接池中的最小空闲连接
      timeout: 10000ms      # 连接超时时间(毫秒),取值范围为0~100000。默认值为0,表示无限制。

3. 注入RedisTemplate

@Autowired 
RedisTemplate redisTemplate;

4. 测试

新增,查询,删除

	@Autowired
    RedisTemplate redisTemplate;

    @Test
    void contextLoads() {
        //System.out.println(user);
        ValueOperations operations = redisTemplate.opsForValue();
        operations.set("name", "jim");//序列化为json格式 list对象
        Admin admin = new Admin();
        admin.setId(1);
        admin.setAccount("admin");
        admin.setPassword("123");
        operations.set("admin"+admin.getId(),admin,100, TimeUnit.MICROSECONDS);
        System.out.println("has: "+redisTemplate.hasKey("admin1"));
        System.out.println("admin1: "+operations.get("admin1"));
        System.out.println("name: "+operations.get("name"));
        System.out.println(redisTemplate.delete("admin1"));
        System.out.println(redisTemplate.delete("name"));

    }

在这里插入图片描述
序列化
序列化配置类

@Configuration
public class RedisConfig {//不让redis进行转码(会乱码)

    /**
     * 序列化 键:值
     * @param connectionFactory  是LettuceConnectionFactory的实例
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);
        //实体对象与json格式相互转换的序列化器
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
        //key-value为string的序列化器
        StringRedisSerializer redisSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(redisSerializer);
        redisTemplate.setHashKeySerializer(redisSerializer);
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        return redisTemplate;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15585.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!