Linux 系统安装 Redis7 —— 超详细操作演示!

这篇具有很好参考价值的文章主要介绍了Linux 系统安装 Redis7 —— 超详细操作演示!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据库系列文章:

关系型数据库:

  • MySQL —— 基础语法大全
  • MySQL —— 进阶


非关系型数据库:

  • Redis 的安装与配置
  • Redis 基本命令(上)
  • Redis 基本命令(下)

一、Redis 概述

1.1 Redis 简介

Redis Remote Dictionary Server ,远程字典服务, 由意大利人 Salvatore Sanfilippo (又名 Antirez 开发, 是一个使用 ANSI C 语言 编写、支持网络、可基于 内存 亦可 持久化日志型NoSQL 开源内存数据库 ,其提供多种语言的 API 。从 2010 年 3 月 15 日起, Redis 的开发工作由 VMware 主持。从2013 年 5 月开始, Redis 的开发由 Pivotal 赞助。

2008 年时 Salvatore Sanfilippo 自己开发一个叫 LLOOGG 的网站。

Redis 之所以称之为 字典服务,是因为 Redis 是一个 key-value 存储系统 。支持存储的 value 类型 有很多,包括 String(字符串) 、 List(链表) 、 Set(集合) 、 Zset(sorted set 有序集合) 和 Hash(哈希类型) 等 。

Redis 的国际知名用户有, Twitter 、 GitHub 、 Facebook 等,国内知名用户有,阿里巴巴、腾讯、百度、搜狐、优酷、美团、小米等。熟练使用和运维 Redis 已经成为开发运维人员的一个必备技能。

⭐️ NoSQL

  • NoSQL(“non relational”, “Not Only SQL”),泛指 非关系型的数据库。随着互联网 web2.0网站的兴起,传统的关系数据库在处理 web2.0 网站,特别是 超大规模高并发SNS (社交) 类型的 web2. 0 纯动态网站 已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 NoSQL 数据库的产生就是为了解决 大规模数据集合 多重数据种类 带来的挑战,特别是大数据应用难题。

(1) 键值存储数据库

  • 就像 Map 一样的 key-value 对。典型代表就是 Redis

(2) 列存储数据库

  • 关系型数据库 是典型的 行存储数据库
    • 存在的问题是,按行存储的数据在 物理层面 占用的是 连续存储空间不适合海量数据存储
  • 而按 列存储 则可实现 分布式存储适合海量存储。典型代表是 HBase

(3) 文档型数据库

  • 其是 NoSQL关系型数据 的结合,最像关系型数据库NoSQL。典型代表是MongoDB
    • 该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如 JSON

(4) 图形(Graph)数据库

  • 用于存放一个 节点关系 的数据库,例如描述不同人间的关系。典型代表是Neo4J

1.2 Redis 的用途

Redis 在生产中使用最多的场景就是 做数据缓存 。即客户端从 DBMS 中查询出的数据首先写入到 Redis 中,后续无论哪个客户端再需要访问该数据,直接读取 Redis 中的即可,不仅减小了 RT ,而且降低了 DBMS 的压力。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

根据 Redis 缓存的数据与 DBMS 中数据的同步性划分,缓存一般可划分为两类: 实时同步缓存阶段性同步缓存

  • 实时同步缓存 是指,DBMS 中 数据更新 后, Redis 缓存中的存放的相关数据会被 立即清除,以促使再有对该数据的访问请求到来时,必须先从 DBMS 中查询获取到最新数据,然后再写入到 Redis 。
  • 阶段性同步缓存 是指,Redis 缓存中的数据允许在一段时间 (生存时长) 内与 DBMS 中的数据不完全一致。而这个时间段就是这个缓存数据的 过期时间

1.3 Redis 特性

能够做缓存的技术中间件很多,例如,MyBatis 自带的二级缓存Memched 等。只所以在生产中做缓存的产品几乎无一例外的会选择 Redis ,是因为它有很多其它产品所不具备的特性。

  • 性能极高: Redis 读的速度可以达到 11w次/s ,写的速度可以达到 8w次/s 。只所以具有这么高的性能,因为以下几点原因:
      1. Redis 的所有操作都是在内存中发生的。
      1. Redis 是用 C 语言 开发的。
      1. Redis 源码非常精细集性能与优雅于一身)。
  • 简单稳定: Redis 源码很少。早期版本只有 2w 行左右。从 3.0 版本开始,增加了集群功能,代码变为了 5w 行左右。
  • 持久化: Redis 内存中的数据可以进行持久化,其有两种方式: RDBAOF
  • 高可用集群: Redis 提供了高可用的主从集群功能,可以确保系统的安全性。
  • 丰富的数据类型: Redis 是一个 key-value 存储系统 。支持存储的 value 类型很多,包括 String(字符串) 、 List(链表) 、 Set(集合) 、 Zset(sorted set 有序集合) 和 Hash (哈希类型)等,还有 BitMapHyperLogLogGeospatial 类型。
    • BitMap :一般用于 大数据量二值性统计
    • HyperLogLog :其是 Hyperlog Log ,用于对数据量超级庞大日志去重统计
    • Geospatial :地理空间,其主要用于地理位置相关的计算
  • 强大的功能: Redis 提供了数据过期功能、发布/订阅功能、简单事务功能,还支持 Lua 脚本扩展功能。
  • 客户端语言广泛: Redis 提供了简单的 TCP 通信协议,编程语言可以方便地的接入 Redis 。所以,有很多的开源社区、大公司等开发出了很多语言的 Redis 客户端。
  • 支持 ACL 权限控制: 之前的权限控制非常笨拙。从 Redis6 开始引入了 ACL 模块,可以为不同用户定制不同的用户权限

