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

中间件:SpringBoot集成Redis

一、Redis简介

Redis是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等,并提供了丰富的命令来操作这些数据。Redis具有高性能、低延迟的特点,并且支持数据持久化、主从复制和集群模式,可以满足各种应用场景的需求。

二、Redis基本使用

在Redis的基本使用中,虽然大部分步骤(如安装、配置、启动、连接)通常不直接涉及Java代码,但你可以使用Java代码来与Redis进行交互。这通常是通过Java客户端库(如Jedis或Lettuce)来实现的。以下是一个简要的总结,包括如何在Java中使用这些库来连接和操作Redis。

一、Windows安装、配置、启动、连接

  1. 安装:下载Redis的Windows版本,解压到指定目录。
  2. 配置:修改redis.windows.conf文件,根据需要调整配置。
  3. 启动:在命令行中运行redis-server.exe redis.windows.conf
  4. 连接:通常使用redis-cli命令行工具或可视化工具(如Redis Desktop Manager)进行连接。

二、Java代码与Redis交互

1. 添加依赖

首先,你需要在你的Java项目中添加Jedis或Lettuce的依赖。这里以Maven为例,使用Jedis:

<dependency>  <groupId>redis.clients</groupId>  <artifactId>jedis</artifactId>  <version>4.0.1</version>
</dependency>

 

2. 连接Redis

使用Jedis连接Redis:

