Spring Boot 中的 Redis 的数据操作配置和使用

Spring Boot 中的 Redis 的数据操作配置和使用

Redis 是一种高性能的 NoSQL 数据库,它支持多种数据结构,包括字符串、哈希、列表、集合和有序集合。Redis 还提供了丰富的命令,可以对数据进行快速的 CRUD 操作。Spring Boot 是一个基于 Spring 的快速开发框架,它提供了对 Redis 的集成支持。在本文中,我们将介绍如何在 Spring Boot 应用程序中配置和使用 Redis 的数据操作。

在这里插入图片描述

Redis 简介

Redis 是一款开源的高性能键值存储系统,它支持多种数据结构,包括字符串、哈希、列表、集合和有序集合。Redis 的优势在于其快速的读写速度和高效的内存管理,使其成为一个非常适合缓存和数据存储的工具。Redis 还提供了事务处理、发布订阅、Lua 脚本等丰富的功能,使其成为一个非常灵活的数据库。

Spring Boot 中的 Redis 数据操作

Spring Boot 提供了对 Redis 的支持,可以通过 Spring Data Redis 来进行数据操作。Spring Data Redis 是一个基于 Spring Data 的模块,提供了对 Redis 的集成支持。它可以通过注解或者 XML 文件来配置 Redis 的数据访问。

配置 Redis 连接池

在 Spring Boot 应用程序中使用 Redis,首先需要配置 Redis 的连接池。可以使用 Spring Boot 自带的 Lettuce 连接池,也可以使用 Jedis 连接池。这里我们选择使用 Lettuce 连接池。

@Configuration
public class RedisConfig {@Value("${spring.redis.host}")private String host;@Value("${spring.redis.port}")private int port;@Value("${spring.redis.password}")private String password;@Value("${spring.redis.timeout}")private int timeout;@Beanpublic LettuceConnectionFactory lettuceConnectionFactory() {RedisStandaloneConfiguration redisConfiguration = new RedisStandaloneConfiguration(host, port);redisConfiguration.setPassword(RedisPassword.of(password));return new LettuceConnectionFactory(redisConfiguration);}@Beanpublic RedisTemplate<String, Object> redisTemplate() {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(lettuceConnectionFactory());template.setDefaultSerializer(new Jackson2JsonRedisSerializer<>(Object.class));return template;}
}

在上面的代码中,我们定义了一个 RedisConfig 类,通过 @Value 注解读取配置文件中的 Redis 主机、端口、密码和超时时间。然后通过 LettuceConnectionFactory 创建 Redis 连接工厂,并将其注入到 Spring 容器中。在 RedisTemplate 中,我们定义了默认的序列化器为 Jackson2JsonRedisSerializer,这样我们就可以直接将 Java 对象序列化为 JSON 存储到 Redis 中。

数据操作示例

在 Spring Boot 应用程序中使用 Redis,可以通过 RedisTemplate 进行数据操作。下面是一个数据操作的示例代码。

@Service
public class UserService {private static final String KEY_USER = "user";@Autowiredprivate RedisTemplate<String, Object> redisTemplate;public void save(User user) {redisTemplate.opsForHash().put(KEY_USER, user.getId(), user);}public void delete(String id) {redisTemplate.opsForHash().delete(KEY_USER, id);}public User findById(String id) {return (User) redisTemplate.opsForHash().get(KEY_USER, id);}public List<User> findAll() {return redisTemplate.opsForHash().values(KEY_USER).stream().map(obj -> (User) obj).collect(Collectors.toList());}
}

在上面的代码中,我们定义了一个 UserService 类,使用 @Autowired 注解注入了 RedisTemplate。在该类中,我们定义了一些数据操作方法,如 save、delete、findById 和 findAll 等。这些方法直接调用 RedisTemplate 中封装的基本数据操作方法。

使用 Redis 注解

除了使用 RedisTemplate 进行数据操作外,Spring Data Redis 还提供了一些注解来简化数据操作。这些注解包括@Cacheable、@CachePut、@CacheEvict 和 @RedisHash 等。下面是一个使用 @Cacheable 注解的示例代码。

