当前位置: 首页 > article >正文

整合 RedisTemplate

整合 RedisTemplate

什么是 RedisTemplate ?

RedisTemplate 是 Spring Data Redis 提供的一个模板类,用于简化与 Redis 数据库的常见操作。它封装了与 Redis 交互的底层细节,提供了一套高层次的 API,使得开发人员可以更加方便地进行数据存储、检索和管理操作。

使用它的优势如下:

  • 简化开发RedisTemplate 提供了一套简单易用的 API,封装了底层细节,减少了开发人员的工作量,使得与 Redis 的交互更加直观和高效。
  • 统一接口:提供了统一的接口来操作不同的数据结构,使得代码更加简洁和易读。
  • 强大的配置能力:通过 Spring 的配置文件或注解,开发人员可以轻松配置 RedisTemplate 的各项属性,如序列化方式、连接池配置等。
  • 高性能:支持管道和批量操作,能够极大地提高 Redis 操作的性能,特别是在需要进行大量数据操作时。
  • 扩展性强:可以结合 Spring 的其他功能模块,如 Spring AOP、Spring Security 等,构建更加复杂和功能丰富的应用程序。
  • 可靠的序列化机制:通过配置不同的序列化方式,如 StringRedisSerializerJackson2JsonRedisSerializer 等,确保数据存储和检索的效率和可读性。
  • 与 Spring Boot 的无缝集成:Spring Boot 提供了自动配置,使用 RedisTemplate 变得更加方便,只需简单配置即可使用。

添加依赖

        // 省略...
        
        <!-- Redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <!-- Redis 连接池 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        
        // 省略...

添加配置

spring:
  datasource:
	// 省略...
  data:
    redis:
      database: 0 # Redis 数据库索引(默认为 0)
      host: 127.0.0.1 # Redis 服务器地址
      port: 6379 # Redis 服务器连接端口
      password: qwe123!@# # Redis 服务器连接密码(默认为空)
      timeout: 5s # 读超时时间
      connect-timeout: 5s # 链接超时时间
      lettuce:
        pool:
          max-active: 200 # 连接池最大连接数
          max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
          min-idle: 0 # 连接池中的最小空闲连接
          max-idle: 10 # 连接池中的最大空闲连接    

自定义 RedisTemplate

/config 配置包,并添加 RedisTemplateConfig 配置类

package com.quanxiaoha.xiaohashu.auth.config;

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.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * @author: 犬小哈
 * @date: 2024/4/6 15:51
 * @version: v1.0.0
 * @description: RedisTemplate 配置
 **/
@Configuration
public class RedisTemplateConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        // 设置 RedisTemplate 的连接工厂
        redisTemplate.setConnectionFactory(connectionFactory);

        // 使用 StringRedisSerializer 来序列化和反序列化 redis 的 key 值,确保 key 是可读的字符串
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());

        // 使用 Jackson2JsonRedisSerializer 来序列化和反序列化 redis 的 value 值, 确保存储的是 JSON 格式
        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
        redisTemplate.setValueSerializer(serializer);
        redisTemplate.setHashValueSerializer(serializer);

        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

http://www.kler.cn/a/374297.html

相关文章:

  • 【Hackthebox 中英 Write-Up】Web Request | 分析 HTTP 请求和响应
  • springboot 整合 rabbitMQ (延迟队列)
  • csrf跨站请求伪造(portswigger)无防御措施
  • HTML 元素:网页构建的基础
  • JAVA高并发总结
  • springcloud各个组件介绍
  • 点云处理中的多项式重构、平滑与法线估计
  • Android 托管 Github Action 发布 Github Packages ,实现 Mvn 免费自动化托管
  • 解决 ClickHouse 高可用集群中 VRID 冲突问题:基于 chproxy 和 keepalived 的实践分析
  • leetcode - 684. 冗余连接
  • 硅谷甄选(11)角色管理
  • Axure文本框读取和赋值高级交互
  • 计算机毕业设计PySpark+大模型 bilibili弹幕情感分析 B站视频数据可视化 B站爬虫 机器学习 深度学习 NLP自然语言处理 大数据毕业设计
  • 技术分享 | 大语言模型增强灰盒模糊测试技术探索
  • SMO算法 公式推导
  • 由 GPT 引发的这波「大模型热」将会如何洗牌?
  • 直接内存、死锁、方法句柄
  • 51单片机ALE引脚的作用 - 锁存地址和输出时钟信号并不冲突
  • 大数据-202 数据挖掘 机器学习理论 - 决策树 sklearn 绘制决策树 防止过拟合
  • 在Mac下安装时间序列软件Hector
  • CodeFuse IDE 0.6 版本发布,支持编辑器诊断问题 AI 修复
  • 网上摄影工作室:Spring Boot框架的应用实例
  • @2025考研er,网上确认在即,西电考点(6113)这些问题你必须知道!
  • 【数据库】SQLite DB Browser有关图书商城的增删改查语句笔记
  • apache druid整合hadoop3.3
  • Discourse 是否支持手机注册