当前位置: 首页 > news >正文

Redis7——基础篇(一)

前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。

基础篇:

  1. Redis(一)

一、Redis定义

官网地址:Redis - The Real-time Data Platform

Redis 的全称是 Remote Dictionary Server,即远程字典服务 。它将数据存储在内存中,这使得它的读写速度极快,能够轻松应对每秒数十万次的读写操作,极大地提升了系统的响应速度。

除了高速读写,Redis 还支持多种数据结构,如字符串(string)、列表(list)、哈希(hash)、集合(set)和有序集合(sorted set) 等。不同的数据结构适用于不同的业务场景,这使得 Redis 能够满足各种复杂的业务需求。


二、Redis功能

(一)、存储多数据结构

  1. 字符串(String)
  2. 列表(list)
  3. 哈希(Hash)
  4. 集合(Set)
  5. 有序集合(Sorted Set)
  6. 位图(BitMap)
  7. 位域(BitFiled)
  8. 流(Stream)
  9. 地理空间(Geo)
  10. 基数统计(HyperLogLog)

(二)、高速读写

  1. 基于内存存储:Redis将数据存储在内存中,内存的读写速度远远快于磁盘,这使得Redis能够在极短的时间内完成数据的读写操作。
  2. 单线程模型:Redis采用单线程模型来处理命令请求,避免了多线程环境下的上下文切换和琐的竞争问题。在多线程模型中,线程直接的切换需要消耗一定的时间和资源,而且为了保证数据的一致性,往往需要使用各种琐机制,这会导致性能的下降。而Redis的单线程模型,就像一个高效的独奏者,专注地处理每一个请求,无需担心线程间的干扰,使得Redis能够充分发挥其高性能的优势。
  3. 高效的数据结构:前面提到的丰富的数据结构,都经过精心设计,具有高效的查找和操作性能。
  4. I/O多路复用:Redis使用I/O多路复用技术,能够在一个线程中同时监听多个套接字,当有事件发生时,才对相应的套接字进行处理,避免了I/O操作上的无谓等待,大大提高了Redis的并发处理能力。

(三)、持久化机制

虽然Redis主要将数据存储在内存中以实现高速读写,但为了防止数据因服务器重启、断电等意外情况丢失数据,持久化机制就显得尤其重要。Redis提高了两种持久化方式:RDB(Redis Database)和AOF(Append Only File)。

  1. RDB(Redis Database):RDB是将内存中的数据以快照的形式保存到磁盘上。当满足一定条件,如达到指定的时间间隔且有一定数量的写操作发生,Redis会fork一个子进程,由子进程将内存中的数据写入到一个临时的RDB文件中,写入完成后,在用临时文件替换原来的RDB文件。RDB的优点:①、生成的RDB文件体积小。②、恢复数据时速快,适用于大规模数据的恢复。RDB的缺点:①、丢失数据风险大。②、当保存的数据集比较大时,fork的过程比较耗时,会影响毫秒级的客户请求,影响性能。
  2. AOF(Append Only File):AOF则是将每次的写操作都追加到一个日志文件中,记录服务器执行的每一个写命令。当Redis重启时,会重新执行AOF文件中的命令,将数据恢复到之前的状态。AOF的优点:①、丢失数据风险比RDB小,数据完整性和一致性高。②、文件内容易于理解和解析。③、当文件变大时,可以自动进行压缩重写,避免占用过多磁盘空间。AOF的缺点:①、文件体积大,即使压缩过也比RDB大。②、AOF恢复数据的时速比RDB慢。

(四)、其他高级功能

  1. 发布/订阅(PUBLISH/SUBSCRIBE):是一种消息通信模式,发送者(PUBLISH)发送消息,订阅者(SUBSCRIBE)接收消息,可以实现进程间的消息传递。
  2. 事务(Transaction):Redis通过MULTI(开启事务)、EXEC(执行)、DISCARD(取消)、WATCH(监控某个key)四个命令来实现事务功能。事务可以将一组命令打包,要么全部成功执行,要么全部失败,没有回滚操作。
  3. 管道(Pipeline):管道功能允许客户端将多个命令一次性打包发给服务器,服务器在接收到这些命令后,以此执行并将所有响应一次性返回给客服端。虽然管道可以将多个命令一次性发送给服务器,但管道中的命令不具有原子性。也就是说,在管道执行过程中,如果某个命令执行失败,不会影响其他命令的执行。
  4. 分布式琐:在分布式系统中,为了保证同一时刻只有一个线程或者进程能够访问共享资源,需要使用分布式琐。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

文件说明:

  1. redis-benchmark:性能测试工具
  2. redis-check-aof:AOF文件修复工具
  3. redis-check-rdb:rdb文件修复工具
  4. redis-cli:redis客户端启动命令
  5. redis-sentinel:redis集群使用
  6. redis-server:redis服务端启动命令

6、拷贝原始配置文件

新建一个/myredis目录用来存放配置文件。


7、修改配置文件

用vim命令修改刚刚拷贝的文件,进行配置初始化处理。

vim修改命令自行百度查阅。修改点如下

  1. 默认daemoneize 改为 yes
  2. protected-mode 改为 no
  3. bind 127.0.0.1 直接注释(默认的会影响远程ip连接)
  4. 添加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:记录趣味生活(通用) 魔漫相机:真人变漫画(通用) 活照片:让照片活过来(通用) 画中画相机:与众不同的艺术 年龄检测仪:比一比谁更年轻&#xf…...

C# Dictionary的实现原理