@Service
public class UserService {@Autowiredprivate UserRepository userRepository;@Cacheable(value = "user", key = "#id")public User findById(String id) {return userRepository.findById(id).orElse(null);}
}

在上面的代码中,我们使用了 @Cacheable 注解来缓存 findById 方法的结果。这样,当下次调用 findById 方法时,如果传入的 id 值和之前查询的 id 值相同,则直接从缓存中获取结果,不需要再次执行数据库查询操作。

总结

本文介绍了在 Spring Boot 应用程序中配置和使用 Redis 的数据操作。首先,我们使用 Lettuce 连接池配置了 Redis 的连接。然后,我们使用 RedisTemplate 进行了基本的数据操作,包括 put、get、delete 和 values 等。最后,我们介绍了使用 @Cacheable 注解来简化数据操作的方法。通过本文的介绍,读者可以快速上手使用 Redis 进行数据存储和缓存。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机智能加湿器 水位防干烧加湿器的设计与实现

功能介绍 以51/STM32单片机作为主控系统&#xff1b;LCD1602液晶显示当前温湿度&#xff0c;当前模式&#xff0c;湿度下限;按键设置湿度下限&#xff0c;当湿度低于下限时开启加湿器;水位传感器检查加湿器是否有水&#xff0c;如果没有水到话加湿器不进行工作&#xff0c;蜂鸣…

怎么用PDF24 Tools工具在线进行PDF文件合并

PDF文件是经常会被用到&#xff0c;它在我们的日常生活和工作中扮演着重要的角色。PDF文件合并是将多个PDF文件合并为单个文件&#xff0c;这个过程通常是为了方便管理多个PDF文件&#xff0c;或者将多个PDF文件合并为一个整体以便于共享或打印。既然如此&#xff0c;如何快速合…

kotlin forEach循环return/break

