redis入门3-在java中操作redis

Redis的java客户端

Jedis、Lettuce、Redisson、以及spring提供的spring data redis

Jedis操作redis

//添加依赖
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.0</version>
</dependency>

**使用步骤:
1.获取连接
Jedis jedis=new Jedis("ip地址",端口号(默认6379))
2.执行操作
方法和redis-client.exe的方法一样,只需通过jedis.方法调用,具体的方法见redis入门2
在这里插入图片描述

3.关闭连接**
jedis.close();

Spring Data Redis操作redis

//添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

redis启动的时候,默认配置了16个库,默认情况下是在第0个库进行操作,在redis上操作的话,换库用select 编号

spring data redis中提供了一个高度封装的类:RedisTemplate,针对该类设置了众多的接口,用于操作redis中的集中基本数据类型

针对不同数据生成的对象
redisTemplate.opsForValue() 普通字符串
redisTemplate.opsForHash() 针对map类型
redisTemplate.opsForList()针对list类型
redisTemplate.opsForSet()针对set类型
redisTemplate.opsForZSet()针对zset类型

在这里插入图片描述
使用步骤
1.加载依赖文件
2.设置redis配置文件

在这里插入图片描述
3.定义配置类,修改RedisTemplate序列化方式–RedisTemplate默认情况会对key进行序列化
在这里插入图片描述
4.注入RedisTemplate对象,调用方法即可

五种数据的通用命令

redisTemplate.keys("*")//查询所有
redisTemplate.hasKey("itcast")//查询某个键
redisTemplate.delete("mysit")//删除某个key
redisTemplate.type("myset")//获取对应value的属性

Redis缓存

针对经常访问的数据,可以存放在redis中,减少数据库的压力
1.首先需要给数据定义key,键名可以自定义,但是需要规范化,便于后续操作

List<DishDto> dishDtoList=null;//封装对象的集合,该集合的值用于给redis的value赋值
String key="dish_"+dish.getCategoryId()+"_"+dish.getStatus();//给key起名

2.判断键所对应的值是否存在,存在的情况下可以直接获取

redisTemplate.opsForValue().get(key);//返回值是Object
dishDtoList= (List<DishDto>)redisTemplate.opsForValue().get(key)//将结果对象封装后存放在对应key的value中

3.如果判断查询结果不存在,则执行sql查询后,将对象封装后再赋值给redis

redisTemplate.opsForValue().set(key,dishDtoList,60, TimeUnit.MINUTES);//键名/封装的对象集合/有效时间60分钟

4.当数据表有新增操作或者修改操作的时候,必须清除对应的缓存信息
清除信息可以选择清除所有,或者清除指定的缓存信息
1.在对应的controller方法中注入 @RedisTemplate redis
2.根据key命名的格式,如键名为flower+name,删除所有的缓存redis.delete("kind*"),想要删除具体的某个缓存的话,只需要将方法参数中的对象的对应属性查出,根据命名的规则拼接即可,如redis.delete("flowermeigui")

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

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

相关文章

JJWT快速入门

本篇介绍使用 JJWT&#xff08;Java JWT&#xff09;库来生成 JWT Token&#xff0c;步骤如下&#xff1a; 添加依赖&#xff1a; 在项目中添加 JJWT 依赖项。对于 Maven 项目&#xff0c;可以在 pom.xml 文件中添加以下依赖项&#xff1a; <dependency><groupId>…

python解析帆软cpt及frm文件(xml)获取源数据表及下游依赖表

#!/user/bin/evn python import os,re,openpyxl 输入&#xff1a;帆软脚本文件路径输出&#xff1a;帆软文件检查结果Excel#获取来源表 def table_scan(sql_str):# remove the /* */ commentsq re.sub(r"/\*[^*]*\*(?:[^*/][^*]*\*)*/", "", sql_str)# r…

ssh免密rsa登录

1. 本地要执行ssh的机器 ssh-keygen -t rsa # 下面为对应密钥生成地址 公钥&#xff08;id_rsa.pub&#xff09;和私钥&#xff08;id_rsa&#xff09;。 # windows: C:\Users\<your_username>\.ssh # linux: /home/service/.ssh 2. 讲密钥写入到对应文…

基于Hyperledger Fabric+CP-ABE加密的溯源类应用系统

加密机制中有ABE属性加密&#xff0c;属性基加密一般又分为两类&#xff0c;即密钥策略属性基加密&#xff08;KP-ABE&#xff09;和密文策略属性基加密&#xff08;CP-ABE&#xff09;。 今天我们重点说一下cp-abe及如何与fabric区块链技术相结合来建设相关溯源、确权、认证等…

秋招算法备战第39天 | 62.不同路径、63. 不同路径 II

62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 按照动态规划五部曲走&#xff0c;非常清晰 class Solution:def uniquePaths(self, m: int, n: int) -> int:dp [[0 for _ in range(n)] for _ in range(m)]for i in range(m):dp[i][0] 1for j in range(n):dp[0][…

c++学习(特殊类设计)[30]