ACL,Access Control List ,访问控制列表,是一种 细粒度权限管理策略,可以针对 任意用户与组 进行权限控制

  • 目前大多数 Unix 系统与 Linux 2.6 版本已经支持 ACL 了。
  • Zookeeper 早已支持 ACL 了。
  • Unix与 Linux 系统默认使用是 UGO (User 、Group 、Other) 权限控制策略 ,其是一种 粗粒度权限管理策略。
  • 支持多线程 IO 模型: Redis 之前版本采用的是单线程模型,从 6.0 版本开始 支持多线程模型

1.4 Redis 的IO模型

Redis 客户端提交的各种请求是如何最终被 Redis 处理的?

  • Redis 处理客户端请求所采用的 处理架构,称为 Redis 的 IO 模型
  • 不同版本的 Redis 采用的 IO 模型 是不同的。

⭐️ 1)、单线程模型

  • 对于 Redis 3.0 及其以前版本, Redis 的 IO 模型采用的是 纯粹的单线程模型 。即所有客户端的请求全部由一个线程处理。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • Redis 的单线程模型采用了 多路复用技术

对于多路复用器多路复用技术 常见的有三种: select 模型(数组)、 poll 模型(链表)、 epoll 模型。

  • select 模型底层是数组,性能较低,不常见。
  • poll 模型的选择算法:采用的是轮询算法。该模型对客户端的就绪处理是 有延迟的
  • epoll 模型的选择算法:采用的是回调方式。 根据就绪事件发生后的处理方式的不同,又可分为 LT 模型与 ET 模型。
  • 每个客户端 若 要向 Redis 提交请求,都需要与 Redis 建立一个 socket 连接,并向 事件分发器 注册一个事件。一旦该事件发生就表明该连接已经就绪。而一旦连接就绪,事件分发器就会感知到,然后获取客户端通过该连接发送的请求,并将由该事件分发器所绑定的这个 唯一的线程 来处理。如果该线程还在处理多个任务,则将该任务写入到任务队列等待线程处理。
  • 只所以称为事件分发器,是因为它会根据不同的就绪事件,将任务交由不同的事件处理器去处理。

