学习笔记039——SpringBoot整合Redis
文章目录
- 1、Redis 基本操作
- Redis 默认有 16 个数据库,使用的是第 0 个,切换数据库
- 添加数据/修改数据
- 查询数据
- 批量添加
- 批量查询
- 删除数据
- 查询所有的 key
- 清除当前数据库
- 清除所有数据库
- 查看 key 是否存在
- 设置有效期
- 查看有效期
- 2、Redis 数据类型
- String
- 追加字符串
- 查看字符串长度
- 自增
- 递减
- 指定递增长度
- 指定递减长度
- 字符串截取
- 修改局部字段
- List
- 从左侧添加
- 从右侧添加
- 取值
- 删除,左侧移除
- 右侧移除
- 通过下标获取值
- 删除集合中指定的值,count 是删除的个数
- 通过下标修改集合中的值
- 获取长度
- 截取list
- 查看集合是否存在
- Set
- 添加数据
- 查询数据
- 判断集合中是否存在某个值
- 获取集合长度
- 删除元素
- 随机取值
- Hash
- 存值
- 取值
- 存多个值
- 取多个值
- 取所有值
- 删除数据
- 获取长度
- 判断集合中是否存在某个值
- 获取集合中所有 key
- 获取集合中所有 value
- Zset
- 添加数据
- 查询数据
- 升序查询
- 降序查询
- 删除数据
- 3、Spring Boot 整合 Redis
1、Redis 基本操作
Redis 默认有 16 个数据库,使用的是第 0 个,切换数据库
select 0
添加数据/修改数据
set key value
查询数据
get key
批量添加
mset k1 v1 k2 v2...
批量查询
mget k1 k2
删除数据
del key
查询所有的 key
keys *
清除当前数据库
flushdb
清除所有数据库
flushall
查看 key 是否存在
exists key
设置有效期
expire key 10
查看有效期
ttl key
2、Redis 数据类型
String
追加字符串
append key value
查看字符串长度
strlen key
自增
incr key
递减
decr key
指定递增长度
incrby k v
指定递减长度
decrby k v
字符串截取
getrange k start end
修改局部字段
setrange k start v
List
从左侧添加
lpush k v...
从右侧添加
rpush k v...
取值
lrange k start end
删除,左侧移除
lpop k
右侧移除
rpop k
通过下标获取值
lindex k index
删除集合中指定的值,count 是删除的个数
lrem k count v
通过下标修改集合中的值
lset k index v
获取长度
llen k
截取list
ltrim k start end
查看集合是否存在
exists k
Set
添加数据
sadd k v
查询数据
smembers k
判断集合中是否存在某个值
sismember k v
获取集合长度
scard k
删除元素
srem k v1 v2...
随机取值
srandmember k
Hash
存值
hset hash k1 v1 k2 v2
取值
hget hash k1
存多个值
hmset hash k1 a k2 b k3 c
取多个值
hmget hash k1 k2 k3
取所有值
hgetall hash
删除数据
hdel hash k1 k2
获取长度
hlen k
判断集合中是否存在某个值
hexists hahs k
获取集合中所有 key
hkeys hash
获取集合中所有 value
hvals hash
Zset
添加数据
zadd set index v
查询数据
zrange set 0 -1
升序查询
zrangebyscore score -inf +inf withscores
降序查询
zrevrange score 0 -1 withscores
删除数据
zrem score jack
3、Spring Boot 整合 Redis
Spring Data Redis
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency><!-- Swagger -->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version>
</dependency>
spring:redis:database: 0host: 192.168.248.138port: 6379
package com.southwind.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;
import java.util.Date;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {private Integer id;private String name;private Double score;private Date birthday;
}
package com.southwind.controller;import com.southwind.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;@RestController
public class StudentController {@Autowiredprivate RedisTemplate redisTemplate;@PostMapping("/set")public void set(@RequestBody Student student){this.redisTemplate.opsForValue().set("stu", student);}@GetMapping("/get/{key}")public Student get(@PathVariable("key") String key){return (Student) this.redisTemplate.opsForValue().get(key);}@PutMapping("/put")public void update(@RequestBody Student student){this.redisTemplate.opsForValue().set("stu", student);}@DeleteMapping("/delete/{key}")public Boolean delete(@PathVariable("key") String key){this.redisTemplate.delete(key);return this.redisTemplate.hasKey(key);}
}
package com.southwind.configuration;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class SwaggerConfiguration {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.southwind")).build().apiInfo(new ApiInfoBuilder().title("Redis测试").description("测试").version("V1.0").build());}
}
字符串
@PostMapping("/string")
public String string(){String str = "Hello World";this.redisTemplate.opsForValue().set("str", str);return (String) this.redisTemplate.opsForValue().get("str");
}
List
@PostMapping("/list")
public void list(){ListOperations<String,String> list = redisTemplate.opsForList();list.leftPush("list", "Hello");list.leftPush("list", "World");list.leftPush("list","Java");list.rightPush("list", "1");list.rightPush("list", "2");list.rightPush("list", "3");
}
Set
@PostMapping("/setadd")
public void setadd(){SetOperations<String,String> set = this.redisTemplate.opsForSet();set.add("set", "Hello");set.add("set", "World");set.add("set", "Java");
}
Zset
@PostMapping("/zset")
public void zset(){ZSetOperations<String,String> set = this.redisTemplate.opsForZSet();set.add("zset", "Hello",1);set.add("zset", "World",2);set.add("zset", "Java",3);
}
Hash
@PostMapping("/hash")
public void hash(){HashOperations<String,String,String> hash = this.redisTemplate.opsForHash();hash.put("hash", "id", "1");hash.put("hash", "name", "tom");hash.put("hash", "age","22" );
}
相关文章:
学习笔记039——SpringBoot整合Redis
文章目录 1、Redis 基本操作Redis 默认有 16 个数据库,使用的是第 0 个,切换数据库添加数据/修改数据查询数据批量添加批量查询删除数据查询所有的 key清除当前数据库清除所有数据库查看 key 是否存在设置有效期查看有效期 2、Redis 数据类型String追加字…...
(笔记)简单了解ZYNQ
1、zynq首先是一个片上操作系统(Soc),结合了arm(PS)和fpga(PL)两部分组成 Zynq系统主要由两部分组成:PS(Processing System)和PL(Programmable L…...
大众点评小程序mtgsig1.2算法
测试效果: var e function _typeof(o) {return "function" typeof Symbol && "symbol" typeof Symbol.iterator? function (o) {return typeof o;}: function (o) {return o && "function" typeof Symbol &…...
七牛云AIGC内容安全方案助力企业合规创新
随着人工智能生成内容(AIGC)技术的飞速发展,内容审核的难度也随之急剧上升。在传统审核场景中,涉及色情、政治、恐怖主义等内容的标准相对清晰明确,但在AIGC的应用场景中,这些界限变得模糊且难以界定。用户可能通过交互性引导AI生成违规内容,为审核工作带来了前所未有的不可预测…...
.net的winfrom程序 窗体透明打开窗体时出现在屏幕右上角
窗体透明, 将Form的属性Opacity,由默认的100% 调整到 80%,这个数字越小越透明(尽量别低于50%,不信你试试看)! 打开窗体时出现在屏幕右上角 //构造函数 public frmCalendarList() {InitializeComponent();//打开窗体&…...
基于YOLOv8深度学习的智慧课堂教师上课行为检测系统研究与实现(PyQt5界面+数据集+训练代码)
随着人工智能技术的迅猛发展,智能课堂行为分析逐渐成为提高教学质量和提升教学效率的关键工具之一。在现代教学环境中,能够实时了解教师的课堂表现和行为,对于促进互动式教学和个性化辅导具有重要意义。传统的课堂行为分析依赖于人工观测&…...
使用 Tkinter 创建一个简单的 GUI 应用程序来合并视频和音频文件
使用 Tkinter 创建一个简单的 GUI 应用程序来合并视频和音频文件 Python 是一门强大的编程语言,它不仅可以用于数据处理、自动化脚本,还可以用于创建图形用户界面 (GUI) 应用程序。在本教程中,我们将使用 Python 的标准库模块 tkinter 创建一…...
【C++笔记】模板进阶
前言 各位读者朋友们大家好!上一期我们讲了stack、queue以及仿函数。先前我们讲过模板的初阶内容,这一期我们来更深入的学习一下模板。 一. 非类型模板参数 1.1 非类型模板参数 模板参数分为类型形参和类类型形参: 类型形参:…...
Soul App创始人张璐团队亮相GITEX GLOBAL 2024,展示多模态AI的交互创新
随着全球AI领域的竞争加剧,越来越多的科技巨头和创新企业纷纷致力于多模态AI的开发。2024年10月14日至18日,GITEX GLOBAL海湾信息技术博览会在迪拜举行,吸引了超过6700家全球科技巨头和创新公司参与,展示了智能互联、人工智能等领域的新成果。 此次展会中,Soul App创始人张璐团…...
ffmpeg.wasm 在浏览器运行ffmpeg操作视频
利用ffmpeg.wasm,可以在浏览器里运行ffmpeg,实现对音视频的操作 参考链接: https://blog.csdn.net/jchsgwbr/article/details/143252044 https://gitee.com/CXBalCai/ffmpeg-template 其他参考 https://github.com/ffmpegwasm/ffmpeg.wasm https://b…...
用Python爬虫“偷窥”1688商品详情:一场数据的奇妙冒险
引言:数据的宝藏 在这个信息爆炸的时代,数据就像是一座座等待挖掘的宝藏。而对于我们这些电商界的探险家来说,1688上的商品详情就是那些闪闪发光的金子。今天,我们将化身为数据的海盗,用Python这把锋利的剑࿰…...
CentOS上如何离线批量自动化部署zabbix 7.0版本客户端
CentOS上如何离线批量自动化部署zabbix 7.0版本客户端 管理的服务器大部分都是CentOS操作系统,版本主要是CentOS 7。因为监控服务器需要,要在前两天搭建的Zabbix 7.0系统上把这些CentOS 7系统都监控起来。因为服务器数量众多,而且有些服务器…...
【开源项目】ChinaAddressCrawler 中国行政区划数据(1980-2023年)采集及转换(Java版),含SQL格式及JSON格式
ChinaAddressCrawler 开源项目地址:https://gitee.com/li_yu_jiang/ChinaAddressCrawler 来源于国家民政部的数据只包括省级(省/直辖市/自治区/特别行政区)、地级(地级市/地区/自治州/盟)、县级(县/市辖区…...
React中事件处理和合成事件:理解与使用
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
Local Changes不展示,DevEco Studio的git窗口中没有Local Changes
DevEco Studio的git窗口中,没有Local Changes,怎么设置可以调出? 进入File-->Settings-->Version Control,将Use non-modal commit interface前的勾选框取消勾选,点击OK即可在打开git窗口,就可以看到…...
大数据笔记
第一章、大数据概述 人类的行为及产生的事件的一种记录称之为数据。 1、大数据时代的特征,并结合生活实例谈谈带来的影响。 (一)特征 1、Volume 规模性:数据量大。 2、Velocity高速性:处理速度快。数据的生成和响…...
【Linux网络编程】TCP套接字
TCP与UDP的区别: udp是无连接的、面向数据报(通信时以数据报为单位传输)的传输层通信协议,其中每个数据报都是独立的,通信之前不需要建立连接,bind绑定套接字后直接可以进行通信。 tcp是面向连接的、基于字…...
在Manjaro Gnome桌面的基础上安装Budgie桌面环境
在Manjaro上安装Budgie桌面环境 Budgie是Solus团队开发的一种简单而优雅的桌面环境。 Budgie是由Solus项目主要开发的流行桌面环境,与GNOME堆栈紧密集成。它提供了简单而优雅的用户体验,并且可用于大多数发行版,如Arch、Debian、Manjaro等。…...
vscode可以编译通过c++项目,但头文件有红色波浪线的问题
1、打开 VSCode 的设置,可以通过快捷键 Ctrl Shift P 打开命令面板,然后搜索并选择 “C/C: Edit Configurations (JSON)” 命令,这将在 .vscode 文件夹中创建或修改 c_cpp_properties.json 文件 {"configurations": [{"name…...
前后端中Json数据的简单处理
很多时候因为数据库中不想创建中间表去存一些数据,所以在一个实体表中用一个json字段去存储并处理这些数据。本人倾向在前端js部分直接处理json数据,后端只做存储,不做处理。 前端在获取表单的时候解析 toEdit(row) {this.editForm { ...ro…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
