Redis7——基础篇(一)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。
基础篇:
- Redis(一)
一、Redis定义
官网地址:Redis - The Real-time Data Platform
Redis 的全称是 Remote Dictionary Server,即远程字典服务 。它将数据存储在内存中,这使得它的读写速度极快,能够轻松应对每秒数十万次的读写操作,极大地提升了系统的响应速度。
除了高速读写,Redis 还支持多种数据结构,如字符串(string)、列表(list)、哈希(hash)、集合(set)和有序集合(sorted set) 等。不同的数据结构适用于不同的业务场景,这使得 Redis 能够满足各种复杂的业务需求。
二、Redis功能
(一)、存储多数据结构
- 字符串(String)
- 列表(list)
- 哈希(Hash)
- 集合(Set)
- 有序集合(Sorted Set)
- 位图(BitMap)
- 位域(BitFiled)
- 流(Stream)
- 地理空间(Geo)
- 基数统计(HyperLogLog)
(二)、高速读写
- 基于内存存储:Redis将数据存储在内存中,内存的读写速度远远快于磁盘,这使得Redis能够在极短的时间内完成数据的读写操作。
- 单线程模型:Redis采用单线程模型来处理命令请求,避免了多线程环境下的上下文切换和琐的竞争问题。在多线程模型中,线程直接的切换需要消耗一定的时间和资源,而且为了保证数据的一致性,往往需要使用各种琐机制,这会导致性能的下降。而Redis的单线程模型,就像一个高效的独奏者,专注地处理每一个请求,无需担心线程间的干扰,使得Redis能够充分发挥其高性能的优势。
- 高效的数据结构:前面提到的丰富的数据结构,都经过精心设计,具有高效的查找和操作性能。
- I/O多路复用:Redis使用I/O多路复用技术,能够在一个线程中同时监听多个套接字,当有事件发生时,才对相应的套接字进行处理,避免了I/O操作上的无谓等待,大大提高了Redis的并发处理能力。
(三)、持久化机制
虽然Redis主要将数据存储在内存中以实现高速读写,但为了防止数据因服务器重启、断电等意外情况丢失数据,持久化机制就显得尤其重要。Redis提高了两种持久化方式:RDB(Redis Database)和AOF(Append Only File)。
- RDB(Redis Database):RDB是将内存中的数据以快照的形式保存到磁盘上。当满足一定条件,如达到指定的时间间隔且有一定数量的写操作发生,Redis会fork一个子进程,由子进程将内存中的数据写入到一个临时的RDB文件中,写入完成后,在用临时文件替换原来的RDB文件。RDB的优点:①、生成的RDB文件体积小。②、恢复数据时速快,适用于大规模数据的恢复。RDB的缺点:①、丢失数据风险大。②、当保存的数据集比较大时,fork的过程比较耗时,会影响毫秒级的客户请求,影响性能。
- AOF(Append Only File):AOF则是将每次的写操作都追加到一个日志文件中,记录服务器执行的每一个写命令。当Redis重启时,会重新执行AOF文件中的命令,将数据恢复到之前的状态。AOF的优点:①、丢失数据风险比RDB小,数据完整性和一致性高。②、文件内容易于理解和解析。③、当文件变大时,可以自动进行压缩重写,避免占用过多磁盘空间。AOF的缺点:①、文件体积大,即使压缩过也比RDB大。②、AOF恢复数据的时速比RDB慢。
(四)、其他高级功能
- 发布/订阅(PUBLISH/SUBSCRIBE):是一种消息通信模式,发送者(PUBLISH)发送消息,订阅者(SUBSCRIBE)接收消息,可以实现进程间的消息传递。
- 事务(Transaction):Redis通过MULTI(开启事务)、EXEC(执行)、DISCARD(取消)、WATCH(监控某个key)四个命令来实现事务功能。事务可以将一组命令打包,要么全部成功执行,要么全部失败,没有回滚操作。
- 管道(Pipeline):管道功能允许客户端将多个命令一次性打包发给服务器,服务器在接收到这些命令后,以此执行并将所有响应一次性返回给客服端。虽然管道可以将多个命令一次性发送给服务器,但管道中的命令不具有原子性。也就是说,在管道执行过程中,如果某个命令执行失败,不会影响其他命令的执行。
- 分布式琐:在分布式系统中,为了保证同一时刻只有一个线程或者进程能够访问共享资源,需要使用分布式琐。Redis可以利用其原子性操作和高可用性来实现分布式琐。
用一张图总结Redis功能:
三、Redis下载与安装
(一)、下载
官方网站下载需要注册,麻烦 ̄へ ̄,建议直接上github。Release 7.4.2 · redis/redis · GitHub
(二)、安装与配置
1、windows
由于企业里面开发用到Redis,多数都是Linux,windows版可以自己手动安装与配置。
2、Linux
2.1、前提说明
在Linux下安装与配置Redis,有两种方案:
1、购买云服务器(自带Linux环境),直接安装和配置Redis即可。
2、安装VMWare本地虚拟机。
我采用方案二。VMWare的安装默认都会,这里不做说明,不会自行百度。
2.2、安装配置
1、Linux安装Redis必须具备c环境
下载gcc命令
yum -y install gcc-c++
查看gcc版本命令
gcc -v
2、安装Redis
可以将下载好的Redis上传的Linux上,也可以直接yun下载。将下载好的Redis放在/opt下面
wget https://download.redis.io/releases/redis-7.4.2.tar.gz
3、解压
tar -zxvf redis-7.4.2.tar.gz
4、编译与安装
make && make install
如果出现这段提示命令,代表安装成功,可以进入下一步了。
5、查看默认安装目录
Linux下的/usr/local相当于我们Windows下的C:\Program Files
文件说明:
- redis-benchmark:性能测试工具
- redis-check-aof:AOF文件修复工具
- redis-check-rdb:rdb文件修复工具
- redis-cli:redis客户端启动命令
- redis-sentinel:redis集群使用
- redis-server:redis服务端启动命令
6、拷贝原始配置文件
新建一个/myredis目录用来存放配置文件。
7、修改配置文件
用vim命令修改刚刚拷贝的文件,进行配置初始化处理。
vim修改命令自行百度查阅。修改点如下:
- 默认daemoneize 改为 yes
- protected-mode 改为 no
- bind 127.0.0.1 直接注释(默认的会影响远程ip连接)
- 添加redis客户端登录密码 requirepass xxxx密码
8、启动redis服务
没有任何输出代表服务启动成功,(Linux环境有输出才害怕⊙﹏⊙∥)。
9、连接服务
输入ping,返回PONG,代表连接客户端成功。常用的一下参数说明:
-a:代表连接的redis服务器需要密码
-h:是指定服务器ip地址
-p:指定连接端口
-c:是连接redis集群
--pipe:将一组命令通过管道传递给redis
10、永远的hello world
11、关机
如果连接着客户端,直接shutdown。如果没有,就使用
redis-cli -a 密码 shutdown
进行关闭。
四、总结
至此,通往 Redis 知识殿堂的学习桥梁已然稳固搭建,真正的精彩征程才刚刚拉开帷幕。在这之后,将是一场充满挑战与惊喜的深度探索,每一步都可能解锁新的技能,每一次钻研都有望收获全新的感悟。接下来的学习才是这场 Redis 之旅的重头戏,让我们怀揣热忱,全力奔赴吧!
ps:努力到底,让持续学习成为贯穿一生的坚守。学习笔记持续更新中。。。。
相关文章:

Redis7——基础篇(一)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一) 一、Redis定义 官网地址:Redis - The Real-time Data Platform R…...

day9手机创意软件
趣味类 in:记录趣味生活(通用) 魔漫相机:真人变漫画(通用) 活照片:让照片活过来(通用) 画中画相机:与众不同的艺术 年龄检测仪:比一比谁更年轻…...
C# Dictionary的实现原理
在 C# 中,Dictionary<TKey, TValue> 是一个基于哈希表(Hash Table)实现的键值对集合。它提供了高效的插入、删除和查找操作,平均时间复杂度接近 O(1)。下面是 Dictionary 的核心实现原理: 1. Dictionary 的核心数…...
学习笔记-人脸识别相关编程基础
通过编程实现人脸识别功能,需要掌握一定的技术基础,包括编程语言、图像处理、机器学习以及相关的库和框架: 1. 编程语言 Python:Python 是实现人脸识别最常用的语言之一,因为它有大量的库和框架支持,如 Op…...

BUU37 [DASCTF X GFCTF 2024|四月开启第一局]web1234【代码审计/序列化/RCE】
Hint1:本题的 flag 不在环境变量中 Hint2:session_start(),注意链子挖掘 题目: 扫描出来www.zip class.php <?phpclass Admin{public $Config;public function __construct($Config){//安全获取基…...

(五)Spring Boot学习——spring security +jwt使用(前后端分离模式)
一定要熟悉spring security原理和jwt无状态原理,理解了才知道代码作用。 在 Spring Security JWT 认证流程中,通常的做法是: 用户提交用户名和密码Spring Security 认证管理器 (AuthenticationManager) 进行认证如果认证成功,生…...

Java中使用EasyExcel
Java中使用EasyExcel 文章目录 Java中使用EasyExcel一:EasyExcel介绍1.1、核心函数导入数据导出数据 1.2、项目实际应用导入数据导出数据 1.3、相关注解ExcelProperty作用示例 二:EasyExcel使用2.1、导入功能2.2、导出功能 三:EasyExcel完整代…...
前沿科技改变生活新趋势
纳米技术在电子设备制造中的应用越来越广泛。这种技术能够帮助制造更小、更快、更耐用的电子产品。 举个例子,手机的处理器是其核心部件。随着纳米技术的进步,现在的处理器比以前小得多,但功能却更强。这样不仅让手机变得更轻薄,…...
不到一个月,SQLite 3.49.0来了
距离 SQLite 3.48.0 发布不到一个月,SQLite 开发团队于 2025 年 2 月 6 日发布了 SQLite 3.49.0 版本。这更新速度的确让人感动,那么这个版本又有哪些更新呢? 查询优化器 新版本改进了自动索引(query-time index)优化…...
Android车机DIY开发之软件篇(十四)编译i.mx8mplus官方kernel
1.下载 下载地址 2.安装依赖 sudo apt-get update sudo apt-get install build-essential git libncurses5-dev libssl-dev bc sudo apt-get install gcc-aarch64-linux-gnu export CROSS_COMPILEaarch64-linux-gnu- 3.配置 make ARCHarm64 defconfig 4.编译 make ARCHa…...

Mac上搭建宝塔环境并部署PHP项目
安装Docker Desktop》搭建Centos版本的宝塔环境》部署PHP项目 1. 下载Docker for mac 软件:https://www.docker.com/ 或使用终端命令:brew install --cask --appdir/Applications docker 2. 使用命令安装宝塔环境的centos7系统: docker pul…...

3.3.3 VO-O语法- 语法算子(二)
循环遍历 由于VO语言是面向数据集的,其所有隐含的语义中都已经带有了遍历并计算的数据逻辑。因此,VO语言只提供了一种支持循环语法的算子--Loop算子。 Loop算子 Loop算子是一个容器算子,其可以实现对其内部子流程的循环迭代运行。但Loop算…...
安装 Ollama 需要哪些步骤?(windows+mac+linux+二进制+Docker)
安装 Ollama 的步骤根据操作系统不同会有所差异,以下是针对不同操作系统的详细安装指南: Windows 系统 下载安装包:访问 Ollama 官方下载页面,下载适用于 Windows 的安装程序 OllamaSetup.exe。运行安装程序:双击下载的安装包,按照提示完成安装。默认安装路径为 C:\User…...

HCIA项目实践--静态路由的综合实验
八 静态路由综合实验 (1)划分网段 # 192.168.1.0 24#分析:每个路由器存在两个环回接口,可以把两个环回接口分配一个环回地址,所以是四个环回,一个骨干,这样分配,不会出现路由黑洞#19…...

Electron视图进程和主进程通讯
快速创建基于vue的electron项目:quick-start/create-electron - npm 视图线程也就index.html是无法直接访问这个api的(如果没有开启视图层访问nodejs的功能,现在几乎没法直接开启,开启了一堆警告提示) 所以需要通过r…...

Vript-Hard——一个基于高分辨率和详细字幕的视频理解算法
一、概述 多模态学习的最新进展促进了对视频理解和生成模型的研究。随之而来的是,对高分辨率视频和详细说明所建立的高质量数据集的需求激增。然而,由于时间因素的影响,视频与文本的配对不像图像那样容易。准备视频和文本配对是一项困难得多…...
react脚手架搭建react项目使用scss
1.create-react-app 创建的项目,webpack配置默认是隐藏的 ,如果要查看 或修改用npm run eject命令,因为create-react-app脚手架默认已经配置了scss、sass所以不用改webpack配置。如果用less 就需要自己添加配置 2.如果直接使用scss的文件会直接报错&…...

Vue.js 状态管理库Pinia
Pinia Pinia :Vue.js 状态管理库Pinia持久化插件-persist Pinia :Vue.js 状态管理库 Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。 要使用Pinia ,先要安装npm install pinia在main.js中导入Pinia 并使用 示例…...
【Stable Diffusion部署至GNU/Linux】安装流程
以下是安装Stable Diffusion的步骤,以Ubuntu 22.04 LTS为例子。 显卡与计算架构介绍 CUDA是NVIDIA GPU的专用并行计算架构 技术层级说明CUDA Toolkit提供GPU编译器(nvcc)、数学库(cuBLAS)等开发工具cuDNN深度神经网络加速库(需单独下载)GPU驱动包含CUDA Driver(需与CUDA …...

【C/C++算法】从浅到深学习---滑动窗口(图文兼备 + 源码详解)
绪论:冲击蓝桥杯一起加油!! 每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 本章是算法训练的第二章----滑动窗口,它的本质是双指针算法的衍生所以我将…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...