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…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
