【项目搭建三】SpringBoot引入redis

添加依赖

本文使用spring data redis访问和操作redis,pom文件中加入以下依赖:

XML 复制代码
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-data-redis</artifactId>  
</dependency>

application.yml配置

application.yml中添加以下配置:

bash 复制代码
redis:
  host: 127.0.0.1        # 服务地址
  port: 6379             # 服务端口
  password: gusy1234     # 服务密码
  database: 0            # 数据库索引,默认0
  # 连接池配置,使用lettuce,可选jedis
  lettuce:
    pool:
      max-active: 8        # 连接池最大连接数
      max-idle: 8          # 连接池最大空闲连接数
      max-wait: -1         # 连接池最大阻塞等待时间,负值表示没有限制         
      min-idle: 0          # 连接池最小空闲连接数
  timeout: 1000        # 连接超时时间(毫秒)

**注:**spring data redis中,可以配置lettuce或jedis作为客户端的连接池。springBoot 2.x默认使用的是lettuce。如果你使用jedis作为连接池,需定义一个JedisConnectionFactory注入到RedisTemplate中,但是这种方式在springBoot 2.x中已经过时,不建议使用。

测试用例

使用RedisTemplate操作redis,以下是测试用例:

java 复制代码
@SpringBootTest
class AgedWebApplicationTests {

    @Autowired
    @Qualifier("redisTemplate")
    private RedisTemplate redisTemplate;

    @Test
    public void redisTest() {
        redisTemplate.boundValueOps("testKey").set("testValue");
        System.out.println(redisTemplate.boundValueOps("testKey").get());
    }
}

进入redis desktop manage查看保存结果:

可以看到value显示为二进制,这是由于redisTemplate默认使用jdk序列化导致的,这种方式生成的数据较大,性能较低,且只有Java应用能够反序列化。本文将用fastjson2作为序列化方式。

fastjson2作为序列化方式

pom文件中引入fastjson2:

XML 复制代码
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>2.0.45</version>
</dependency>

增加RedisConfig配置类:

java 复制代码
import com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * redis配置
 *
 * @Author: gusy
 */
@Slf4j
@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
        // 使用Fastjson2序列化器
        GenericFastJsonRedisSerializer redisSerializer = new GenericFastJsonRedisSerializer();
        // 设置 value 的序列化规则和 key 的序列化规则
        template.setValueSerializer(redisSerializer);
        template.setHashValueSerializer(redisSerializer);
        template.setKeySerializer(new StringRedisSerializer());
        template.setHashKeySerializer(new StringRedisSerializer());
        template.afterPropertiesSet();
        log.info("redis自定义配置启动成功!");
        return template;
    }
}

再次执行测试用例,进入redis desktop manage查看结果:

好了,配置完成。

拓展:

java 复制代码
RedisTemplat常用序列化方式:
1、JdkSerializationRedisSerializer:使用Java的序列化功能。这是默认的序列化机制,它使用标准的Java序列化方式。
2、StringRedisSerializer:字符串序列化,用于键(key)和值(value)都是字符串的情况。
3、Jackson2JsonRedisSerializer:使用Jackson库将对象序列化为JSON字符串。同fastjson序列化方式。
4、GenericJackson2JsonRedisSerializer:是Jackson2JsonRedisSerializer的泛型版本,可以方便地序列化多种类型,而不需要为每种类型提供类型信息。
5、GenericToStringSerializer:可以将对象序列化为字符串。
相关推荐
泡海椒1 分钟前
jquick-pdf 核心原理解析:基于 HTML 模板动态渲染 PDF 的实现逻辑
java·开发语言·pdf
Bs_MoneyMagnet10 分钟前
基于springboot+vue的图书馆预约系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·毕业设计·图书管理系统·计算机毕业设计
小蒜学长20 分钟前
基于小程序的绘画作品创作与分享社区系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·绘画作品·创作分享社区
金玉满堂@bj23 分钟前
# Java文件打包成可执行JAR包(两种方式:原生javac\+jar命令 / Maven)
java
RuoyiOffice31 分钟前
SpringBoot3+Vue3 企业级管理平台架构:多租户、RBAC、数据权限、工作流与微服务一次讲透
spring boot·vue3·springboot3·rbac·多租户·数据权限·ruoyi office
事圆则缓31 分钟前
Java 异常、日志与 Android 崩溃定位
java
砍材农夫2 小时前
spring|spring web|拦截器、过滤器、aop
java·spring boot·spring·spring cloud
mldong8 小时前
一个 App,十三套后端:手机审批端 uni-jeeflow-app 开源了
java·架构
tqs_123459 小时前
MySQL RR隔离级别死锁|Gap间隙锁、临键锁,订单并发范围查询死锁根因方案
java
逆境不可逃10 小时前
Pi Agent 学习笔记:多个工具怎样并行执行
java