五. Redis 配置内容(详细配置说明)
五. Redis 配置内容(详细配置说明)
文章目录
- 五. Redis 配置内容(详细配置说明)
- 1. Units 单位配置
- 2. INCLUDES (包含)配置
- 3. NETWORK (网络)配置
- 3.1 bind(配置访问内容)
- 3.2 protected-mode (保护模式)
- 3.3 port(端口)配置
- 3.4 timeout(客户端超时时间)配置
- 3.5 tcp-keepalive()配置
- 4. GENERAL 通用配置
- 4.1 daemonize(后台启动)配置
- 4.2 pidfile(pid 文件存在路径)配置
- 4.3 loglevel(日志级别)配置
- 4.4 logfile(日志文件)配置
- 4.5 databases 16(仓库数量)配置
- 5. SECURITY 安全配置
- 5.1 在 redis.conf 配置文件当中设置密码(永久)
- 5.3 在 命令行设置密码
- 6. LIMITS 限制配置
- 6.1 maxclients(客户端连接数)配置
- 6.2 maxmemory(Redis 最大占用内存)配置
- 6.3 maxmemory-policy(Redis内存不够的算法配置处理)配置
- 6.4 maxmemory-samples(内存算法处理的比较样本) 配置
- 7. 总结:
- 8. 最后:
关于 Redis 配置文件的文档说明:https://www.cnblogs.com/nhdlb/p/14048083.html
Redis 的配置的内容,都是在
/etc/redis.conf
这个文件当中进行配置设置的。
redis.conf
配置内容有很多很多,这里我们讲解一些比较常用的一些配置信息。
1. Units 单位配置
:set number # 在 vim 工具当中 ,表示显示行号
- 配置大小单位,开头定义了一些基本的度量单位,只支持 bytes(字节) ,不支持 bit(比特),这是默认的,大家可以更加需要自行修改。
- 默认是不区分大小写的,对于命令来说,这个也是大家可以自行修改配置的。
2. INCLUDES (包含)配置
该配置信息表示:多实例的情况可以把公用的配置文件提取出来,然后 include
导入 。
3. NETWORK (网络)配置
3.1 bind(配置访问内容)
bind 127.0.0.1 -::1
- 默认情况
bind 127.0.0.1
表示只能接收本地(本机)的访问请求,其它的主机是无法访问的。 - 如果服务器是需要远程访问的,需要将其注释掉。
- 这里,我们可以启动 redis ,查看当前允许连接的情况。
注销 bind , 重新启动 redis, 再查看当前允许连接的情况。
注意: 需要将 Redis 服务器,关闭了,再重启后,配置才能生效。
[root@localhost ~]# redis-cli -p 6379 shutdown
3.2 protected-mode (保护模式)
默认是保护模式,也就是 protected-mode no
。
如果服务器是需要远程访问的, 需要将 yes 设置为 no
3.3 port(端口)配置
Redis 服务默认端口 6379,可以自行修改,但是注意要在
655535
的范围。
3.4 timeout(客户端超时时间)配置
如图默认配置:
timeout 0
一个空闲的客户端维持多少秒会关闭,0 表示关闭该功能, 即永不超时 。大家可以根据需要自行修改。
3.5 tcp-keepalive()配置
tcp-keepalive 300
tcp-keepalive
是对访问客户端的一种心跳检测,每隔 n 秒检测一次,单位为秒。- 如果设置为 0 ,则不会进行 keepalive 检测,建议设置成 60
为什么需要心跳检测机制:
- TCP 协议中有长连接 和 短连接 之分。短连接 环境下,数据交互完毕后,主动释放连接。
- 长连接 的环境下,进行一次数据交互后,很长一段时间内无数据交互时,客户端可能意外断开,这些 TCP 连接并未来得及正常释放 ,那么,连接的另一方并不知道对端的情况。就会一直维护这个连接,长时间的积累会导致非常多的半打开连接,造成端系统资源的消耗和浪费,且有可能导致在一个无效的数据链路层面发送业务数据,结果就是发送失败。所以服务端要做到快速感知失败,减少无效链接操作,这就有了 TCP 的 Keepalive(保活探测) 机制
tcp-keepalive 10
配置成功后,需要重启 Redis 服务才会生效。
[root@localhost etc]# redis-cli -p 6379 shutdown
4. GENERAL 通用配置
4.1 daemonize(后台启动)配置
daemonize yes
- 是否为后台进程,设置为 yes
- 设置为 yes 后, 表示守护进程, 后台启动
4.2 pidfile(pid 文件存在路径)配置
pidfile /var/run/redis_6379.pid
存放 pid 文件的位置,每个实例会产生一个不同的 pid 文件, 记录 redis 的进程号
[root@localhost run]# ps -ef | grep redis
[root@localhost run]# cat redis_6379.pid
[root@localhost run]# ps -aux | grep sshd
4.3 loglevel(日志级别)配置
loglevel notice
Redis 日志分为 4 个级别,默认的设置为 notice,开发测试阶段可以用 debug(日志内容较多,不建议生产环境使用),生产模式一般选用 notice
Redis 日志级别为如下 4 种 :
debug
:会打印很多信息,适用于开发和测试阶段。verbose(冗长的)
:包含很多不太有用的信息,但比 debug 要清爽一些。notice
:适用于生产模式。warning
:警告信息。
127.0.0.1:6379> config get loglevel
4.4 logfile(日志文件)配置
logfile ""
- logfile “” 就是说,默认为控制台打印,并没有日志文件生成
- 可以为 redis.conf 的 logfile 指定配置项。如下:
logfile "/var/log/redis/redis.log"
修改了配置文件,需要重启 redis 才会生成。
127.0.0.1:6379> config get logfile
4.5 databases 16(仓库数量)配置
databases 16
- 设定库的数量,默认是16个,默认数据库为 0 号,数据库索引是从 0 开始的
- 可以适用
select<dbid>
命令在连接上指定数据库 id
5. SECURITY 安全配置
SECURITY 安全配置,就是为 Redis 客户端登录的时候,设置密码。
在 Redis 当中,设置密码有两种方式:
5.1 在 redis.conf 配置文件当中设置密码(永久)
# requirepass foobared
这里我们测试,将注释去掉,适用这个 foobared
作为密码。
requirepass foobared
修改了配置,需要重启 Redis 服务,才会生效。
127.0.0.1:6379> auth foobared
127.0.0.1:6379> auth 密码 # 登录 redis 客户端,使用密码
127.0.0.1:6379> acl list
# 注意:需要进入到 Redis 客户端
127.0.0.1:6379> acl whoami
# 注意:需要进入到 Redis 客户端
5.3 在 命令行设置密码
127.0.0.1:6379> config get requirepass
127.0.0.1:6379> config set requirepass rainbowsea
6. LIMITS 限制配置
6.1 maxclients(客户端连接数)配置
-
设置 Redis 同时可以与多少个客户端进行连接(包括远程连接)
-
默认情况下为 10000 个客户端。
-
如果达到了此限制,redis 会拒绝新的连接请求,并且向这些连接请求方发出
“max number of clients reached”
-
注意一点的是:当超过连接数目了,你可以进入到 Redis 客户端,但是的命令是不会被 Redis 执行的,并提示
“max number of clients reached”
。
6.2 maxmemory(Redis 最大占用内存)配置
# maxmemory <bytes>
- 在默认情况下, 对 32 位 实例会限制在 3 GB, 因为 32 位的机器最大只支持 4GB 的 内存,而系统本身就需要一定的内存资源来支持运行,所以 32 位机器限制最大 3 GB 的 可用内存是非常合理的,这样可以避免因为内存不足而导致 Redis 实例崩溃
- 在默认情况下, 对于 64 位实例是没有限制
- 当用户开启了 redis.conf 配置文件的 maxmemory 选项,那么 Redis 将限制选项的值 不能小于 1 MB
maxmemory
设置的建议:
- Redis 的 maxmemory 设置取决于使用情况, 有些网站只需要 32MB,有些可能需要 12GB
- maxmemory 只能根据具体的生产环境来调试,不要预设一个定值,从小到大测试, 基本标准是不干扰正常程序的运行。
- Redis 的最大使用内存跟搭配方式有关,如果只是用 Redis 做纯缓存, 64-128M 对一般小 型网站就足够了
- 如果使用 Redis 做数据库的话,设置到物理内存的 1/2 到 3/4 左右都可以
- 如果使用了快照功能的话,最好用到 50%以下,因为快照复制更新需要双倍内存空间, 如果没有使用快照而设置 redis 缓存数据库,可以用到内存的 80%左右,只要能保证 Java、 NGINX 等其它程序可以正常运行就行了
6.3 maxmemory-policy(Redis内存不够的算法配置处理)配置
# maxmemory-policy noevictio
policy 可以配置如下选项:
volatile-lru:
使用 LRU 算法移除 key,只对设置了过期时间的键;(最近最少使用)allkeys-lru:
在所有集合 key 中,使用 LRU 算法移除 keyvolatile-random:
在过期集合中移除随机的 key,只对设置了过期时间的键allkeys-random:
在所有集合 key 中,移除随机的 keyvolatile-ttl:
移除那些 TTL 值最小的 key,即那些最近要过期的 keynoeviction:
不进行移除。针对写操作,只是返回错误信息
无论是选择那种配置,都会丢失数据,所以,尽量还是设置好合适的 Redis 内存,方式内存不够用 。
6.4 maxmemory-samples(内存算法处理的比较样本) 配置
# maxmemory-samples 5
- 设置样本数量,LRU 算法和最小 TTL 算法都并非是精确的算法,而是估算值,所以你可 以设置样本的大小,redis 默认会检查这么多个 key 并选择其中 LRU 的那个。
- 一般设置 3 到 7 的数字,数值越小样本越不准确,但性能消耗越小。
举例理解:
简单的比较就是:当你在 8W 个人当中,找到身高 180 的人,很费时间和精力。但是当让你从 10,100个人当中找 身高 180的人,那就更简单了。简单的理解就是一个参考的样本。参考的数量越多精确度越高,但是成本也就越高。参考的数量少的,精确的就越低,但是消耗的成本却更低。
7. 总结:
- 注意: 上述的所有配置都需要将 Redis 服务器,关闭了,再重启后,配置才能生效。
- 查看 redis.conf 配置文件的信息,可以进入到 Redis 客户端后,使用
config get 配置属性/信息
命令。注意: 需要先进入到 Redis 客户端才行。
127.0.0.1:6379> config get loglevel
1) "loglevel"
2) "notice"
127.0.0.1:6379> config get logfile
1) "logfile"
2) ""
- 在命令行当中设置 redis.conf 配置文件的信息,可以进入到 Redis 客户端后,使用
config set 配置属性/信息
命令。注意: 需要先进入到 Redis 客户端才行。同时因为是在 客户端命令设置的配置信息,那么退出了客户端,该命令行配置的信息就都失效了。
127.0.0.1:6379> config set requirepass rainbowsea
127.0.0.1:6379> auth rainbowsea
127.0.0.1:6379> config get requirepass
8. 最后:
“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”
相关文章:

五. Redis 配置内容(详细配置说明)
五. Redis 配置内容(详细配置说明) 文章目录 五. Redis 配置内容(详细配置说明)1. Units 单位配置2. INCLUDES (包含)配置3. NETWORK (网络)配置3.1 bind(配置访问内容)3.2 protected-mode (保护模式)3.3 port(端口)配置3.4 timeout(客户端超时时间)配置3.5 tcp-keepalive()配置…...

4 [危机13小时追踪一场GitHub投毒事件]
事件概要 自北京时间 2024.12.4 晚间6点起, GitHub 上不断出现“幽灵仓库”,仓库中没有任何代码,只有诱导性的病毒文件。当天,他们成为了 GitHub 上 star 增速最快的仓库。超过 180 个虚假僵尸账户正在传播病毒,等待不…...

Shadow DOM举例
这东西具有隔离效果,对于一些插件需要append一些div倒是不错的选择 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"utf-8"> <title>演示例子</title> </head> <body> <style&g…...

力扣动态规划-18【算法学习day.112】
前言 ###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!! 习题 1.下降路径最小和 题目链接:931. …...

网络基础
协议 协议就是约定 网络协议是协议中的一种 协议分层 协议本身也是软件,在设计上为了更好的模块化,解耦合,也是设计成为层状结构的 两个视角: 小白:同层协议,直接通信 工程师:同层协议&…...