⭐️ 2)、混合线程模型

  • 从Redis 4.0 版本开始, Redis 中就开始加入了 多线程 元素 。处理客户端请求的仍是单线程模型,但对于一些 比较耗时但又不影响对客户端的响应的操作,就由后台其它线程来处理。
    • 例如,持久化、 对 AOFrewrite对失效连接的清理等。

⭐️ 3)、多线程模型

  • Redis 6.0版本,才是真正意义上的多线程模型。因为其对于客户端请求的处理采用的是多线程模型

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

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

⭐️ 4)、优缺点总结 (面试)

(1) 单线程模型

  • 优点:可维护性高,性能高。不存在并发读写 情况,所以也就 不存在执行顺序的不确定性,不存在线程切换开销,不存在死锁问题不存在 为了数据安全而进行的 加锁/解锁开销
  • 缺点:性能会受到影响,且由于单线程 只能使用一个处理器(现在都是多处理器),所以会形成 处理器浪费

内存的响应时长(RT): 100 n s 100ns 100ns
Redis 每秒处理的读写请求数量应该可以达到 1 s / 100 n s = 1 0 9 n s / 100 n s = 1 0 7 = 1 k w 1s/100ns = 10^9ns/100ns = 10^7 = 1kw 1s/100ns=109ns/100ns=107=1kw
实际情况是,Redis 每秒可以处理 8 w − 11 w 8w - 11w 8w11w 的读写请求

(2) 多线程模型

  • 优点:其结合了 多线程单线程 的优点,避开了它们的所有不足。
  • 缺点:该模型没有显示不足。如果非要找其不足的话就是,其并非是一个真正意义上的 ”多线程”,因为 真正处理任务的线程 仍是单线程。所以,其对性能也是有些影响的

二、Redis 的安装与配置

这里是要将 Redis 安装到 Linux 系统中。

我的是 CentOS7,已经关闭防火墙,安装好了jdk,以及常用的命令工具。

2.1 Redis 的安装

⭐️ (2.1.1)、安装前的准备工作

1)、安装 gcc

  • 由于 Redis 是由 C/C++ 语言编写的, 而从官网下载的 Redis 安装包是需要 编译后 才可安装的, 所以对其进行编译就必须要使用相关编译器。对于 C/C++ 语言的编译器,使用最多的是 gccgcc-c++,而这两款编译器在 CentOS 7 中是没有安装的,所以首先要安装这两款编译器。
  • GCCGNU Compiler Collection, GNU 编译器集合。
yum -y install gcc gcc-c++ 

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

2)、下载 Redis

  • Redis 的官网为: http://redis.io

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库
Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

3)、上传到 Linux

  • 将下载好的压缩包上传到 Linux 的 /opt/tools 目录中 。
    Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

⭐️ (2.1.2)、安装 Redis

1)、解压 Redis

  • 将 Redis 解压到 /opt/apps 目录中。
tar -zxvf redis-7.2.1.tar.gz -C /opt/apps/

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 进入到 /opt/apps 目录中 再将 Redis 解压包目录更名为 redis (不更名也无所谓,改名是为了简化目录名)。
mv redis-7.2.1/ redis

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

2)、编译

  • 编译过程是根据 Makefile 文件进行的,而 Redis 解压包中已经存在该文件了。所以可以直接进行编译 了 。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 在解压目录下,执行编译命令 make 进行编译。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

如果没有准备好C语言编译环境,make 会报错 — Jemalloc/jemalloc.h:没有那个文件
解决办法:

  • 首先看:gcc 是否安装成功,成功后
  • 运行 make distclean, 将编译文件清除掉,然后再在 redis 目录下再次执行 make 命令(只是编译好)
  • 当看到如下提示时,表示编译成功。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

3)、安装

  • 在 Linux 中对于编译过的安装包执行 make install 进行安装。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 可以看到,共安装了三个组件: redis 服务器客户端 与 一个性能测试工具 benchmark

4)、查看 bin 目录

  • 安装完成后,打开 /usr/local/bin 目录,可以看到出现了很多的文件。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 通过 echo $PATH 可以看到,/usr/local/bin 目录是存在于该 系统变量 中的, 这样这些命令就可以在任意目录中执行了。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

