第十一章:SpringBoot2.3.0 集成Redis详解

    技术2022-07-11  67

    一)Redis简介

    Redis是一个缓存,消息代理和功能丰富的键值存储,NOSQL数据库。

    SpringBoot支持的Redis驱动类:

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

     

    二)Redis参数配置

    必须配置参数:

    spring: redis: database: 0 url: host: localhost password: port: 6379 timeout: 5000

    如需增加其它可选配置,可按照下面步骤查看SpringBoot支持的配置。

    第一步:在引入Jar中找到,对应的spring-boot-autoconfigure*.jar包,比如:spring-boot-autoconfigure-2.3.0.RELEASE.jar。

    第二步:在Jar包中找到org.springframework.boot.autoconfigure.data.redis包。

    第三步:找到RedisProperties.java配置类,该类中包含了所有的Redis配置。

    几乎所有集成的第三方Jar,都能在spring-boot-autoconfigure*.jar包查找到。

     

    三)SpringBoot Redis注入方式

    第一种:注入RedisTemplate类。

    第二种:注入StringRedisTemplate类,该类也是继承了RedisTemplate类,重写了Redis Key Value存储序列化方式。

    第三种:自定义类,继承RedisTemplate类,重写键值的序列化方式即可。

    RedisTemplate和StringRedisTemplate类不同点:RedisTemplate默认采用JDK内置序列化方式StringRedisTemplate采用了字符串序列化方式

     

    SpringBoot自带Redis键值序列化方式:

     

    自定义Redis键值序列化方式:

    /** * 自定义Redis key value序列化方式 * @param connectionFactory * @return */ @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>(); redisTemplate.setConnectionFactory(connectionFactory); // 字符串key序列化方式 redisTemplate.setKeySerializer(RedisSerializer.string()); // 字符串value序列化方式 redisTemplate.setValueSerializer(RedisSerializer.string()); // Hash key序列化方式 redisTemplate.setHashKeySerializer(RedisSerializer.string()); // Hash value序列化方式 redisTemplate.setHashValueSerializer(RedisSerializer.string()); // 设置序列化方式, 前面只是声明, 该方法才实际注入序列化方式 redisTemplate.afterPropertiesSet(); return redisTemplate; }

     

    四)SpringBoot Redis操作

    Redis常用数据类型:String数据类型、List链表数据类型、Hash哈希数据类型、Set无序列表数据类型、ZSet有序列表数据类型

    package com.oysept.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.concurrent.TimeUnit; /** * Redis Properties配置可在,spring-boot-autoconfigure*.jar下org.springframework.boot.autoconfigure.data.redis包RedisProperties类中查看 * @author ouyangjun */ @RestController @RequestMapping(value = "/redis") public class RedisController { @Autowired private StringRedisTemplate stringRedisTemplate; // http://localhost:8080/redis/test @RequestMapping(value = "/test") public String test() { // 字符串操作, 设置有效时间为10分钟 stringRedisTemplate.opsForValue().set("myStr", "myStrValue", 10, TimeUnit.MINUTES); // List链表操作 stringRedisTemplate.opsForList().rightPush("myList", "myListValue"); // Hash哈希操作 stringRedisTemplate.opsForHash().put("myHash", "key1", "value1"); // Set无序列表操作 stringRedisTemplate.opsForSet().add("mySet", "value1", "value2"); // ZSet有序列表操作 stringRedisTemplate.opsForZSet().add("myZSet", "value1", 100D); // 返回值 return "SUCCESS"; } }

    Redis效果图:

     

    识别二维码关注个人微信公众号

    本章完结,待续,欢迎转载!   本文说明:该文章属于原创,如需转载,请标明文章转载来源!

    Processed: 0.011, SQL: 9