使用 EXISTS 解决 SQL 中 IN 查询数量过多的问题
在 SQL 查询中,当我们面对需要在 IN 子句中列举大量数据的场景时,查询的性能往往会受到显著影响。这时候,使用 EXISTS 可以成为一种优化的良方。 问题的来源 假设我们有两个表,orders 和 customers,我们需要查询所有…...

使用SpringBoot发送邮件|解决了部署时连接超时的bug|网易163|2025
使用SpringBoot发送邮件 文章目录 使用SpringBoot发送邮件1. 获取网易邮箱服务的授权码2. 初始化项目maven部分web部分 3. 发送邮件填写配置EmailSendService [已解决]部署时连接超时附:Docker脚本Dockerfile创建镜像启动容器 1. 获取网易邮箱服务的授权码 温馨提示…...

Ruby Dir 类和方法详解
Ruby Dir 类和方法详解 引言 在 Ruby 中,Dir 是一个非常有用的类,用于处理文件系统中的目录。它提供了许多方便的方法来列出目录内容、搜索文件、以及处理文件系统的其他相关操作。本文将详细介绍 Ruby 的 Dir 类及其常用方法。 一、Dir 类概述 Dir …...

克隆OpenAI(基于openai API和streamlit)
utils.py: from langchain_openai import ChatOpenAI from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain import osdef get_chat_response(api_key,prompt,memory): # memory不能是函数的内部局部变量&…...