⭐️ (2.1.3)、Redis 启动与停止

1)、前台启动

  • 在任意目录执行 redis-server 命令即可启动 Redis 。 这种启动方式会 占用当前命令行窗口

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 再开启 一个会话窗口,可以查看到当前的 Redis 进程,默认端口号为 6379
ps aux | grep redis

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 通过 Ctrl + C 命令可以停止 Redis 。

2)、命令式后台启动

  • 使用 nohup 命令,最后再添加一个 & 符,可以使要启动的程序在后台以守护进程方式运行
 nohup redis-server &
  • 这样的好处是,进程启动后不会占用一个会话窗口,且其还会在当前目录,即运行启动命令的当前目录中创建一个 nohup.out 文件用于记录 Redis 的操作日志。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

3)、Redis 的停止

  • 通过 redis-cli shutdown 命令可以停止 Redis 。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

4)、配置式后台启动

  • 使用 nohup 命令可以使 Redis 后台启动,但每次都要键入 nohup& 符,比较麻烦。
  • 可以通过修改 Linux 中 Redis 的核心配置文件 redis.conf 达到后台启动的目的。
  • redis.conf 文件在 Redis 的安装目录根下。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • daemonize 属性值由 no 改为 yes ,使 Redis 进程以守护进程方式运行
vim redis.conf
:set nu 	#显示行号
/daemonize 	#搜索daemonize

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

修改后再启动 Redis ,就无需再键入 nohup 与 符 &了,但必须要指定启动所使用的 Redis配置文件。 这是为什么呢?

  • 使用 nohup redis-server & 命令启动 Redis 时,启动项中已经设置好了 Redis 各个参数的默认值, Redis 会按照这些设置的参数进行启动。但这些参数是可以在配置文件中进行修改的,修改后,需要在启动命令中指定要加载的配置文件,这样,配置文件中的参数值将覆盖原默认值。
  • Redis 已经给我们提供好了配置文件模板,是 Redis 安装目录的根目录下的 redis.conf 文件。由于刚刚对 redis.conf 配置文件做了修改,所以在开启 Redis 时需要显示指出要加载的配置文件。配置文件应紧跟在 redis-server 的后面。
redis-server /opt/apps/redis/redis.conf

ps aux | grep redis

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

2.2 连接前的配置

  • Redis 是一个内存数据库服务器,就像 MySQL 一样,对其操作也需要通过 客户端 进行。
  • 若要使 远程主机上的客户端 能够连接并访问到 服务端的 Redis ,则服务端首先要做如下配置。

⭐️ (2.2.1)、绑定客户端 IP

  • Redis 可以通过修改配置文件来限定可以访问自己的 客户端 IP

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 以上设置后,只允许当前主机访问当前的 Redis ,其它主机均不可访问。 所以,如果不想限定访问的客户端,只需要将该行 注释掉 即可。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

⭐️ (2.2.2)、关闭保护模式

  • 默认保护模式是开启的。 其只允许本机的客户端访问, 即只允许自己访问自己。但生产中应该关闭, 以确保其它客户端可以连接 Redis 。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

#命令模式下输入
:noh 	#去掉搜索出来的黄标

⭐️ (2.2.3)、设置访问密码

  • 为 Redis 设置访问密码,可以对要读 写 Redis 的用户进行身份验证。没有密码的用户可以登录 Redis ,但无法访问

1)、密码设置

  • 访问密码的设置位置在 redis.conf 配置文件中。默认是被注释掉的,没有密码

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 没有通过密码登录的用户,无法读/写Redis

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

2)、使用密码

  • 对于密码的使用,有两种方式:登录时未使用密码,则访问时先输入密码;登录时直接使用密码登录,访问时无需再输入密码。
    • A、 登录时未使用密码

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

    • B、 登录时使用密码

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

    • C、 退出时使用密码

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

