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

Redis:java和SpringBoot中使用Redis

目录

  • Jedis操作Redis6
  • SpringBoot整合Redis

Jedis操作Redis6

Jedis是java开发的操作redis的工具包。

引入maven依赖:

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

使用redis的api操作redis:

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;public class JedisTest {Jedis jedis;@Beforepublic void before() {this.jedis = new Jedis("192.168.200.129", 6379);}@Afterpublic void after() {//关闭jedisthis.jedis.close();}/*** 测试redis是否连通*/@Testpublic void test1() {String ping = jedis.ping();System.out.println(ping);}/*** string类型测试*/@Testpublic void stringTest() {jedis.set("site", "http://www.itsoku.com");System.out.println(jedis.get("site"));System.out.println(jedis.ttl("site"));}/*** list类型测试*/@Testpublic void listTest() {jedis.rpush("courses", "java", "spring", "springmvc", "springboot");List<String> courses = jedis.lrange("courses", 0, -1);for (String course : courses) {System.out.println(course);}}/***  zset类型测试*/@Testpublic void setTest() {jedis.sadd("users", "tom", "jack", "ready");Set<String> users = jedis.smembers("users");for (String user : users) {System.out.println(user);}}/***  订阅消息** @throws InterruptedException*/@Testpublic void subscribeTest() throws InterruptedException {//subscribe(消息监听器,频道列表)jedis.subscribe(new JedisPubSub() {@Overridepublic void onMessage(String channel, String message) {System.out.println(channel + ":" + message);}}, "sitemsg");TimeUnit.HOURS.sleep(1); }}/*** 发布消息*/@Testpublic void publishTest() {jedis.publish("sitemsg", "hello redis");}}

SpringBoot整合Redis

引入redis的maven配置:

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

application.properties中配置redis信息:

# redis 服务器 ip 
spring.redis.host=192.168.200.129 
# redis 服务器端口 
spring.redis.port=6379 
# redis 密码 
#spring.redis.password=root 
# 连接超时时间(毫秒) 
spring.redis.timeout=60000 
# Redis默认情况下有16个分片,这里配置具体使用的分片,默认是0
spring.redis.database=0

使用RedisTemplate工具类操作redis:

springboot中使用RedisTemplate来操作redis,需要在我们的bean中注入这个对象,代码如下:

@Autowired private RedisTemplate<String, String> redisTemplate; // 用下面5个对象来操作对应的类型 
this.redisTemplate.opsForValue(); //提供了操作string类型的所有方法 
this.redisTemplate.opsForList(); // 提供了操作list类型的所有方法 
this.redisTemplate.opsForSet(); //提供了操作set的所有方法 
this.redisTemplate.opsForHash(); //提供了操作hash表的所有方法 
this.redisTemplate.opsForZSet(); //提供了操作zset的所有方法

RedisTemplate示例代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap; import java.util.List;
import java.util.Map; import java.util.Set;
import java.util.concurrent.TimeUnit;@RestController
@RequestMapping("/redis")
public class RedisController {@Autowiredprivate RedisTemplate<String, String> redisTemplate;@RequestMapping("/stringTest")public String stringTest() {this.redisTemplate.delete("name");this.redisTemplate.opsForValue().set("name", "路人");String name = this.redisTemplate.opsForValue().get("name");return name;}@RequestMapping("/listTest")public List<String> listTest() {this.redisTemplate.delete("names");this.redisTemplate.opsForList().rightPushAll("names", "刘德华", "张学友", "郭富城", "黎明");List<String> courses = this.redisTemplate.opsForList().range("names", 0, -1);return courses;}@RequestMapping("setTest")public Set<String> setTest() {this.redisTemplate.delete("courses");this.redisTemplate.opsForSet().add("courses", "java", "spring", "springboot");Set<String> courses = this.redisTemplate.opsForSet().members("courses");return courses;}@RequestMapping("hashTest")public Map<Object, Object> hashTest() {this.redisTemplate.delete("userMap");Map<String, String> map = new HashMap<>();map.put("name", "路人"); map.put("age", "30");this.redisTemplate.opsForHash().putAll("userMap", map);Map<Object, Object> userMap = this.redisTemplate.opsForHash().entries("userMap");return userMap;}@RequestMapping("zsetTest") public Set<String> zsetTest() { this.redisTemplate.delete("languages"); this.redisTemplate.opsForZSet().add("languages", "java", 100d); this.redisTemplate.opsForZSet().add("languages", "c", 95d); this.redisTemplate.opsForZSet().add("languages", "php", 70); Set<String> languages = this.redisTemplate.opsForZSet().range("languages", 0, -1);return languages; }}

相关文章:

Redis:java和SpringBoot中使用Redis

目录 Jedis操作Redis6SpringBoot整合Redis Jedis操作Redis6 Jedis是java开发的操作redis的工具包。 引入maven依赖&#xff1a; <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.2.1</ve…...

Java的XWPFTemplate word生成列表

Java的XWPFTemplate工具类导出word.docx的使用_xwpftemplate 语法_youmdt的博客-CSDN博客 如果是表格的列表参考上面这篇文章即可&#xff0c;比较复杂的列表遍历暂时还没找到方法&#xff0c;只能手动创建表格了 上面是模板&#xff0c;非常简单&#xff0c;以为我们是要自己创…...

基于RFID的自动化仓储设备研发项目可行性研究报告

一、项目概况 基于RFID的自动化仓储设备研发项目&#xff0c;是深圳市飞鸟国际供应链股份有限公司在公司有色金属供应链一站式服务的基础上&#xff0c;针对有色金属供应链的仓储环节进行的研发。 多年来&#xff0c;公司一直坚持以“科技金融”为核心的未来发展战略&#xf…...

ajax异步传值以及后端接收参数的几种方式

异步传值 第一种呢&#xff0c;也是最简单的一种&#xff0c;通过get提交方式&#xff0c;将参数在链接中以问号的形式进行传递 // 前台传值方法 // 触发该方法调用ajaxfunction testAjax(yourData) {$.ajax({type: "get", // 以get方式发起请求url: "/yo…...

千年TGS服务器日志报错如何解决

大家在修改sdb文件&#xff0c;建议使用sdb修改器。注意&#xff1a;每个文件&#xff0c;每个逗号都很重要&#xff1b;只要其中哪部分少一个逗号或多一个逗号&#xff0c;都很容易发生错误。 一常见 TGS1000.LOG 错误类型&#xff0c;因不同的错误&#xff0c;错误中括号“&…...

读取Json BugFix

遇到的错误如下所示&#xff1a; 遇到的错误如下所示&#xff1a;File ~/miniconda3/lib/python3.9/json/decoder.py:353, in JSONDecoder.raw_decode(self, s, idx)344 """Decode a JSON document from s (a str beginning with345 a JSON document) and retu…...

【Gradle构件工具深度学习】

Gradle构件工具深度学习 1. 课程大纲1.1 Gradle入门1.2 与Idea整合1.3 Gradle进阶 2. 常见项目构建工具3. 安装gradle 1. 课程大纲 1.1 Gradle入门 基本介绍、常用指令、项目目录、项目应用 1.2 与Idea整合 Groovy语法、整合IDEA、搭建web工程、项目部署 1.3 Gradle进阶 生命周…...

Attention Transformer

来源老师课件&#xff0c;方便以后复习。 课参考链接&#xff1a; http://jalammar.github.io/illustrated-transformer/ 之前的知识链接&#xff1a; 【知识链接】WGAN Transformer Vit Swin-Transformer Swin-Unet Res-Vit TransUNet MAE Bra ADDA 打分函数&#xff1a; 多头…...

[最新榜单] 智能手机数据恢复的 10 款最佳应用

当手机上的数据消失时&#xff0c;这让您感到非常难过。 由于事故而突然丢失重要的聊天记忆、照片和其他您想保留的东西的悲伤。 如果它没有被淹没&#xff0c;您可以使用数据恢复应用程序修复它。 在本文中&#xff0c;我们将解释一些有用的数据恢复应用程序。 数据恢复应用…...

修改CentOS默认mail发件名称

修改CentOS默认的邮件发件名称 要修改CentOS默认的邮件发件名称&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开终端或SSH连接到CentOS服务器。使用root或具有管理员权限的用户登录。编辑postfix配置文件。在终端中输入以下命令&#xff1a; vi /etc/postfix/main.cf…...

Lesson 03 C/C++内存管理

C&#xff1a;渴望力量吗&#xff0c;少年&#xff1f; 文章目录 一、C内存管理方式1. new/delete操作内置类型2. new和delete操作自定义类型 二、operator new与operator delete函数三、new和delete的实现原理1. 内置类型2. 自定义类型 四、内存泄漏1. 什么是内存泄漏2. 内存泄…...

【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理(正在更新中......)

【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理 一、MAX96712 解串器基础配置1.1 配置链路 GMSL 协议 及 传输速率1.1.1 配置GMSL1、GMSL2协议 及 配置使能 Link A/B/C/D [0x6]:GMSL2_A、LINK_EN_A1.1.2 配置GMSL2 传输速率 3 Gbps / 6 Gbps …...

Docker与Kubernetes结合的难题与技术解决方案

文章目录 1. **版本兼容性**技术解决方案 2. **网络通信**技术解决方案 3. **存储卷的管理**技术解决方案 4. **安全性**技术解决方案 5. **监控和日志**技术解决方案 6. **扩展性与自动化**技术解决方案 7. **多集群管理**技术解决方案 结语 &#x1f388;个人主页&#xff1a…...

CVE-2021-42287CVE-2021-42278 域内提权

倘见玉皇先跪奏&#xff1a;他生永不落红尘 本文首发于先知社区&#xff0c;原创作者即是本人 前言 网络安全技术学习&#xff0c;承认⾃⼰的弱点不是丑事。只有对原理了然于⼼&#xff0c;才能突破更多的限制。拥有快速学习能力的白帽子&#xff0c;是不能有短板的&#xf…...

springcloud整合nacos实现服务注册

Nacos是一个开源的分布式系统服务和基础设施解决方案&#xff0c;用于实现动态服务发现、配置管理和服务治理。它可以帮助开发人员和运维团队更好地管理微服务架构中的服务实例、配置信息和服务调用。 Nacos提供了服务注册与发现、动态配置管理、服务路由和负载均衡等功能&…...

redis实现布隆过滤器

思路&#xff1a; 用于快速检查一个元素是否属于某个集合中。它可以快速判断一个元素是否在一个大型集合中&#xff0c;且判断速度很快且不占用太 多内存空间。原理是使用一组哈希函数&#xff0c;将元素【映射】成数组中的【索引位置】&#xff0c;就是将元素转成他在索引中的…...

山西电力市场日前价格预测【2023-11-19】

1.日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-19&#xff09;山西电力市场全天平均日前电价为591.63元/MWh。其中&#xff0c;最高日前电价为1500.00元/MWh&#xff0c;预计出现在16:45~20:45。最低日前电价为268.57元/MWh&#x…...

深眸科技革新升级OCR技术,与AI视觉实现有效融合赋能各行业应用

OCR即光学字符识别&#xff0c;是通过扫描仪或工业相机等电子设备检查打印的字符&#xff0c;并通过检测暗、亮的模式确定其形状&#xff0c;然后用字符识别方法将形状翻译成计算机文字的过程。 目前&#xff0c;随着机器视觉和人工智能技术的进一步升级&#xff0c;OCR技术实…...

性能测试知多少---系统架构分析

之前有对性能需求进行过分析&#xff0c;那篇主要从项目业务、背景等角度如何抽丝剥茧的将项目的需求抽离出来。在我们进行需求的时候也需要对被测项目的架构有一定的认识&#xff0c;如果不了解被测系统的架构&#xff0c;那么在后期的性能分析与调优阶段将无从下手。 简单系…...

【观察】华为:数智世界“一触即达”,应对数智化转型“千变万化”

毫无疑问&#xff0c;数智化既是这个时代前进所趋&#xff0c;也是国家战略所指&#xff0c;更是所有企业未来发展进程中达成的高度共识。 但也要看到&#xff0c;由于大量新兴技术的出现&#xff0c;技术热点不停的轮转&#xff0c;加上市场环境的快速变化&#xff0c;让数智化…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解&#xff1a;从决策树开始理解三、解法一&#xff1a;二叉决策树 DFS四、解法二&#xff1a;组合式回溯写法&#xff08;推荐&#xff09;五、解法对比 递归算法是编程中一种非常强大且常见的思想&#xff0c;它能够优雅地解决很多复杂的…...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...

EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势

一、WebRTC与智能硬件整合趋势​ 随着物联网和实时通信需求的爆发式增长&#xff0c;WebRTC作为开源实时通信技术&#xff0c;为浏览器与移动应用提供免插件的音视频通信能力&#xff0c;在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能&#xff0c;对实时…...

智能问数Text2SQL Vanna windows场景验证

架构 Vanna 是一个开源 Python RAG&#xff08;检索增强生成&#xff09;框架&#xff0c;用于 SQL 生成和相关功能。 机制 Vanna 的工作过程分为两个简单步骤 - 在您的数据上训练 RAG“模型”&#xff0c;然后提出问题&#xff0c;这些问题将返回 SQL 查询&#xff0c;这些查…...