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…...

视频生成的发展史及其原理解析:从Gen2、Emu Video到PixelDance、SVD、Pika 1.0
前言 考虑到文生视频开始爆发,比如11月份就是文生视频最火爆的一个月 11月3日,Runway的Gen-2发布里程碑式更新,支持4K超逼真的清晰度作品(runway是Stable Diffusion最早版本的开发商,Stability AI则开发的SD后续版本)11月16日&a…...

SQL Server 2016(基本概念和命令)
1、文件类型。 【1】主数据文件:数据库的启动信息。扩展名为".mdf"。 【2】次要(辅助)数据文件:主数据之外的数据都是次要数据文件。扩展名为".ndf"。 【3】事务日志文件:包含恢复数据库的所有事务…...

Linux C语言 30-套接字操作
Linux C语言 30-套接字操作 本节关键字:C语言 网络通信、套接字操作、TCP、UDP、服务端、客户端 相关C库函数:socket, bind, listen, accept, setsockopt, recv, send, recvfrom, sendto, close 什么是网络通信? 通信是人与人之间通过某种…...

RPC和REST对比
RPC和REST对比 参考学习 RPC 和 REST 之间有什么区别? 当我们对比RPC和REST时,其实是在对比RPC风格的API和REST风格的API,后者通常成为RESTful API。 远程过程调用(RPC)和 REST 是 API 设计中的两种架构风格。API …...

外包干了2年,技术退步明显。。。
前言 简单的说下,我大学的一个同学,毕业后我自己去了自研的公司,他去了外包,快两年了我薪资、技术各个方面都有了很大的提升,他在外包干的这两年人都要废了,技术没一点提升,学不到任何东西&…...

深度学习——第1章 深度学习的概念及神经网络的工作原理
1.1 序言——探索智能机器 千百年来,人类试图了解智能的机制,并将它复制到思维机器上。 人类从不满足于让机械或电子设备帮助做一些简单的任务,例如使用滑轮吊起沉重的岩石,使用计算器做算术。 人类希望计算机能够自动化执行更…...

爬虫爬取百度图片、搜狗图片
通过以下代码可以爬取两大图片网站(百度和搜狗)的图片,对于人工智能、深度学习中图片数据的搜集很有帮助! 一、爬取百度图片 该代码可以爬取任意百度图片中自定义的图片: import requests import re import time imp…...

Android Camera2使用
一 简介 1.1 Camera API: 这是旧版本的相机API,也称为Camera1 API。它提供了较简单的使用方式,适用于旧版Android设备。但它存在一些限制,如性能不佳、操作复杂等 1.2 Camera2 API: 这是新版本的相机API࿰…...

IOS/安卓+charles实现抓包(主要解决证书网站无法打开问题)
安装 官网下载 https://www.charlesproxy.com/latest-release/download.do 安装charles文档 流程 上述链接解决下图问题 使用介绍 Charles介绍 上述链接看一至三即可,了解首页各个按钮的作用 charles全面使用教程及常见功能详解(较详细)…...

七、Lua字符串
文章目录 一、字符串(一)单引号间的一串字符(二)local str "Hello, "(三)[[ 与 ]] 间的一串字符(四)例子 二、字符串长度计算(一)string.len&…...