3)、注意

  • 为了方便后面的学习,我们这里就 不设置访问密码了,直接将其 注释掉 即可。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

⭐️ (2.2.4)、禁止 / 重命名命令

  • 后面要学习两个非常危险的命令:flushalflushdb
    • 它们都是用于直接删除整个 Redis 数据库的。若让用户可以随便使用它们,可能会危及数据安全。
    • Redis 可以通过修改配置文件来禁止使用这些命令,或重命名这些命令。
    • 以下配置 ,禁用了 flushall 与 flushdb 命令。
      当然,在学习过程中暂时不禁用它们。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

⭐️ (2.2.5)、启动 Redis

  • 当然,若要使客户端能够连接 Redis,则必须开启服务端的 Redis 。
redis-server /opt/apps/redis/redis.conf

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

2.3 Redis 客户端分类

Redis 客户端也像 MySQL 客户端一样有多种类型:命令行客户端、图形界面客户端、 Java代码客户端。

⭐️ (2.3.1)、命令行客户端

  • Redis 提供了基本的命令行客户端。打开命令行客户端的命令为 redis-cli

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • -h :指定要连接的 Redis 服务器的 IP
  • -p :指定要连接的 Redis 的 端口号

若连接的是本机Redis ,且端口号没有改变,保持默认的 6379 ,则 -h-p 选项可以省略不写。

⭐️ (2.3.2)、图形界面客户端

1)、Redis Desktop Manager(下面演示使用该客户端)

  • Redis 的图形界面客户端很多, 其中较出名的是 Redis Desktop Manager 的客户端。 不过,该软件原来是免费软件, 从 0.8.8 版本 后变为了商业化收费软件。
  • 官网为: https://resp.app/(原来是 http://redisdesktop.com )。

百度网盘链接( 0.8.8版本):https://pan.baidu.com/s/1xnmm4TMuNd8eqslJ0rRm9A?pwd=e316
提取码:e316

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

2)、RedisPlus

  • RedisPlus 是为 Redis 可视化管理开发的一款开源免费的桌面客户端软件,支持 Windows 、Linux 、 Mac 三大系统平台, RedisPlus 提供更加高效、方便、快捷的使用体验,有着更加现代化的用户界面风格。
  • RedisPlus的官网地址为 https://gitee.com/MaxBill/RedisPlus 。

⭐️ (2.3.3)、Java 代码客户端

  • 所谓 Java 代码客户端就是一套操作 Redis 的 API ,其作用就像 JDBC 一样,所以 Java 代码客户端其实就是一个或多个 Jar 包,提供了对 Redis 的操作接口。
  • 对 Redis 操作的 API 很多 ,例如 jdbc-redisjredis 等 ,但最常用也是最有名的是 Jedis

2.4 Redis 配置文件详解

  • Redis 的核心配置文件 redis.conf 在安装根目录下,默认包含 2000 多行。 这些内容根据功能被划分为了很多部分。下面将一些 重要部分 进行介绍。

学习的过程有问题可以:1、查阅官方文档;2、读英文注释;3、看源码

⭐️ (2.4.1)、基础说明

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

这部分主要是给出一些说明,包含三部分意思:

  • 第 1-6 行用于说明,如果要 启动 Redis ,需要指出 配置文件的路径
  • 第 8-16 行用于说明当前配置文件中可以使用的的 容量单位意义
  • 第 18 行用于说明这些 容量单位 没有大小写之分

⭐️ (2.4.2)、includes

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

指定要在当前配置文件中包含的配置文件。 这样做的目的主要是便于 配置信息管理

  • 可以将 不同场景 的配置都进行 单独定义
  • 然后在当前 核心配置文件 中根据 不同场景 选择包含进不同的配置文件

⭐️ (2.4.3)、modules

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • Redis 配置文件中可以通过 加载 不同的第三方模块,来增强扩展 Redis 的功能。

⭐️ (2.4.4)、network

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

Network 配置模块是 比较重要的部分,主要进行网络相关的配置。其中较重要的有:

  • 1)、bind

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

