Redis相关知识
- yum安装redis
使用以下命令:直接将redis安装到Linux服务器(Xshell)中
yum -y install redis
- 启动redis
使用以下命令,以后台运行方式启动redis
redis-server /etc/redis.conf &
- 操作redis
使用以下命令启动redis客户端
redis-cli
具体可操作如下:
redis-cli:打开客户端
set testname zhangsan:存放一个key
get testname:读取一个key
-
设置远程连接
a.将redis配置文件下载到本地;redis配置文件是linux下的/etc/redis.conf
b.将redis.conf中的“bin 127.0.0.1”注释掉
c.将redis.conf中的“protected-mode yes"改为:“protected-mode no"
d.将修饰后的redis.conf上传至linux下 的/etc目录
e.使用命令”redis-cli shutdown“先关闭redis服务;在使用”redis-server /etc/redis.conf &“开启redis服务
f.云服务防火墙或安全策略里面开放redis端口6379
redis有五大基础数据类型:
String | 字符串类型(使用较多) |
Hash | 字典类型 |
List | 列表类型 |
Set | 集合类型 |
Zset | 有序集合类型 |
1.String:字符串类型(使用较多)
简单动态字符串,它是从键值对key-value的形式存储的,根据key来存储和获取value值,它的使用相对来说比较简单,但是在实际项目中应用非常广泛:
使用如下:
set k1 v1:添加数据
get k1:查询数据
strlen k1:查询字符串的长度
可以使用ex参数来设置字符串的过期时间
set k1 v1 ex 1000 :设置1000s后过期(删除)
字符串的常见使用场景:
- 存放用户登录信息
- 存放文章详情和列表信息
- 存放和累计网页的统计信息
- …………………………
2.Hash:字典类型
字典类型又被称为散列类型或者是哈希表类型,它是将一个键值(key)和一个特殊的“哈希表”关联起来,这个“哈希表”包含两列数据:字段和值,他就相当于Java中的Map<String , Map<String , String>>结构。
假如我们使用字典类型来存储一篇文章的详情信息,存储结构如下:
同理,我们也可以使用字典类型来存储用户信息,并且字典类型来存储此类信息就无需手动序列化和反序列化数据了,所以使用起来更加的方便和高校。
字典类型的使用如下:
hset myhash key1 value1:添加数据
hset myhash key1:查询数据
字典类型的查询数据只能一个一个的查询,不能一次全部查询完!!
通常情况下,字典类类型会使用数组的方式来存储相关的数据,但发生哈希冲突时,才会使用链表的结构来存储数据。
添加多个数据:hmset myhset age "16" sex "男"
查询:hget myhset age
hget myhset sex
3.List:列表类型
列表类型是一个使用链表结构存储的有序结构,它的元素插入会按照先后顺序存储到链表结构中,因此,它的元素操作(插入删除实时间复杂度为O(1)),所以相对来说速度还是比较块的,但它的查询时间复杂度为O(n),因此查询可能会比较慢。
列表类型使用如下:
lpush list 1 2 3:添加数据
lpop list :获取并删除列表的第一个元素
列表的典型使用场景可以有以下两个:
- 消息队列:列表类型可以使用rpush实现先进先出的功能,同时又可以使用lpop轻松的弹出(查询并删除)第一个元素,所以列表类型可以用来实现消息队列。
- 文查列表:对于博客站点来说,用户和文字都越来越多时,为了加快程序的响应速度,我们可以把用户的文字存入到list中,因为List是有序的结构,所以这样又可以完美的实现分页功能,从而加速了程序的相应速度。
4.Set:集合类型
Set:集合类型是一个无序并唯一的键值集合
集合类型使用场景如下:
sadd myset v1 v2 v3 :添加数据
smembers myset :查询集合中的所有数据
集合类型的经典使用场景如下:
- 微博关注我的人和我关注的人都适合用集合存储,可以保证人员不会重复
- 中奖人信息也适合用集合类型存储,这样可以保证一个人不会重复中奖
集合类型(Set)和列表类型(List)的区别如下:
- 列表可以存储重复元素,集合只能存储非重复元素
- 列表是按照元素的先后顺序存储元素的,而集合是无序方式存储元素的
5.Zset:有序集合类型
有序集合类型相比于集合类型多了一个排序属性score(分值),对于有序集合Zset来说,每个存储元素相当于两个值组成的,一个是有序结合的元素值,一个属排序值,有序集合的存储元素值也是不能重复的,但分值是可以重复的。
当我们把学生的成绩存储在有序集合中,它的存储结构如下所示:
有序集合类型的使用如下:
zadd zset1 3 golong 4 sql 1 redis:添加数据
zrange zset 0 -1 :查询所有数据
有序集合的经典使用场景如下:
- 学生成绩排名
- 粉丝列表,根据关注的先后时间排序
Spring Boot集成Redis的详细教程:
首先,我们需要创建一个Spring Boot项目。可以使用IDEA或者Eclipse等工具创建,也可以直接在命令行中使用Spring Initializr来创建。这里我们以IDEA为例,步骤如下:
- 打开IntelliJ IDEA,点击"Create New Project"。
- 选择"Spring Initializr",点击"Next"。
- 填写项目的基本信息,如Group、Artifact、Name等,点击"Next"。
- 选择需要的依赖,这里我们需要添加"Web"和"Redis"的依赖,点击"Next"。
- 确认项目的设置,点击"Finish",等待项目创建完成。
三、添加Redis依赖
在项目的pom.xml文件中,添加Spring Boot对Redis的支持。代码如下:
<dependencies><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>
</dependencies>
四、配置Redis
在application.properties文件中,配置Redis的相关信息。代码如下:
spring.redis.host=localhost
spring.redis.port=6379
五、创建Redis配置类
在项目中创建一个配置类,用于配置RedisTemplate。代码如下:
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);return template;}
}
六、使用RedisTemplate操作Redis
在需要操作Redis的地方,注入RedisTemplate,然后使用其提供的方法进行操作。代码如下:
@Service
public class UserService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// ...其他方法...
}
七、测试Redis操作
为了测试Redis的操作,我们可以在UserService中添加一个方法,用于向Redis中添加和获取用户信息。代码如下:
@Service
public class UserService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// ...其他方法...public void addUser(String key, User user) {redisTemplate.opsForValue().set(key, user);}public User getUser(String key) {return (User) redisTemplate.opsForValue().get(key);}
}
八、启动Spring Boot应用并测试Redis操作
启动Spring Boot应用后,我们可以使用Postman或者浏览器等工具,调用UserService的addUser和getUser方法,测试Redis的操作。如果一切正常,我们应该可以看到用户信息被正确地添加到Redis中,并且可以通过key获取到用户信息。
至此,我们已经成功地在Spring Boot项目中集成了Redis,并且可以正常使用RedisTemplate进行操作。在实际开发中,我们还可以使用Spring Data Redis提供的Repository接口,更方便地进行CRUD操作。同时,我们还可以使用Redis的发布/订阅功能,实现消息的广播和接收。
相关文章:

Redis相关知识
yum安装redis 使用以下命令:直接将redis安装到Linux服务器(Xshell)中 yum -y install redis 启动redis 使用以下命令,以后台运行方式启动redis redis-server /etc/redis.conf & 操作redis 使用以下命令启动redis客户端 redis-…...
数据管理系统-week10-自由访问控制
文章目录 前言一、用户管理用户管理语句介绍二、数据库管理三、特权(重点考点)Administrative (global) privileges数据库特权表权限列权限四、角色参考文献前言 这节课主要讲了用户管理数据库的具体语句,数据库特权当中的全局特权,数据库特权,表特权与列特权的使用与注意…...

Python遥感开发之批量拼接
Python遥感开发之批量拼接 1 遥感图像无交错的批量拼接2 遥感图像有交错的批量拼接 前言:主要借助python实现遥感影像的批量拼接,遥感影像的批量拼接主要分为两种情况,一种是遥感图像无交错,另一种情况是遥感图像相互有交错。具体…...

【bat】批处理脚本大全
目录 1.概述 2.变量 3.运算符 3.2.重定向运算符 3.3.多命名运算符 3.4.管道运算符 4.命令 4.1.基本命令 4.2.参数传递 4.3.查看脚本内容 4.4.注释 4.5.日期和时间 4.6.启动脚本 4.7.调用其他bat 4.8.任务管理 4.8.1.任务列表查看 4.8.2.任务终止 4.9.文件夹 …...

java设计模式学习之【单例模式】
文章目录 引言单例模式简介定义与用途实现方式:饿汉式懒汉式 UML 使用场景优势与劣势单例模式在spring中的应用饿汉式实现懒汉式实现数据库连接示例代码地址 引言 单例模式是一种常用的设计模式,用于确保在一个程序中一个类只有一个实例,并且…...

UWB高精度定位系统项目源码
在现代社会中,精准定位技术对于各行各业都至关重要。为了满足对高精度定位的需求,超宽带(Ultra-Wideband, UWB)技术应运而生。UWB高精度定位系统以其出色的定位精度和多样化的应用领域而备受关注。本文将深入探讨UWB高精度定位系统…...