import redis.clients.jedis.Jedis;  public class RedisExample {  public static void main(String[] args) {  // 连接到本地的 Redis 服务  Jedis jedis = new Jedis("localhost");  System.out.println("连接成功");  // 设置 Redis 字符串数据  jedis.set("tutorial-key", "Redis tutorial");  // 获取存储的数据并输出  String value = jedis.get("tutorial-key");  System.out.println("存储在 Redis 的字符串为: " + value);  // 关闭连接  jedis.close();  }  
}
3. 基本操作

以下是一些基本的Redis操作及其对应的Java代码:

  • 设置键值对
jedis.set("key", "value");
  • 获取值
String value = jedis.get("key");
  • 哈希操作
jedis.hset("hashKey", "field1", "value1");  
String hashValue = jedis.hget("hashKey", "field1");
  • 列表操作
jedis.lpush("listKey", "element1");  
jedis.rpush("listKey", "element2");  
List<String> listValues = jedis.lrange("listKey", 0, -1);
  • 集合操作
jedis.sadd("setKey", "member1");  
Set<String> setMembers = jedis.smembers("setKey");

  • 有序集合操作
jedis.zadd("sortedSetKey", 1, "one");  
jedis.zadd("sortedSetKey", 2, "two");  
Set<Tuple> sortedSetValues = jedis.zrangeWithScores("sortedSetKey", 0, -1);


4. 使用可视化工具

虽然Java代码是与Redis交互的主要方式,但可视化工具(如Redis Desktop Manager)仍然非常有用,因为它们提供了直观的界面来查看和编辑Redis数据。你可以在使用Java代码之前或之后,使用这些工具来验证你的操作结果。

总结

在Java中与Redis交互通常涉及使用Jedis或Lettuce这样的客户端库。你需要添加依赖、创建连接对象、执行Redis命令,并在完成后关闭连接。虽然安装、配置和启动Redis服务器本身不涉及Java代码,但你可以使用Java代码来与运行中的Redis实例进行交互。

三、Jedis操作Redis

Jedis是Redis的Java客户端,提供了简单易用的API来操作Redis。使用Jedis之前,需要确保Redis服务已经启动,并且可以通过网络进行连接。Jedis的使用步骤包括导入依赖、建立连接、执行命令和关闭连接等。通过Jedis,可以方便地执行Redis的各种命令,如设置和获取字符串值、操作哈希表、列表和集合等。

四、SpringBoot操作Redis

在SpringBoot中操作Redis,通常使用Spring Data Redis提供的RedisTemplate工具类。RedisTemplate封装了各种对Redis的操作,支持不同的数据类型,并且提供了统一API来操作Redis。在SpringBoot项目中,可以通过添加spring-boot-starter-data-redis依赖来集成Redis,并在配置文件中配置Redis的连接信息。然后,可以通过注入RedisTemplate来操作Redis数据库。

五、SpringBoot集成Redis使用Cache缓存

SpringBoot集成Redis后,可以利用Redis作为缓存来提高应用的性能。Spring提供了@Cacheable注解来支持缓存功能,可以将方法的返回值缓存到Redis中,以便在下次调用时快速获取结果。在使用缓存时,需要配置缓存管理器(CacheManager)和缓存解析器(CacheResolver),并指定缓存的名称和过期时间等参数。通过合理配置和使用缓存,可以显著减少数据库的访问压力,提高应用的响应速度。

以下是一个简单的SpringBoot集成Redis并使用Cache缓存的示例代码:

<!-- 在pom.xml中添加spring-boot-starter-data-redis依赖 -->  
<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-data-redis</artifactId>  
</dependency>

 

# 在application.yml中配置Redis的连接信息  
spring:  redis:  host: localhost  port: 6379  password: yourpassword # 如果有密码的话  database: 0  jedis:  pool:  max-active: 8 # 最大连接数  max-idle: 4 # 最大空闲连接  min-idle: 0 # 最小空闲连接
// 配置RedisCacheManager  
@Configuration  
@EnableCaching  
public class RedisCacheConfig {  @Bean  public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {  RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()  .entryTtl(Duration.ofMinutes(10)) // 设置缓存过期时间  .disableCachingNullValues(); // 禁止缓存空值  return RedisCacheManager.builder(redisConnectionFactory)  .cacheDefaults(cacheConfiguration)  .build();  }  
}
// 使用@Cacheable注解来缓存方法结果  
@Service  
public class UserService {  @Cacheable(value = "users", key = "#id")  public User getUserById(Long id) {  // 模拟从数据库中获取用户信息  return new User(id, "John Doe");  }  
}

 

在上面的示例中,我们首先在pom.xml中添加了spring-boot-starter-data-redis依赖,然后在application.yml中配置了Redis的连接信息。接着,我们创建了一个RedisCacheConfig配置类来配置RedisCacheManager。最后,我们在UserService中使用@Cacheable注解来缓存getUserById方法的结果。这样,当多次调用getUserById方法时,如果参数相同,则可以直接从缓存中获取结果,而无需再次访问数据库。

综上所述,SpringBoot集成Redis可以极大地提高应用的性能和灵活性。通过合理配置和优化Redis,可以更好地利用Redis来存储和访问数据,满足各种应用场景的需求。

相关文章:

中间件:SpringBoot集成Redis

一、Redis简介 Redis是一个开源的、基于内存的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。Redis支持多种类型的数据结构&#xff0c;如字符串&#xff08;strings&#xff09;、哈希&#xff08;hashes&#xff09;、列表&#xff08;lists&#xff09…...

数据中心建设方案,大数据平台建设,大数据信息安全管理(各类资料原件)

第一章 解决方案 1.1 建设需求 1.2 建设思路 1.3 总体方案 信息安全系统整体部署架构图 1.3.1 IP准入控制系统 1.3.2 防泄密技术的选择 1.3.3 主机账号生命周期管理系统 1.3.4 数据库账号生命周期管理系统 1.3.5 双因素认证系统 1.3.6 数据库审计系统 1.3.7 数据脱敏…...

TDD(测试驱动开发)是否已死?

Rails 大神、创始人 David Heinemeier Hansson 曾发文抨击TDD。 TDD is dead. Long live testing. (DHH) 此后, Kent Beck、Martin Fowler、David Hansson 三人就这个观点还举行了系列对话&#xff08;辩论&#xff09; Is TDD Dead? 笔者作为一个多年在软件测试领域摸索的人&…...

Debezium系列之:实时从TDengine数据库采集数据到Kafka Topic

Debezium系列之:实时从TDengine数据库采集数据到Kafka Topic 一、认识TDengine二、TDengine Kafka Connector三、什么是 Kafka Connect?四、前置条件五、安装 TDengine Connector 插件六、启动 Kafka七、验证 kafka Connect 是否启动成功八、TDengine Source Connector 的使用…...

数据结构(一)顺序表

顺序表的概念及结构 线性表 线性表是具有相同特征的数据结构的集合 物理结构 不一定连续 逻辑结构 连续 顺序表 顺序表是线性表的一种&#xff0c;顺序表的底层是数组 物理结构 连续 逻辑结构 连续 顺序表分类 静态顺序表 struct SeqList {int a…...

如何在 Jupyter Notebook 执行和学习 SQL 语句(中)

1. 基础SQL操作 创建数据库和表&#xff0c;插入数据&#xff1a; import sqlite3# 创建SQLite数据库并连接 conn sqlite3.connect(example.db) cursor conn.cursor()# 创建用户表 cursor.execute(CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT…...

AutosarMCAL开发——基于EB Wdg驱动

目录 一、Wdg原理以及作用1.看门狗类型2.看门狗功能特点3.看门狗工作模式4.看门狗超时响应5.看门狗寄存器 二、WDG模块EB配置&#xff08;TC3X系列MCU&#xff09;1.WDG通用配置&#xff1a;2.WDG设置&#xff1a;3.时钟资源分配4.配置STM IRQ中断5.配置触发执行动作&#xff1…...

Linux(1. 基本操作_命令)

目录 关于超级用户root&#xff1a; root用户可以做什么&#xff1f; 避免灾难&#xff1a; 格式约定&#xff1a; 浏览硬盘&#xff1a; 命令行补全和通配符&#xff1a; 命令行补全&#xff1a; 通配符&#xff1a; 常用基本命令&#xff1a; 查看目录和文件&#xff…...

难点:Linux 死机定位(进程虚拟地址空间耗尽)

死机定位(进程虚拟地址空间耗尽) 一、死机现象 内存富裕,但内存申请失败。 死机时打印: 怀疑是: 1、内存碎片原因导致。 2、进程虚拟地址空间耗尽导致。 3、进程资源限制导致。 二、内存碎片分析 1、理论知识:如何分析内存碎片化情况 使用 /proc/buddyinfo: /proc/…...

小米路由器刷机istoreOS,愉快上网

istoreOS与openwrt openwrt是一个开源的路由器系统,市场上所有小米路由器的内部系统都是基于openwrt进行二次开发形成的,做了硬件适配和功能上的阉割,不太好用。 istoreos是小宝团队基于openwrt制作的一个发行版,更适合中国宝宝体质。页面简约华丽,完全兼容开源openwrt的…...

微信小程序 - 01 - 一些补充和注意点(补充ing...)

目录 一、节流二、在一个发请求的函数中&#xff0c;只有发生下拉动作&#xff0c;才执行关闭下拉代码 最近在学微信小程序&#xff0c;把学习过程中的一些补充和注意点总结一下&#xff0c;内容会比较简单&#xff0c;因为只涉及基础知识&#xff0c;供个人参考 一、节流 情…...

微服务实战——登录(普通登录、社交登录、SSO单点登录)

登录 1.1. 用户密码 PostMapping("/login")public String login(UserLoginVo vo, RedirectAttributes redirectAttributes, HttpSession session){R r memberFeignService.login(vo);if(r.getCode() 0){MemberRespVo data r.getData("data", new Type…...

windows 安装 ElasticSearch

1、下载安装包 下载地址&#xff1a;https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.3-windows-x86_64.zip ElasticSearch 目录结构如下&#xff1a; 2、配置JDK环境 ES比较耗内存&#xff0c;建议虚拟机4G或以上内存&#xff0c;jvm1g以上的内存分…...

Oracle Linux 9 (CentOS Stream 9) 安装 node.js 20

Oracle Linux 的 node 默认版本为 16&#xff0c;运行dnf update也无法改变大版本&#xff0c;还需要进行额外操作1 查看支持的版本 sudo dnf module list nodejs输出如下 Last metadata expiration check: 3:37:22 ago on Fri 11 Oct 2024 09:08:18 PM JST. Oracle Linux 9 Ap…...

【Axure安装包与汉化包附带授权证书】

一、下载Axure安装包与汉化包附带授权证书 1.下载汉化包 【快传】: 点击链接即可保存 2.解压安装包 解压下载好的压缩包&#xff0c;能看到有lang也就是汉化包&#xff0c;AxureRP-Setup-RC.exe 也就是Axure9的安装程序&#xff0c;以及汉化说明和授权码。 二、安装Axure9…...

SSH隧道验证的原理及实现例子

SSH 隧道验证原理详解 **SSH 隧道&#xff08;SSH Tunneling&#xff09;**是通过 SSH 协议将数据在客户端和服务器之间加密传输的一种技术。它可以在不安全的网络上创建一个安全的、加密的通道&#xff0c;用于传输各种数据&#xff0c;例如通过不安全的网络远程登录、传输文…...

[计算机视觉]chapter1

一、什么是计算机视觉 计算机视觉就是用计算机编程,并设计算法来理解在这些图像中有什么。计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼…...

RTKLIB学习记录【postpos、execses_b、execses_r】

本文主要记录对RTKLIB源码中postpos、execses_b、execses_r 函数的源码解读&#xff0c;不涉及其中的天线、星历等文件读取的内容&#xff0c;且为个人理解&#xff0c;如果有误&#xff0c;欢迎交流讨论。 一、postpos 函数部分 /rxn2rtkp函数 → postpos函数传递参数&#x…...

docker,docker-desktop,docker-compose download

docker docker-compose download 百度网盘获取离线包链接release-notes 参考dockerdocker-composewlspowershell...

C#_带参数的委托进入队列执行

我们经常会遇到一些函数多个地方调用,但是只能单独执行的就需要把它放到队列中执行。 1.创建对应该方法的委托(传参和回参类型需要一致)。 //委托: public delegate void CameraTaskDelegate(byte cs, ref byte[] buffer);//对应函数: public void CameraSettingRead(by…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...