Redis(概念、IO模型、多路选择算法、安装和启停)

一、概念

关系型数据库是典型的行存储数据库,存在的问题是,按行存储的数据在物理层面占用的是连续存储空间,不适合海量数据存储。
Redis在生产中使用的最多的是用作数据缓存。
在这里插入图片描述
服务器先在缓存中查询数据,查到则返回,查不到则到DB中查找。

2.1 缓存数据的分类

(1)实时同步数据:要求缓存中的数据必须与DB中的数据保持一致。即只要DB中的数据发生了变更,缓存中的数据立即消失。
(2)阶段性同步数据:没有必要与DB的数据时刻保持一致,只要大差不差就行。实现方法是为缓存数据添加了生存时长属性。

2.2 特点

(1)Redis的所有操作是在内存中进行的;
(2)Redis的数据可以支持持久化(包括RDB和AOF两种方式);
(3)Redis提供了高可用的主从集群功能,可以确保系统的安全性;
(4)丰富的数据类型:String、List、Set、Zset和Hash,还有BitMap、HyperLoglog、Geospatial。
BitMap:一般用于大数据量的二值性统计;
HyperLoglog:用于对数据量超级庞大的日志做去重统计;
Geospatial:主要用于地理位置相关的计算。
(5)数据过期功能、发布/订阅功能、简单事务功能、脚本扩展功能。
(6)ACL(Access Control List)权限功能,可以为不同的用户定制不同的用户权限。
(7)支持多线程IO模型。

二、Redis的IO模型

多线程IO模型(不是一个纯粹的多线程模型,主任务还是单线程)中的“多线程”仅用于接受、解析客户端的请求,然后将解析出的请求写入到任务队列中,而对具体任务(命令)的处理,仍是由主线程(单线程)处理,这样做使得用户无需考虑线程安全的问题,无需考虑事务控制,无需考虑像LPUSH/LPOP等命令的执行顺序问题。

三、多路选择算法

在这里插入图片描述
每个客户端若要向Redis提交请求,都需要与Redis建立一个socket连接,并向事件分发器注册一个事件,一旦该事件发生就表明连接已经就绪,而一旦连接就绪,事件分发器就会感知到,然后获取客户端通过该连接发送的请求,并将由该事件分发器所绑定的这个唯一的线程来处理。事件分发器会根据不同的就绪事件将任务交由不同的事件处理器去处理。
Redis的单线程模型采用了多路复用技术(从多个socket连接请求中选择一个放到人物队列给线程处理)。对于多路复用器的多路选择算法常见的有三种:select模型、poll模型、epoll模型。
select模型和poll模型的选择算法:两个本质上事一样的,只是select使用的是数组,poll使用的是链表。采用的是轮询算法,该模型对客户端的就绪处理是有延迟的。
epoll模型的选择算法:采用的是回调方式,监听到就绪就处理(也是使用队列的)。根据就绪事件发生后的处理方式不同又分为LT模型和ET模型。

四、redis的安装与启停

4.1 安装

下载

 wget http://download.redis.io/releases/redis-6.2.1.tar.gz

在这里插入图片描述

解压

tar -zxvf redis-6.2.1.tar.gz -C /opt/apps

在这里插入图片描述

编译

进入安装目录
在这里插入图片描述
使用make指令编译:
在这里插入图片描述

安装

make install

在这里插入图片描述

4.2 启动

在这里插入图片描述

补充:后台启动方式

nohup redis-server &

补充:配置式后台启动方式

修改配置文件:
在这里插入图片描述
搜索:
在这里插入图片描述
改为yes(配置为守护进程):
在这里插入图片描述
在这里插入图片描述

停止

redis-cli shutdown

在这里插入图片描述

4.3 连接前的配置

在这里插入图片描述
使其可以监听所有接口:
在这里插入图片描述
关闭保护模式:
在这里插入图片描述
在这里插入图片描述
requirepass行改成下面:
在这里插入图片描述
在这里插入图片描述

五、redis的各类客户端

5.1 图形界面客户端

在这里插入图片描述

5.2 图形界面客户端Redis Desktop Manager

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/924494.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA:Spring Boot 3 实现 Gzip 压缩优化的技术指南

1、简述 随着 Web 应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈。为了减少数据传输量,提高用户体验,我们可以使用 Gzip 压缩 HTTP 响应。本文将介绍如何在 Spring Boot 3 中实现 Gzip 压缩优化。 2、配置 Spring Boot 3 对…

python期末复习

其他复习资料 Python期末复习-系列数据类型-CSDN博客 期末python复习-异常和函数-CSDN博客 期末Python复习-输入输出-CSDN博客 目录 一、面向对象程序设计 1.思维导图 2.基本概念 3.类对象和实例对象 3.1创建对象 3.2定义类中的成员变量 3.3类中属性的公有和私有 3.…

HDU Go Running(最小点覆盖 + 网络流优化)

题目大意:有一条无限长跑道,每个人可以规定自己跑步的方向,起点,跑步起止时间。每个人跑步的速度都是1m/s。最后从监控人员哪里得到了n个报告,每个报告给出了某人在某一时候所在的位置,问跑步的最少可能人数…

《用Python实现3D动态旋转爱心模型》

简介 如果二维的爱心图案已经无法满足你的创意,那今天的内容一定适合你!通过Python和matplotlib库,我们可以实现一个动态旋转的3D爱心模型,充满立体感和动感。# 实现代码(完整代码底部名片私信) 以下是完…