位运算算法题
一.判断字符是否唯一 法一: 我们直接借助一个字符数组来模拟哈希表统计字符串即可,并且我们没有必要先将所有字符都放入字符数组中,边插入边判断,当我们要插入某个字符的时候,发现其已经出现了,此时必然重复…...

12 向量结构模块(vector.rs)
一vector.rs源码 // Copyright 2013 The Servo Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE…...

Android车机DIY开发之学习篇(六)编译讯为3568开发板安卓
Android车机DIY开发之学习篇(六)编译讯为3568开发板安卓 1.SDK解压到家目录下的 rk3588_android_sdk 目录 一. 全部编译 ###安装所需环境 sudo apt-get update sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g…...

Codeforces Round 863 (Div. 3) E. Living Sequence
题目链接 头一回用不是正解的方法做出来,也是比较极限,直接说做法就是二分数位dp 数位 d p dp dp 求 1 − n 1-n 1−n出现多少含 4 4 4的数字个数 这纯纯板子了 \sout{这纯纯板子了} 这纯纯板子了 设 f ( x ) f(x) f(x) 为 1 − x 1-x 1−x 中含有4的…...

一文讲解HashMap线程安全相关问题(上)
HashMap不是线程安全的,主要有以下几个问题: ①、多线程下扩容会死循环。JDK1.7 中的 HashMap 使用的是头插法插入元素,在多线程的环境下,扩容的时候就有可能导致出现环形链表,造成死循环。 JDK 8 时已经修复了这个问…...

MFC 创建Ribbon样式窗口
然后点击下一步直到完成即可...

uv 安装包
是的,你可以使用 uv 来安装 Python 包。uv 是一个高性能的 Python 包安装器和解析器,由 astral.sh 团队开发,旨在替代 pip 和 pip-tools,提供更快的包安装体验。 ### 如何使用 uv 安装包 1. **安装 uv**: 如果你还…...

IELTS口语练习题库
IELTS口语1-4月题库 Part 1 Gifts Have you ever sent handmade gifts to others? Yes, I have. I once made a scrapbook for my best friend’s birthday. It included photos of our memories together and some handwritten notes. She loved it because it was personal…...

图书管理系统 Axios 源码__获取图书列表
目录 核心功能 源码介绍 1. 获取图书列表 技术要点 适用人群 本项目是一个基于 HTML Bootstrap JavaScript Axios 开发的图书管理系统,可用于 添加、编辑、删除和管理图书信息,适合前端开发者学习 前端交互设计、Axios 数据请求 以及 Bootstrap 样…...