在 C# 中&#xff0c;Dictionary<TKey, TValue> 是一个基于哈希表&#xff08;Hash Table&#xff09;实现的键值对集合。它提供了高效的插入、删除和查找操作&#xff0c;平均时间复杂度接近 O(1)。下面是 Dictionary 的核心实现原理&#xff1a; 1. Dictionary 的核心数…...

学习笔记-人脸识别相关编程基础

通过编程实现人脸识别功能&#xff0c;需要掌握一定的技术基础&#xff0c;包括编程语言、图像处理、机器学习以及相关的库和框架&#xff1a; 1. 编程语言 Python&#xff1a;Python 是实现人脸识别最常用的语言之一&#xff0c;因为它有大量的库和框架支持&#xff0c;如 Op…...

BUU37 [DASCTF X GFCTF 2024|四月开启第一局]web1234【代码审计/序列化/RCE】

Hint1&#xff1a;本题的 flag 不在环境变量中 Hint2&#xff1a;session_start&#xff08;&#xff09;&#xff0c;注意链子挖掘 题目&#xff1a; 扫描出来www.zip class.php <?phpclass Admin{public $Config;public function __construct($Config){//安全获取基…...

(五)Spring Boot学习——spring security +jwt使用(前后端分离模式)

一定要熟悉spring security原理和jwt无状态原理&#xff0c;理解了才知道代码作用。 在 Spring Security JWT 认证流程中&#xff0c;通常的做法是&#xff1a; 用户提交用户名和密码Spring Security 认证管理器 (AuthenticationManager) 进行认证如果认证成功&#xff0c;生…...

Java中使用EasyExcel

Java中使用EasyExcel 文章目录 Java中使用EasyExcel一&#xff1a;EasyExcel介绍1.1、核心函数导入数据导出数据 1.2、项目实际应用导入数据导出数据 1.3、相关注解ExcelProperty作用示例 二&#xff1a;EasyExcel使用2.1、导入功能2.2、导出功能 三&#xff1a;EasyExcel完整代…...

前沿科技改变生活新趋势

纳米技术在电子设备制造中的应用越来越广泛。这种技术能够帮助制造更小、更快、更耐用的电子产品。 举个例子&#xff0c;手机的处理器是其核心部件。随着纳米技术的进步&#xff0c;现在的处理器比以前小得多&#xff0c;但功能却更强。这样不仅让手机变得更轻薄&#xff0c;…...

不到一个月,SQLite 3.49.0来了

距离 SQLite 3.48.0 发布不到一个月&#xff0c;SQLite 开发团队于 2025 年 2 月 6 日发布了 SQLite 3.49.0 版本。这更新速度的确让人感动&#xff0c;那么这个版本又有哪些更新呢&#xff1f; 查询优化器 新版本改进了自动索引&#xff08;query-time index&#xff09;优化…...

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 软件&#xff1a;https://www.docker.com/ 或使用终端命令&#xff1a;brew install --cask --appdir/Applications docker 2. 使用命令安装宝塔环境的centos7系统&#xff1a; docker pul…...

3.3.3 VO-O语法- 语法算子(二)

循环遍历 由于VO语言是面向数据集的&#xff0c;其所有隐含的语义中都已经带有了遍历并计算的数据逻辑。因此&#xff0c;VO语言只提供了一种支持循环语法的算子--Loop算子。 Loop算子 Loop算子是一个容器算子&#xff0c;其可以实现对其内部子流程的循环迭代运行。但Loop算…...

安装 Ollama 需要哪些步骤?(windows+mac+linux+二进制+Docker)

安装 Ollama 的步骤根据操作系统不同会有所差异,以下是针对不同操作系统的详细安装指南: Windows 系统 下载安装包:访问 Ollama 官方下载页面,下载适用于 Windows 的安装程序 OllamaSetup.exe。运行安装程序:双击下载的安装包,按照提示完成安装。默认安装路径为 C:\User…...

HCIA项目实践--静态路由的综合实验

八 静态路由综合实验 &#xff08;1&#xff09;划分网段 # 192.168.1.0 24#分析&#xff1a;每个路由器存在两个环回接口&#xff0c;可以把两个环回接口分配一个环回地址&#xff0c;所以是四个环回&#xff0c;一个骨干&#xff0c;这样分配&#xff0c;不会出现路由黑洞#19…...

Electron视图进程和主进程通讯

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

Vript-Hard——一个基于高分辨率和详细字幕的视频理解算法

一、概述 多模态学习的最新进展促进了对视频理解和生成模型的研究。随之而来的是&#xff0c;对高分辨率视频和详细说明所建立的高质量数据集的需求激增。然而&#xff0c;由于时间因素的影响&#xff0c;视频与文本的配对不像图像那样容易。准备视频和文本配对是一项困难得多…...

react脚手架搭建react项目使用scss

1.create-react-app 创建的项目&#xff0c;webpack配置默认是隐藏的 &#xff0c;如果要查看 或修改用npm run eject命令,因为create-react-app脚手架默认已经配置了scss、sass所以不用改webpack配置。如果用less 就需要自己添加配置 2.如果直接使用scss的文件会直接报错&…...

Vue.js 状态管理库Pinia

Pinia Pinia &#xff1a;Vue.js 状态管理库Pinia持久化插件-persist Pinia &#xff1a;Vue.js 状态管理库 Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。 要使用Pinia &#xff0c;先要安装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++算法】从浅到深学习---滑动窗口(图文兼备 + 源码详解)

绪论&#xff1a;冲击蓝桥杯一起加油&#xff01;&#xff01; 每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; 本章是算法训练的第二章----滑动窗口&#xff0c;它的本质是双指针算法的衍生所以我将…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

Xshell远程连接Kali(默认 | 私钥)Note版

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

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

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任务 三、…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...