kotlin forEach循环return/break fun main(args: Array<String>) {var a mutableListOf("0", "1", "2", "3", "4")var b mutableListOf<String>()a.forEachIndexed { index, s ->if (index > 2) {retu…

【Mac使用笔记】之 Homebrew

Homebrew更新&#xff1a; brew update && brew upgrade 当出现错误&#xff1a; fatal: couldnt find remote ref refs/heads/master 执行&#xff1a; brew tap --repair Ruby安装&#xff1a; 1、查看当前Homebrew版本&#xff1a; brew --version2、查看当前…

libbpf-bootstrap 开发指南:概念与如何安装

目录 概念 如何安装& 使用 git 地址 使用git clone 下载代码 安装依赖环境 安装libbpf 编译example 概念 libbpf-bootstrap 是一个项目&#xff0c;旨在帮助开发者快速启动和开发使用 eBPF (Extended Berkeley Packet Filter) 和 libbpf 的程序。eBPF 是一种可以在…

TTX1994-可调谐激光器控制系统

花了两周时间&#xff0c;利用下班时间&#xff0c;设计了一个ITLA可调谐激光器控制系统&#xff0c;从硬件到软件。下面这个图片整套硬件系统&#xff0c;软件硬件都自己设计&#xff0c;可以定制&#xff0c;做到单片机问题也不大。相当于一套光源了 这是软件使用的界面&…

Kafka 概述、Filebeat+Kafka+ELK

Kafka 概述、FilebeatKafkaELK 一、为什么需要消息队列&#xff08;MQ&#xff09;1、使用消息队列的好处2、消息队列的两种模式 二、Kafka 定义1、Kafka 简介2、Kafka 的特性3、Kafka 系统架构 三、部署 kafka 集群1.下载安装包2.安装 Kafka3.Kafka 命令行操作 四、Kafka 架构…

基于linux串口实现语音刷抖音

目录 1.开发逻辑图及模块 2.编程实现语音和开发板通信 3.手机接入Linux热拔插相关,打开手机开发者模式允许USB调试 4.用shell指令来操作手机屏幕&#xff0c;模拟手动滑屏幕 5.最终主程序代码 1.开发逻辑图及模块 逻辑图&#xff1a; 模块 &#xff08;1&#xff09;语音…

运维小知识(二)——Linux大容量磁盘分区及挂载

centos系统安装&#xff1a;链接 目录 1.&#x1f353;&#x1f353;命令格式化磁盘 2.&#x1f353;&#x1f353;大容量硬盘分区 3.&#x1f353;&#x1f353;自动挂载 整理不易&#xff0c;欢迎一键三连&#xff01;&#xff01;&#xff01; 新系统装完之后&#xff0…

C语言图书管理系统

一&#xff0c;开发环境 操作系统&#xff1a;windows10, windows11, linux, mac等。开发工具&#xff1a;Qt, vscode, visual studio等开发语言&#xff1a;c 二&#xff0c;功能需求 1. 图书信息管理&#xff1a; 这个功能的主要任务是保存和管理图书的所有信息。这应该包…

数据库多表查询作业

数据库多表查询作业 创建数据库 插入数据 mysql> insert into student values(901,张老大,男,1985,计算机系,北京市海淀区),-> (902,张老二,男,1986,中文系,北京市昌平市),-> (903,张三,女,1990,中文系,湖南省永州市), -…

opencv实战--角度测量和二维码条形码识别

文章目录 前言一、鼠标点击的角度测量二、二维码条形码识别 前言 一、鼠标点击的角度测量 首先导入一个带有角度的照片 然后下面的代码注册了一个鼠标按下的回调函数&#xff0c; 还有一个点的数列&#xff0c;鼠标事件为按下的时候就记录点&#xff0c;并画出点&#xff0c;…

【软件测试】Git 远程仓库的使用(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 查看远程仓库 想…

SQL性能规范

一、随聊 记录一下吧&#xff0c;2023年7月13日00:11:11&#xff0c;现在的状态真的很&#xff0c;忙&#xff0c;干不完的活&#xff0c;希望巨大的压力&#xff0c;能够让自己快速成长&#xff0c;回想我这一路&#xff0c;21年大专毕业&#xff0c;用一年时间熟悉软件&…

STM32 Proteus仿真医用仓库环境控制系统紫外线消毒RS232上传CO2 -0066

STM32 Proteus仿真医用仓库环境控制系统紫外线消毒RS232上传CO2 -0066 Proteus仿真小实验&#xff1a; STM32 Proteus仿真医用仓库环境控制系统紫外线消毒RS232上传CO2 -0066 功能&#xff1a; 硬件组成&#xff1a;STM32F103R6单片机 LCD1602显示器DHT11温度湿度电位器模拟…

golang中的【数组】相关知识点

目录 数组含义数组定义形式数组的声明初始化方式数组变量的类型 arr的特征数组的遍历遍历的用法二数组的值传递数组的引用&取地址 传送二维数组的相关操作定义二维数组初始化遍历 Golang是一种高效的编程语言&#xff0c;具有很多特性和优点&#xff0c;其中之一就是其对数…

RNN、LSTM、Seq2Seq

目录 时间序列表示梯度弥散和梯度爆炸RNN&#xff08;循环神经网络&#xff09;LSTMSeq2SeqELMo 时间序列表示 核心是加入历史信息去预测下一步骤 在NLP中&#xff0c;序列维度一般是这个样子:[b,seq_len,feature_len] b个句子&#xff0c;每个句子seq_len个单词&#xff0c;…

【复习10-12天内容】【我们一起60天准备考研算法面试(大全)-第十四天 14/60】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

OK3588运行python程序对摄像头数据进行图像处理

OK3588运行python程序读取usb摄像头 硬件连接用工具测试验证摄像头工作正常python 读取usb摄像头并进行图像处理 硬件连接 把usb摄像头插入HOST的usb接口。 在串口终端运行 sudo v4l2-ctl --list-devices 如下图 当前的usb设备是 /dev/video74 用工具测试验证摄像头工作正常…

贪心算法、贪心搜索/采样(greedy search/sampling)、集束搜索(beam search)、随机采样(random sample)

首先需要了解贪心算法&#xff1a; 贪心算法&#xff0c;又名贪婪法&#xff0c;是寻找最优解问题的常用方法&#xff0c;这种方法模式一般将求解过程分成若干个步骤&#xff0c;但每个步骤都应用贪心原则&#xff0c;选取当前状态下最好/最优的选择&#xff08;局部最有利的选…