只能在堆上创建对象的类 如果你想要确保对象只能在堆上创建&#xff0c;可以通过将析构函数声明为私有&#xff0c;并提供一个静态成员函数来创建对象。这样&#xff0c;类的实例化只能通过调用静态成员函数来完成&#xff0c;而无法直接在栈上创建对象。 以下是一个示例&…

【开源项目--稻草】Day03

【开源项目--稻草】Day03 1. 续Spring-Security1.1 自定义登录界面 2. 用户注册2.1 将注册页面显示2.2 编写控制器进行测试2.3 编写注册业务逻辑2.4 注册功能的收尾 3. VUE3.1 VUE的基本使用3.1.1 什么是VUE 3.2 使用VUEAjax完善稻草问答的注册功能 1. 续Spring-Security 1.1 …

append()函数

go 内置appned函数 append()函数函数说明代码例子 append()函数 函数说明 append函数是Go语言内置的一个非常常用的函数&#xff0c;用于在切片&#xff08;slice&#xff09;末尾追加元素。它的原理比较复杂&#xff0c;涉及到Go语言中切片的底层实现和内存管理&#xff0c;…

Kubespray-offline v2.21.0-1 下载 Kubespray v2.22.1 离线部署 kubernetes v1.25.6

文章目录 1. 目标2. 预备条件3. vcenter 创建虚拟机4. 系统初始化4.1 配置网卡4.2 配置主机名4.3 内核参数 5. 打快照6. 安装 git7. 配置科学8. 安装 docker9. 下载介质9.1 下载安装 docker 介质9.2 下载 kubespray-offline-ansible 介质9.3 下载 kubernetes 介质 10. 搬运介质…

微信小程序 选择年和月以及回显 使用picker-view组件

<!--选择年月--><view bindtap"pickCalendar">{{year}}年{{month}}月</view><picker-view wx:if"{{open}}" class"fixed-select" indicator-style"height: 50px;" style"width: 100%; height: 300px;"…

6.物联网操作系统信号量

一。信号量的概念与应用 信号量定义 FreeRTOS信号量介绍 FreeRTOS信号量工作原理 1.信号量的定义 多任务环境下使用&#xff0c;用来协调多个任务正确合理使用临界资源。 2.FreeRTOS信号量介绍 Semaphore包括Binary&#xff0c;Count&#xff0c;Mutex&#xff1b; Mutex包…

【2种方法,jmeter用一个正则提取器提取多个值!】

jmeter中&#xff0c;用json提取器&#xff0c;一次提取多个值&#xff0c;这个很多人都会。但是&#xff0c;用正则提取器一次提取多个&#xff0c;是否可以呢&#xff1f; 肯定&#xff0c;很多人都自信满满的说&#xff0c;可以&#xff01;形如&#xff1a;token":&q…

neo4j清空数据库

清空所有Person、 Movie节奈及其所有关系 MATCH (a:Person), (m:Movie) OPTIONAL MATCH (a)-[r1]-(), (m)-[r2]-() DELETE a,r1,m,r2 查询任意数据 MATCH (n) RETURN n 如果没有&#xff0c; 就说明已经删除成功了 这段代码是用Cypher查询语言编写的&#xff0c;用于清空…

协议组合逻辑学习笔记

1.challenge 面临的挑战是 通过组合各部分的独立证明 来建立 复合协议的安全性证明。但组合是一个困难的问题&#xff0c;因为一个组件 泄露的信息并不会影响其自身的安全性&#xff0c;但会降低其他组件的安全性&#xff01; 因为即使 各个部分的独立证明可能已经确保了它们…

JS 原型与继承

本文内容学习于&#xff1a;后盾人 (houdunren.com) 一、原型对象 每个对象都有一个原型prototype对象&#xff0c;通过函数创建的对象也将拥有这个原型对象。 原型是一个指向对象的指针。 1.可以将原型理解为对象的父亲&#xff0c;对象从原型对象继承来属性 2.原型就是对象…

Jenkins触发器时间、次数设定

触发器触发条件介绍 触发器触发条件公式&#xff1a;由5颗星组成 * * * * * 分别代表&#xff1a;分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6) 企业项目中常用场景介绍 场景1&#xff1a;接口脚本部分测试通过&#xff0c;部分还在进行&#xff0c;回归测试脚本执行…

Windows上安装 jdk 环境并配置环境变量 (超详细教程)

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

torchvision.datasets数据加载失败

torchvision.datasets数据加载失败 如何使用torchvision.datasets进行自动下载数据失败&#xff0c;可以使用手动下载数据 Ctrl点击可以进入相关包文件&#xff0c;查找下载地址&#xff1a;https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz 手动下载之后解压&#x…

企业微信小程序在调用wx.qy.login时返回错误信息qy.login:fail

原因是大概是绑定了多个企业但是在开发者工具中没有选择正确的企业 解决方法&#xff1a; 重新选择企业后即可成功获取code

指针常量与常量指针的区别、含指针的函数、什么是结构体

const int *p &a;//定义常量指针&#xff0c;值不可改 int * const p &a;//定义指针常量&#xff0c;指向的值可改&#xff0c;指向不可改 const为静态常量的意思&#xff0c;不可修改。从左到右&#xff0c;常量const先出现&#xff0c;指针符号*后出…