🎈个人公众号:🎈 :✨✨✨ 可为编程 ✨ 🍟🍟
🔑个人信条:🔑 知足知不足 有为有不为 为与不为皆为可为 🌵
🍉本篇简介:🍉 本篇详细阐述了Redis概述和安装,如有出入还望指正。
今天开启中间件专栏的第一篇文章,先以Redis中间件为例,从部署安装、封装使用、原理剖析、集群搭建、场景模拟等多个角度,全方位总结Redis各种场景下的使用特性和相关领域知识,将自己的经验和学习进行输出,如有纰漏,联系我更正,这是一个漫长的过程,关注我,你我一道同行。
1.1、安装redis
(1)下载redis
https://download.redis.io/releases/
(2)将redis
安装包拷贝到/opt/
目录
(3)解压
tar -zvxf redis-7.2.1.tar.gz
(4)安装gcc
yum install gcc
(5)进入目录
cd redis-7.2.1
(6)编译
make
(7)执行make install
进行安装
(8)查看安装目录:/usr/local/bin
目录介绍
-
redis-benchmark:性能测试工具,可以在自己本子进行调试,看看自己本子性能如何。
-
redis-check-aof:修复有问题的AOF文件,rdb和aof后面咱单独出一篇文章详细讲解。
-
redis-check-dump:修复有问题的dump.rdb文件
-
redis-sentinel:redis集群使用
-
redis-server:redis服务器启动命令
-
redis-clit:客户端,操作入口
-
关注公众号【可为编程】回复【面试】领取2023年最新面试题!!!
1.2、启动redis
方式1:前台启动(不推荐)
执行redis-server
命令,这种如果关闭启动窗口,则redis会停止。
方式2:后端启动(推荐)
后台方式启动后,关闭窗口后,redis不会被停止.
步骤如下
(1)复制redis.conf文件到/etc目录
cp /opt/redis-6.2.1/redis.conf /etc
(2)使用vi命令修改/etc/redis.config中的配置,将后台启动设置daemonize改为yes,如下
daemonize yes
(3)启动redis
redis-server /etc/redis.conf
(4)查看redis进程
1.3、关闭redis
方式1:kill -9 pid
方式2:redis-cli shutdown
1.4、进入redis命令窗口
执行redis-cli
即可进入redis命令窗口,然后就可以执行redis命令了。
1.5、redis命令大全
http://doc.redisfans.com/
1.6、redis介绍相关知识
-
默认端口6379
-
默认16个数据库,类似数组的下标从0开始,初始默认使用0号库,后面会进行详细说明
-
使用select <dbid>来切换数据库,如:select 1,切换到第2个库。
-
统一密码管理,所有的库密码相同
-
dbsize:查看当前数据库的key的数量
-
flushdb:情况当前库
-
flushall:清空全部库
redis是单线程+多路IO复用技术,那问题来了,为啥单线程还这么快呢?多路复用技术又是啥尼?
这里咱先简单说一下,后面单独拿出一篇文章详细的进行分析,首先单线程是Redis的文件事件处理器的模型为单线程, Redis的文件事件处理器是一个单线程模型 ,采用IO多路复用机制 同时监听多个socket ,根据socket上的事件 来选择对应的事件处理器 来处理这个事件。具体来说,如果被监听的socket准备好执行accept、read、write、close等操作的时候,跟操作对应的文件事件 就会产生,这时文件事件处理器 就会调用之前关联好的事件处理器 来处理这个事件。每个具体的事件处理器总和一个文件描述符相关,它使用描述符来识别事件、识别应用程序提供的服务。
多路复用 是指使用一个线程来检测多个文件描述符(socket) 的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞到超时,得到就绪状态后,进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)。
关注公众号【可为编程】回复【面试】领取2023年最新面试题!!!
在Redis中,只有一个文件事件处理器。它由四个部分组成:套接字、I/O多路复用程序、文件时间分派器(dispatcher)、事件处理器。这个处理器是单线程的,采用IO多路复用机制同时监听多个socket,根据socket上的事件来选择对应的事件处理器来处理这个事件。Redis相比于memcache支持多数据类型,支持持久化,单线程和多路复用机制,而memcache采用串行+多线程+锁的实现原理。
Redis6.0中提供了多线程,命令解析和io数据读写这部分采用了多线程,而命令的执行还是采用的是单线程,多个客户端发送来的命令会在同一个线程去执行,相当于排队执行,效率极高。后续