指定可以访问当前 Redis 服务的客户端 IP ,默认只允许本地访问,即当前 Redis 自己访问自己。
为了使所有其它客户端都可访问一般要将其注释掉

  • 2)、protected-mode

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

默认保护模式是开启的。 其只允许本机的客户端访问,即只允许自己访问自己。
但生产中应该关闭,以确保其它客户端可以连接 Redis

  • 3)、port

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

Redis 监听的连接端口号默认 6379

  • 4)、tcp-backlog

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

tcp-backlog 是一个 TCP 连接的队列,其主要用于解决 高并发 场景下客户端 慢连接 问题。

  • 这里设置的值就是这个队列的长度。该队列与 TCP 连接的 三次握手 有关。
  • 不同的 Linux 内核,backlog 队列中存放的元素(客户端连接)类型是不同的。
    • Linux 内核 2.2 版本之前 ,该队列中存放的是已完成了第一次握手的所有客户端连接,其中就包含已完成三次握手的客户端连接。当然,此时的 backlog 队列中的连接也具有两种状态:未完成三次握手的连接状态为 SYN_RECEIVED ,已完成三次握手的连接状态为 ESTABLISHED 。只有 ESTABLISHED 状态的连接才会被 Redis 处理。
    • Linux 内核 2.2 版本之后 TCP 系统中维护了两个队列SYN_RECEIVED 队列与 ESTABLISHED 队列。 SYN_RECEIVED 队列中存放的是未完成三次握手的连接, ESTABLISHED 队列中存放的是已完成三次握手的连接。此时的 backlog 就是 ESTABLISHED 队列。
  • 查看 Linux 内核版本:
uname -a
# 或
cat /proc/version

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

TCP 中的 backlog 队列的长度在 Linux 中由内核参数 somaxconn 来决定。所以,在 Redis中该队列的长度由Redis 配置文件设置somaxconn 来共同决定:取它们中的最小值

  • 查看当前 Linux 内核中 somaxconn 的值。
cat /proc/sys/net/core/somaxconn

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

生产环境下(特别是高并发场景下), backlog 的值最好要大一些,否则可能会影响系统性能。

  • 修改 /etc/sysctl.conf 文件,在文件最后添加如下内容:net.core.somaxconn=2048

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 修改过后可以重启虚拟机,也可以通过执行如下命令来使新的修改生效。
sysctl -p 	# 内核在运行时,动态修改内核的运行参数

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 5)、timeout

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

空闲超时。当客户端与 Redis 间的 空闲时间 超过该时长后,连接自动断开单位秒默认值为 0,表示永远不超时

  • 6)、tcp-keepalive

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

该配置主要用于设置Redis 检测 与 其连接的 所有客户端存活性时间间隔单位秒一般是在空闲超时 timeout 设置为 0 时进行配置。该方式会降低服务端的性能,还待商榷!
如果连续检测 两次 都不在,则连接断开。

⭐️ (2.4.5)、general

  • 1)、daemonize

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

该配置可以控制 Redis 启动是否采用守护进程方式,即是否是后台启动。 yes 是采用后台启动

  • 2)、pidfile

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

该配置用于指定 Redis 运行时 pid 写入的文件,无论 Redis 是否采用守护进程方式启动,pid 都会写入到该配置的文件
注意,如果没有配置 pid 文件,不同的启动方式, pid 文件的产生效果是不同的

  • 采用 守护进程 方式启动(后台启动daemonizeyes): pid 文件为 /var/run/redis.pid
  • 采用 前台启动daemonizeno ):不生产pid 文件
  • 3)、loglevel

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

配置日志的级别。 Redis 中共有四个级别,由低到高 依次是:

  • debug :可以获取到很多的信息,一般在 开发测试 时使用。
  • verbose :可以获取到很多不太有用的信息,但不像 debug 级别那么多。
  • notice :可以获取到在生产中想获取到的 适当多的信息默认级别
  • warning :只记录 非常重要 / 关键 的信息。
  • 4)、logfile

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