Unity-Lightmap入门篇

::这是一个实战文章,并没有知识分享,或理论知识;完全没有 关键字: “lightmap","全局光照”,“light Probe" (会混合一些中英文搜索,或者全英文搜索) …

ElasticSearch通过es-head插件安装可视化及相关问题

1.es-head下载地址 GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster 2.启动 建议使用vscode启动,并安装好node.js环境 npm installnpm run start 通过http://localhost:9100就可以看到本地添加的es库 3.相关问题 3.1跨域问…

Android PMS(Package Manager Service)源码介绍

文章目录 前言一、PMS 启动流程二、APK 安装流程三、APK 卸载流程四、权限管理静态权限动态权限 五、 数据存储与一致性六、 PMS 的安全性策略1、权限检查2、签名认证3、动态权限管理4、应用安装验证5、保护系统目录 七、PMS 调试方法总结 前言 PackageManagerService&#xf…

OSPTrack:一个包含多个生态系统中软件包执行时生成的静态和动态特征的标记数据集,用于识别开源软件中的恶意行为。

2024-11-22 ,由格拉斯哥大学创建的OSPTrack数据集,目的是通过捕获在隔离环境中执行包和库时生成的特征,包括静态和动态特征,来识别开源软件(OSS)中的恶意指标,特别是在源代码访问受限时&#xf…

Web登录页面设计

记录第一个前端界面,暑假期间写的,用了Lottie动画和canvas标签做动画,登录和注册也连接了数据库。 图片是从网上找的,如有侵权私信我删除,谢谢啦~

MySQL45讲 第29讲 如何判断一个数据库是不是出问题了?——阅读总结

文章目录 MySQL45讲 第二十九讲 如何判断一个数据库是不是出问题了?——阅读总结一、检测数据库实例健康状态的重要性二、常见检测方法及问题分析(一)select 1 判断法(二)查表判断法(三)更新判断…

mac下Gpt Chrome升级成GptBrowser书签和保存的密码恢复

cd /Users/自己的用户名/Library/Application\ Support/ 目录下有 GPT\ Chrome/ Google/ GptBrowser/ GPT\ Chrome 为原来的chrome浏览器的文件存储目录. GptBrowser 为升级后chrome浏览器存储目录 书签所在的文件 Bookmarks 登录账号Login 相关的文件 拷贝到GptBrow…

论文阅读笔记 | EEG:运动执行过程中的ERD

参考:https://mp.weixin.qq.com/s/RmcPSLv1ITMZZwqe2uZ_og?token1093147649&langzh_CN

Android U ART young cc流程分析

概述: 众所周知jvm虚拟机为了提高内存回收效率,更高效的进行内存管理与回收,对堆内存进行了分代管理比如hotspot虚拟机的新生代,老年代。根据各代的特征( 新生代对象分配频繁而生存周期短,老年代生存周期长…

C++ 11重点总结1

智能指针 智能指针: C11引入了四种智能指针: auto_ptr(已弃用)、unique_ptr、shared_ptr和weak_ptr。智能指针可以更有效地管理堆内存,并避免常见的内存泄漏问题。 shared_ptr: 自定义删除器。 shared_ptr使用引用计数来管理它指向的对象的生命周期。多个shared_ptr实例可以指向…

Sickos1.1 详细靶机思路 实操笔记

Sickos1.1 详细靶机思路 实操笔记 免责声明 本博客提供的所有信息仅供学习和研究目的,旨在提高读者的网络安全意识和技术能力。请在合法合规的前提下使用本文中提供的任何技术、方法或工具。如果您选择使用本博客中的任何信息进行非法活动,您将独自承担…

GB28181系列二:SIP信令

我的音视频/流媒体开源项目(github) GB28181系列目录 目录 一、SIP报文介绍 二、SIP交互流程: 1、Session Model 2、Pager Model 3、SIP信令交互过程中的3个定义 三、媒体传输(SDP和RTP) 一、SIP报文介绍 这里将会介绍SIP…

【接口自动化测试】一文从0到1详解接口测试协议!

接口自动化测试是软件开发过程中重要的环节之一。通过对接口进行测试,可以验证接口的功能和性能,确保系统正常运行。本文将从零开始详细介绍接口测试的协议和规范。 定义接口测试协议 接口测试协议是指用于描述接口测试的规范和约定。它包含了接口的请求…

CentOS7执行yum命令报错,已加载插件:fastestmirrorLoading mirror speeds from cached hostfile

一、出现一下异常问题,表示域名没有配置或配置错误 问题一: 0curl: (6) Could not resolve host: mirrors.aliyun.com; 未知的错误 问题二:虚拟机使用ping主机,提示network unreachable 2.原因分析 出现这个问题是因为yum在安装…

【Threejs进阶教程-着色器篇】9.顶点着色器入门

【Threejs进阶教程-着色器篇】9.顶点着色器入门 本系列教程第一篇地址,建议按顺序学习认识顶点着色器varying介绍顶点着色器与片元着色器分别的作用Threejs在Shader中的内置变量各种矩阵gl_Position 尝试使用顶点着色器增加分段数增强效果 制作平面鼓包效果鼓包效果…

Ubuntu 硬盘分区并挂载

一、什么是挂载 1.挂载的定义 在 Ubuntu(或其他 Linux 系统)中,挂载(Mount) 是将一个存储设备或分区连接到系统的文件系统层次结构中的过程。挂载后,你可以通过某个目录(挂载点)访问…