🎈个人公众号:🎈 :✨✨✨ 可为编程✨ 🍟🍟
🔑个人信条:🔑 知足知不足 有为有不为 为与不为皆为可为🌵
🍉本篇简介:🍉 本篇详细阐述了Redis概述和安装,如有出入还望指正。
今天开启中间件专栏的第一篇文章,先以Redis中间件为例,从部署安装、封装使用、原理剖析、集群搭建、场景模拟等多个角度,全方位总结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年最新面试题!!!
执行redis-server
命令,这种如果关闭启动窗口,则redis会停止。
后台方式启动后,关闭窗口后,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:kill -9 pid
方式2:redis-cli shutdown
执行redis-cli
即可进入redis命令窗口,然后就可以执行redis命令了。
http://doc.redisfans.com/
默认端口6379
默认16个数据库,类似数组的下标从0开始,初始默认使用0号库,后面会进行详细说明
使用select
统一密码管理,所有的库密码相同
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数据读写这部分采用了多线程,而命令的执行还是采用的是单线程,多个客户端发送来的命令会在同一个线程去执行,相当于排队执行,效率极高。后续