指定日志文件。如果设置为空串,则强制将日志记录到 标准输出设备显示器)。
如果使用的是 守护进程 启动方式,设置为空串,则意味着会将日志发送到设备 /dev/null空设备)。

  • 5)、databases

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

设置数据库的数量默认数据库是 0 号数据库
可以使用 select dbid 在每个连接的基础上选择一个不同的数据库,其中 dbid 是介于 0'databases'-1 之间的数字 。

⭐️ (2.4.6)、security

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 用户设置 ACL 权限Redis 访问密码 相关配置。该模块中最常用的就是 requirepass 属性。

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 设置客户端访问密码。注释掉后则没有密码。

⭐️ (2.4.7)、clients

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 该模块用于设置与客户端相关的属性,其中仅包含一个属性 maxclients
    • maxclients 用于设置 Redis 可 并发处理 的客户端连接数量, 默认值为 10000 。如果达到了该最大连接数,则会拒绝再来的新连接,并返回一个异常信息:已达到最大连接数

注意,该值不能超过 Linux 系统支持的可打开的文件描述符最大数量阈值。查看该阈值的方式如下。修改该值,可以通过修改 /etc/secutiry/limits.conf 文件(自己查)。

ulimit -n

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

⭐️ (2.4.8)、memory management

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

该配置可以控制 最大可用内存相关内容移除 问题。

  • 1)、maxmemory

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

将内存使用限制设置为指定的字节数。当达到内存限制时, Redis 将根据选择的逐出策略 maxmemory-policy 尝试删除符合条件的 key
如果不能按照逐出策略移除 key ,则会给写操作命令返回 error ,但对于只读的命令是没有影响的 。

  • 2)、maxmamory-policy

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

该属性用于设置,当达到 maxmemory 时, Redis 将如何选择要移除的内容。 当然,如果没有符合相应策略的内容要删除,则在执行写入命令时会给出 errors 的响应。 Redis 中共支持 8 种移除策略

  • volatile-lru: 使用近似 LRU (最近最少使用) 算法移除 ,仅适用于设置了 过期时间key
  • allkeys-lru: 使用近似 LRU 算法移除,可适用于所有类型key
  • volatile-lfu: 使用近似 LFU (最少使用) 算法移除 ,仅适用于设置了 过期时间key
  • allkeys-lfu: 使用近似 LFU 算法移除,可适用于所有类型key
  • volatile-random随机移除一个 key, 仅适用于设置了 过期时间key
  • allkeys-random随机移除一个 key 可适用于所有类型key
  • volatile-ttl: 移除距离 过期时间 最近的 key
  • noeviction: 不移除任何内容,只是 在写操作时返回一个错误默认值
  • 3)、maxmemory-samples

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

该属性用于指定挑选要删除的 key样本数量。 样本的选择采用的是 LRU 算法,其不能修改。但从样本中再选择要移除的 key ,则采用的是 maxmamory-policy 指定的策略。

  • 4)、maxmemory-eviction-tenacity

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

设置移除容忍度。数值越小表示容忍度越低,需要移除的数据移除延迟越小;数值越大表示容忍度越高,需要移除的数据移除延迟越大。

⭐️ (2.4.9)、threaded I/O

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

该配置模块用于配置 Redis 对 多线程 IO 模型 的支持。

  • 1)、io-threads

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

该属性用于指定要启用多线程IO 模型时,要使用的线程数量。
查看当前系统中包含的 CPU 数量 lscpu

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

  • 2)、io-threads-do-reads

Linux 系统安装 Redis7 —— 超详细操作演示!,数据库,linux,服务器,redis,数据库

该属性用于启用 多线程 IO 模型 中的 多线程处理读请求 的能力。

注:仅供学习参考,如有不足,欢迎指正!!!文章来源地址https://www.toymoban.com/news/detail-738577.html