基于OSAL的嵌入式裸机事件驱动框架——整体架构调度机制
参考B站up主【架构分析】嵌入式祼机事件驱动框架 感谢大佬分享 任务ID : TASK_XXX TASK_XXX 在系统中每个任务的ID是唯一的,范围是 0 to 0xFFFE,0xFFFF保留为SYS_TSK_INIT。 同时任务ID的大小也充当任务调度的优先级,ID越大&#…...

c++ string类 +底层模拟实现
提醒: 本片博客只是小编的听课笔记,介意勿看。 基础 包含在头文件<string>,才能使用string类似函数接口。 string常见构造类 string s1; cin>>s1;//无参构造 string s2(s1);//拷贝构造 string s1("jfksa");//传参构造 三种…...

六十分之三十七——一转眼、时光飞逝
一、目标 明确可落地,对于自身执行完成需要一定的努力才可以完成的 1.第三版分组、激励、立体化权限、智能设备、AIPPT做课 2.8本书 3.得到:头条、吴军来信2、卓克科技参考3 4.总结思考 二、计划 科学规律的,要结合番茄工作法、快速阅读、…...

Shell基础:中括号的使用
在Shell脚本中,中括号([ ... ] 和 [[ ... ]])是一种常见的条件测试结构。它们用于进行文件类型检查、值比较以及逻辑判断。通过了解它们的不同特点和用法,能够帮助你编写更加高效、安全且易读的脚本。本文将详细介绍Shell中单中括…...

《基于Scapy的综合性网络扫描与通信工具集解析》
在网络管理和安全评估中,网络扫描和通信是两个至关重要的环节。Python 的 Scapy 库因其强大的网络数据包处理能力,成为开发和实现这些功能的理想工具。本文将介绍一个基于 Scapy 编写的 Python 脚本,该脚本集成了 ARP 扫描、端口扫描以及 TCP…...

面经--C语言——sizeof和strlen,数组和链表,#include <>和 #include ““ #define 和typedef 内存对齐概述
文章目录 sizeof 和 strlen数组和链表总结 #include <>和 #include ""#define 和typedef内存对齐概述对齐规则示例:结构体的内存对齐分析: 内存对齐的常见规则:填充字节的计算对齐影响的实际例子 sizeof 和 strlen 特性size…...

使用 Kotlin 将 Vertx 和 Springboot 整合
本篇文章目的是将 Springboot 和 Vertx 进行简单整合。整合目的仅仅是为了整活,因为两个不同的东西整合在一起提升的性能并没有只使用 Vertx 性能高,因此追求高性能的话这是在我来说不推荐。而且他们不仅没有提高很多性能甚至增加了学习成本 一、整合流…...

线性回归算法-01
线性回归简介 学习目标 了解线性回归的应用场景知道线性回归的定义 1 线性回归应用场景 房价预测销售额度预测贷款额度预测 2 什么是线性回归 2.1 定义与公式 线性回归(Linear regression)是利用 回归方程(函数)对 一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模…...

洛谷 P1130 红牌 C语言
题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌。获得红牌的过程是相当复杂,一共包括 N 个步骤。每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件。为了加快进程,每一步政府都派了 M 个工作人员来检查材料。不幸的是&…...

虚幻UE5手机安卓Android Studio开发设置2025
一、下载Android Studio历史版本 步骤1:虚幻4.27、5.0、5.1、5.2官方要求Andrd Studio 4.0版本; 5.3、5.4、5.5官方要求的版本为Android Studio Flamingo | 2022.2.1 Patch 2 May 24, 2023 虚幻官网查看对应Andrd Studiob下载版本: https:/…...

线性代数复习笔记
1. 课程学习 1.1 3Blue1Brown 线性代数 2. 基本术语 eigenvector(特征向量):线性变换中方向保持不变的向量 可以视作3D旋转矩阵形成的旋转的轴...

你需要更深层次的解放
先谈一谈理性认知中的属性替换原则。简单来说,属性替换就是用简单的问题取代难题。 当人们需要评估属性A时,却发现评估属性B更容易一些(A与B之间存在一定的关系),于是就改为评估属性B。这叫做属性替换。 作为一种认知…...