WPF Live Charts2 自学笔记
文章目录 前言实现效果微软平台的历史问题 WPF 项目搭建Nuget添加额外框架添加项目初始化livecharts配置其它LiveCharts2 案例简单案例Demo示例ViewViewModel GPU渲染 Github地址仓库 前言 LiveChart 是C# 上面很受欢迎的统计图 UI控件。最近在学WPFhalcon开发,想想…...

大小堆的实现(C语言)
目录 前言 一种完全二叉树:堆 堆的概念 堆的性质 建堆的时间复杂度 建堆的空间复杂度: 小堆的实现 必要补充 堆的初始化 堆的销毁 向上调整算法 堆的插入 向下调整算法 堆的删除 获取堆顶元素 获取堆中元素个数 堆的判空 最终代码 He…...

Linux系统之centos7编译安装Python 3.8
前言 CentOS (Community Enterprise Operating System) 是一种基于 Red Hat Enterprise Linux (RHEL) 进行源代码再编译并免费提供给用户的 Linux 操作系统。 CentOS 7 采用了最新的技术和软件包,并提供了强大的功能和稳定性。它适用于各种服务器和工作站应用场景&a…...

Lambda表达式与方法引用
作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 引子 先来看一个案例 …...
二维数组处理(一)
输入整型二维数组a(5行5列),完成如下要求: 输出二维数组a。 将a的第2行和第4行元素对调后,形成新的二维数组a并按行输出,每个元素之间隔一个空格。(行号从0开始计算)。 用对角线(指二维数组左…...

基于JNI实现调用C++ SDK
基于JNI实现调用C SDK 背景分析解决实践 背景 上篇文章总结了几种Java项目调用C/C SDK项目方法,在逐一实践、踩坑后,最终还是敲定采用 JNI 方式进行实现。在文章开始的过程,会先大概讲讲笔者遇到的情况,因为封装方式需要根据实际…...

计算机组成原理笔记——存储器(静态RAM和动态RAM的区别,动态RAM的刷新, ROM……)
■ 随机存取存储器 ■ 1.随机存取存储器:按存储信息的原理不同分为:静态RAM和动态RAM 2.静态RAM(SRAM):用触发器工作原理存储信息,但电源掉电时,存储信息会丢失具有易失性。 3.存储器的基本单元…...

企业计算机服务器locked1勒索病毒数据恢复,locked1勒索病毒解密流程
随着计算机技术的不断发展,越来越多的企业走向数字化办公时代,计算机技术为企业的生产运营提供了有利条件,但也为企业带来了网络安全威胁。在本月,云天数据恢复中心陆续接到很多企业的求助,企业的速达办公软件遭到了lo…...

Session 与 JWT 的对决:谁是身份验证的王者? (下)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...

论文笔记:Confidential Assets
Confidential Assets 描述了一种称为“保密交易”的方案,该方案模糊了所有UTXO的金额,同时保持了不创建或销毁硬币的公共可验证性。进一步将此方案扩展到“保密资产”,一种单一的基于区块链的分类帐可以跟踪多种资产类型的方案。将保密交易扩…...

Docker下搭建MySQL主从复制
目录 主从复制简介 主从复制搭建 主从复制简介 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数 据库一般是准实时的业务数据库。 主从复制的作用 做数据的热备。作为后备数据库,主数据库服务器故…...

VBA数据库解决方案第七讲:如何利用Recordset对象打开数据库的数据记录集
《VBA数据库解决方案》教程(版权10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…...

内部培训平台的系统 PlayEdu搭建私有化内部培训平台
PlayEdu是由白书科技团队多年经营的线上教育系统,专为企业提供的全新企业培训方案 我们的目标是为更多的企业机构搭建私有化内部培训平台,以满足不断增长的培训需求 通过PlayEdu,企业可以有效地组织和管理培训资源,提供高质量的…...
Elasticsearch 相似度评分模型介绍
前言 Elasticsearch 是基于 Lucene 的世界范围内最流行的全文检索框架,其文档相似度算法包含 TF/IDF 和 BM25,从 ES 5.0开始 BM25 算法已经成为 ES 默认的相似度评分模块。 TF-IDF 与 BM25 的区别 TF-IDF 和 BM25 都是计算文本相似性的常用算法。TF-ID…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
[USACO23FEB] Bakery S
题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC 的时间内生产一块饼干或在 t M t_M tM 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC,tM≤109)。由于空间…...

深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件,其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时,价带电子受激发跃迁至导带,形成电子-空穴对,导致材料电导率显著提升。…...