到了这里,关于Linux 系统安装 Redis7 —— 超详细操作演示!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux环境下(CentOS操作系统)如何修改MySQL数据库及Redis的密码?

    【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!   《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享; 欢迎商业项目咨询,10年+软硬全

    2024年02月15日
    浏览(60)
  • Linux系统安装mysql数据库(超详细)

    目录 1、准备阶段         2、具体步骤 2.1、卸载mariadb 2.2、上传mysql并解压 2.3、安装mysql 2.4、查看版本 2.5、启动mysql服务 2.6、登录mysql 2.7、修改密码 2.8、配置mysql远程访问 2.9、修改编码 3、卸载mysql 3.1、查看mysql的安装情况  3.2、删除安装包  3.3、在/根目录下查询mysql

    2024年02月12日
    浏览(41)
  • Linux系统安装DB2数据库的详细步骤

    1、DB2数据库的安装 一、将DB2的安装介质上传至/home目录,并解压:    tar –zxvf v9.5fp3_linuxx64_server.tar.gz 二、执行LANG=C 三、进入解压后的server目录(cd server/),执行./db2setup,步骤如下: # cd /home # tar -zxvf v9.7_linuxx64_server.tar.gz # cd server/ # ./db2setup     请额外注意:这里选择 Do

    2024年02月08日
    浏览(48)
  • Redis7安装

    由于企业里面做Redis开发,99%都是Linux版的运用和安装,几乎不会涉及到Windows版,上一步的讲解只是为了知识的完整性,Windows版不作为重点,同学可以下去自己玩,企业实战就认一个版: Linux 2.1 什么是gcc gcc是linux下的一个编译程序,是C程序的编译工具。 GCC(GNU Compiler Collecti

    2024年02月11日
    浏览(49)
  • redis7.0编译安装 + bash安装脚本

    以下操作在debian11、deiban12下演示,ubuntu通用,其它系列linux发行版自行安装依赖,其余一样 以7.2.1版本为例进行安装 最后的bash脚本是对前面的操作的封装,一键即配置完成,即可使用 1.安装依赖 2.下载 redis官方下载页面 redis github页面 如果下载不下来,复制链接用迅雷这类工

    2024年02月16日
    浏览(60)
  • CentOS7安装部署Redis7

    Linux 发行版: CentOS-7-x86_64-DVD-1804.iso Redis 版本: 7.0.12 Redis Download:https://redis.io/download/ Redis Tag:https://github.com/redis/redis/tags Redis入门和使用实践v2018:https://blog.csdn.net/u011424614/article/details/100170313 [Windows] Redis使用记录:https://blog.csdn.net/u011424614/article/details/101531772 CentOS基础操作

    2024年02月12日
    浏览(37)
  • Redis安装与配置指南:适用于Windows、Mac和Linux系统的详细教程

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(54)
  • windows一键安装redis7.0.11

    下载地址: https://gitcode.net/zengliguang/windows_redis7.0.11_offline_install.git   使用git进行进行clone下载   在电脑桌面或者其他文件夹下 ,鼠标右键点击  选择git clone  ,下图中url为下载地址,Directory为本地存储路径,点击ok开始下载 如下图所示已成功下载   双击 redis-install-win.ba

    2024年02月08日
    浏览(48)
  • centos7安装Redis7.2.4

    参考: 在centos中安装redis-5.0.7 Memory overcommit must be enabled! Without it, a background save or replication may fail under low m 场景:我本来在docker里面安装的Redis,稳定运行2个月,但是今天发现本地突然无法连接到服务器的Redis了,但是我的项目还是能正常使用Redis,然后下午到晚上一直在找问

    2024年01月25日
    浏览(51)
  • 安装Linux操作系统CentOS 6详细图文步骤

    为满足业务对Linux操作系统部署的要求,本文档主要提供CentOS 6操作系统的最小化安装和基本配置, 安装本系统建议最少1GB内存和2GB磁盘空间。 1、    使用光盘或者挂载ISO镜像,在出现如下图形界面时选择【Install or upgrade an existing system】并按Enter键进行下一步。 2、    下一

    2024年02月13日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包