绿色配色的网站,wordpress手机颜色,成都建筑公司排名,免费学校网站管理系统华子目录 基础配置查看配置文件位置启动redis时#xff0c;指定加载的配置文件示例 include引用其他配置文件units单位大小写不敏感network网络配置bind配置方式示例 protected-mode功能概述默认值配置方法安全建议总结 porttcp-backlog1. 定义2. 默认值3. 优化建议4. 注意事项… 华子目录 基础配置查看配置文件位置启动redis时指定加载的配置文件示例 include引用其他配置文件units单位大小写不敏感network网络配置bind配置方式示例 protected-mode功能概述默认值配置方法安全建议总结 porttcp-backlog1. 定义2. 默认值3. 优化建议4. 注意事项5. 总结 timeout1. 定义与功能2. 默认值与设置方法3. 注意事项4. 总结 tcp-keepalive定义与功能默认值与设置方法注意事项总结 general通用类daemonize守护进程后台进程定义与功能默认值与设置方法注意事项总结 pidfile定义与功能配置方法默认值与位置作用与用途注意事项 logfile定义与功能配置方法默认值与位置注意事项总结 loglevel定义与功能日志级别配置方法默认值注意事项总结 always-show-logo定义与功能配置细节注意事项总结 databases定义与功能配置细节注意事项总结 security安全类通过redis命令行设置密码通过配置文件requirepass设置密码配置细节使用密码进行身份验证注意事项示例 clients限制类maxclientsmaxmemory示例配置注意事项 maxmemory-policy作用可选策略配置示例注意事项 maxmemory-samples作用配置示例细节说明总结 基础配置
查看配置文件位置
redis配置文件为redis.conf可以通过find或whereis命令查找文件路径位置
[rootserver ~]# find / -name redis.conf
/etc/redis.conf或[rootserver ~]# whereis redis.conf
redis.conf: /etc/redis.conf启动redis时指定加载的配置文件
[rootserver ~]# cat /etc/redis.conf
# Redis configuration file example.
#
# Note that in order to read the configuration file, Redis must be
# started with the file path as first argument:
#
# ./redis-server /path/to/redis.conf #redis服务启动时需要加载的配置文件示例
比如/etc/redis.conf配置文件参数不动我把该文件cp到/usr/目录下修改/usr/redis.conf配置文件的参数比如设置密码默认没有密码在启动redis服务时指定/usr/redis.conf这个配置文件那么在用客户端连接服务端时需要输入密码。反之指定用/etc/redis.conf配置文件启动服务则不需要输入密码就可以连接服务端。启动redis时指定加载的配置文件为/usr/redis.cong
[rootserver ~]# vim /etc/redis.conf
# Redis configuration file example.
#
# Note that in order to read the configuration file, Redis must be
# started with the file path as first argument:
#
./redis-server /usr/redis.conf重启redis服务时会加载/usr/redis.conf这个配置文件
include引用其他配置文件
include可以指定引用其他位置的配置文件。若被include引用的配置文件里的参数与redis.conf里的参数有相同的想要实现加载被引用配置文件里的参数则需要将include这一行放在redis.conf配置文件里相同参数的后面一行中通俗得讲后面进行include的文件会覆盖前面已经加载过的文件重启生效
units单位大小写不敏感
units单位指定的单位可以是大写小写单位不区分大小写所以1Gb 1gB 1GB都是相同的。。并支持的度量单位为bytes不支持bit
在Redis的配置文件通常是redis.conf中units部分定义了用于配置文件中各种大小参数的度量单位。这些单位在配置Redis的内存大小、缓冲区大小等参数时非常有用。以下是对units单位的详细解释 基本单位 所有的大小单位都基于字节bytes。 可用的单位 1k表示1000字节注意这里的“k”是千的意思不是千字节即不是1KB。1kb表示1024字节即1千字节KB。1m表示1000000字节。1mb表示1024*1024字节即1兆字节MB。1g表示1000000000字节。1gb表示1024*1024*1024字节即1吉字节GB。 单位的大小写敏感性 Redis对单位的大小写是不敏感的因此1GB、1Gb、1gB都被视为相同的单位。 用途 这些单位常用于配置Redis的内存相关参数如maxmemory用于设置Redis实例能够使用的最大内存量等。 示例 如果你想将Redis的最大内存限制设置为1GB你可以在配置文件中使用maxmemory 1gb或maxmemory 1073741824直接以字节为单位指定。 注意事项 当在配置文件中使用这些单位时请确保单位与数字之间没有空格。例如1 gb是无效的而1gb是有效的。
综上所述units部分在Redis配置文件中定义了用于指定大小参数的度量单位并允许用户以人类可读的方式如KB、MB、GB来配置Redis的大小参数而不是直接使用字节数。
network网络配置
bind
[rootserver ~]# cat /etc/redis.conf | grep bind
bind 127.0.0.1 -::1默认情况下 bind127.0.0.1 只能接受本机的访问请求。在不写的情况下无限制接受任何 IP 地址的访问。若外部要连接服务端可以用通配符*即bind *通过设置bind指令可以控制哪些IP地址可以接受到Redis服务器的连接请求。
配置方式
bind指令接受一个或多个IP地址作为参数多个IP地址之间使用空格分隔。例如bind 127.0.0.1 192.168.1.100这表示Redis服务器将同时绑定在本地回环接口和IP地址为192.168.1.100的网络接口上。允许本机和192.168.1.100的主机访问
示例
允许来自本地主机的连接请求默认配置bind 127.0.0.1允许来自指定IP地址如192.168.1.100的连接请求bind 192.168.1.100允许来自任何IP地址的连接请求不推荐存在安全风险bind 0.0.0.0或bind *
protected-mode
[rootserver ~]# cat /etc/redis.conf | grep protected-mode
protected-mode yesprotected-mode ,默认是开启状态一般不需要修改可以保证服务的安全性。
在Redis的配置文件中protected-mode是一个重要的安全选项用于在Redis没有配置密码即requirepass指令未设置且没有绑定到特定IP地址即bind指令为空或仅绑定了127.0.0.1时限制对Redis服务器的访问。
功能概述
当protected-mode设置为yes时Redis将在没有密码和没有绑定到特定IP地址的情况下仅允许来自本地环境的连接即只接受来自localhost或127.0.0.1的连接。设置为no时Redis将不会实施此本地连接限制但请注意这可能会增加安全风险特别是当Redis没有设置密码时。
默认值
在Redis的默认配置中protected-mode通常被设置为yes。
配置方法
你可以通过编辑Redis的配置文件通常是redis.conf来修改protected-mode的值。
# 默认配置可能是这样的
protected-mode yes# 如果你想禁用protected-mode可以将其更改为
protected-mode no安全建议
始终建议为Redis设置一个强密码并使用requirepass指令在配置文件中进行配置。如果可能的话使用bind指令将Redis绑定到特定的IP地址或接口以减少潜在的攻击面。在生产环境中考虑使用防火墙或其他网络安全工具来进一步限制对Redis服务器的访问。禁用protected-mode之前请确保你已经采取了其他安全措施来保护Redis服务器。
总结
protected-mode是Redis提供的一个基本安全特性用于在Redis没有配置密码和没有绑定到特定IP地址时限制对Redis服务器的访问。虽然它不是一个全面的安全解决方案但它可以增加一层额外的保护特别是在开发和测试环境中。然而在生产环境中你应该始终考虑使用更强大的安全措施来保护Redis服务器。
port port 默认端口是6379。 在 Redis 的配置文件中port 参数用于指定 Redis 服务器应该监听的 TCP 端口号。默认情况下Redis 使用端口号 6379。 如果你查看 Redis 的配置文件通常位于 /etc/redis/redis.conf 或 /usr/local/etc/redis/redis.conf具体取决于你的安装方式和操作系统你会找到类似这样的行
port 6379这表示 Redis 服务器正在监听 TCP 端口 6379 上的连接。 如果你想要更改 Redis 服务器监听的端口只需编辑配置文件中的 port 行将其更改为你想要的新端口号然后重启 Redis 服务即可。例如如果你想要 Redis 监听端口 7000则应将配置文件中的 port 行更改为
port 7000然后保存配置文件并重启 Redis 服务。注意更改端口后你需要使用新的端口号来连接 Redis 服务器。
tcp-backlog
[rootserver ~]# cat /etc/redis.conf | grep tcp-backlog
tcp-backlog 511在 Redis 的配置文件中tcp-backlog 参数用于设置 TCP 连接的监听队列大小。以下是关于 tcp-backlog 的详细解释
1. 定义
tcp-backlog 是一个连接队列这个队列包含了等待与 Redis 服务器建立连接的客户端套接字。在高并发环境下设置一个较高的 backlog 值可以帮助避免慢客户端连接问题。
2. 默认值
在 Redis 的默认配置中tcp-backlog 的值通常是 511。然而这个值必须不大于 Linux 系统定义的 /proc/sys/net/core/somaxconn 的值和/proc/sys/net/ipv4/tcp_max_syn_backlog的值该值的默认大小通常是 128。
3. 优化建议
调整 tcp-backlog对于负载很大的服务程序可以将 tcp-backlog 的值调整为 2048 或更大。这有助于在高并发环境下提高 Redis 的性能。调整 somaxconn由于 tcp-backlog 的值不能超过 /proc/sys/net/core/somaxconn因此你可能还需要调整这个内核参数。你可以通过编辑 /etc/sysctl.conf 文件并添加 net.core.somaxconn 2048 来实现这一点然后执行 sysctl -p 使更改生效。调整 tcp_max_syn_backlog 由于 tcp-backlog 的值不能超过 /proc/sys/net/ipv4/tcp_max_syn_backlog因此你可能还需要调整这个内核参数。你可以通过编辑 /etc/sysctl.conf 文件并添加 net.ipv4.tcp_max_syn_backlog 1024来实现这一点然后执行 sysctl -p 使更改生效。
4. 注意事项
在调整这些参数时请确保了解它们的工作原理并根据你的具体需求进行配置。修改配置文件后需要重启 Redis 服务以使更改生效。
5. 总结
tcp-backlog 是 Redis 配置文件中用于设置 TCP 连接监听队列大小的重要参数。在高并发环境下合理设置这个参数可以提高 Redis 的性能。同时还需要注意与 Linux 系统的 somaxconn 参数和tcp_max_syn_backlog进行配合调整。
timeout
[rootserver ~]# cat /etc/redis.conf | grep timeout
timeout 0在Redis的配置文件中timeout参数用于设置客户端连接的超时时间。以下是关于timeout参数的详细解释
1. 定义与功能
定义timeout参数指定了客户端连接在没有任何操作的情况下Redis服务器等待客户端活动的最大时间以秒为单位。功能当客户端连接在指定的超时时间内没有进行任何操作时Redis服务器会自动断开该连接。这有助于避免无效的连接长时间占用服务器资源提高服务器的并发处理能力。
2. 默认值与设置方法
默认值默认情况下timeout的值为0表示Redis服务器不会主动断开空闲的客户端连接。设置方法 在Redis的配置文件通常是redis.conf中可以通过添加或修改timeout参数来设置超时时间。例如timeout 300表示设置超时时间为300秒5分钟。也可以在启动Redis服务器的命令中直接添加--timeout参数来设置超时时间。例如redis-server --timeout 300表示在启动Redis服务器时设置超时时间为300秒5分钟。
3. 注意事项
合理设置timeout参数可以根据实际需求减少连接断开和重新连接的频率提高系统的稳定性和性能。修改timeout参数后需要重启Redis服务器才能使新的设置生效。当timeout设置为0时Redis服务器将不会主动断开空闲的客户端连接这可能会导致服务器资源被无效连接长时间占用。因此在生产环境中建议根据实际需求设置一个合适的超时时间。
4. 总结
timeout参数是Redis配置文件中用于设置客户端连接超时时间的重要参数。通过合理设置该参数可以避免无效连接长时间占用服务器资源提高Redis服务器的并发处理能力和稳定性。
tcp-keepalive
[rootserver ~]# cat /etc/redis.conf | grep tcp-keepalive
tcp-keepalive 300在Redis的配置文件中tcp-keepalive参数用于设置TCP连接的保活策略。以下是关于tcp-keepalive参数的详细解释
定义与功能
定义tcp-keepalive参数允许Redis服务器定期向空闲的客户端发送TCP心跳包以检测网络连通性。功能 检测网络异常如果网络出现异常服务器可以尽快清理“僵尸”连接释放系统资源。保持连接活跃通过发送心跳包确保连接保持活跃状态防止因长时间无操作而被错误地断开。
默认值与设置方法
设置方法 在Redis的配置文件通常是redis.conf中可以添加或修改tcp-keepalive参数来设置心跳检测的时间间隔以秒为单位。例如tcp-keepalive 60表示Redis服务器将每隔60秒向空闲的客户端发送一次TCP心跳包。单位为秒如果设置为0则不会进行 Keepalive 检测建议设置成 60。注意在某些系统中tcp-keepalive可能只在Linux等操作系统上生效而在其他系统如Mac上则可能无效或依赖于系统内核的默认设置。
注意事项
合理配置根据网络环境和业务需求合理配置tcp-keepalive参数。如果设置得过低可能会增加服务器的负载和网络带宽的使用如果设置得过高可能无法及时检测到网络异常。依赖系统由于tcp-keepalive可能依赖于操作系统的默认设置因此在修改Redis配置文件后可能需要检查系统级的TCP保活设置以确保Redis的tcp-keepalive参数能够正常工作。其他参数除了tcp-keepalive外Redis还提供了其他与网络连接相关的参数如tcp-backlog、timeout等。这些参数可以共同影响Redis的网络性能和稳定性因此也需要进行合理配置。
总结
tcp-keepalive是Redis配置文件中用于设置TCP连接保活策略的重要参数。通过合理配置该参数可以确保Redis服务器能够及时检测到网络异常并清理无效连接从而提高系统的稳定性和性能。在配置时需要注意参数的值、系统依赖以及其他相关参数的影响。
general通用类
daemonize守护进程后台进程
[rootserver ~]# cat /etc/redis.conf | grep daemonize
daemonize yes在Redis的配置文件中daemonize参数用于控制Redis服务器是否以守护进程后台进程的方式运行。以下是关于daemonize参数的详细解释
定义与功能
定义daemonize是一个配置选项用于指定Redis是否应以守护进程后台进程的形式运行。功能 当daemonize设置为yes时Redis服务器将在后台运行并将进程IDPID写入到由pidfile配置项指定的文件中。当daemonize设置为no时Redis将在当前终端会话中作为前台进程运行。这通常用于开发和调试目的因为你可以直接看到Redis的输出和错误消息。
默认值与设置方法
默认值在某些Redis版本中daemonize的默认值为no但在其他版本中可能默认为yes。这取决于你使用的Redis版本和安装方式。设置方法 在Redis的配置文件通常是redis.conf中找到daemonize配置项并将其设置为yes或no。例如要设置为后台运行可以在配置文件中添加或修改以下行daemonize yes
注意事项
守护进程模式当Redis以守护进程模式运行时即使你关闭了启动Redis的终端窗口Redis服务也会继续运行。日志和PID文件在守护进程模式下你需要确保Redis有足够的权限来写入logfile和pidfile指定的文件。调试和开发在开发和调试过程中将daemonize设置为no可能更方便因为你可以直接看到Redis的输出和错误消息。但在生产环境中通常建议将daemonize设置为yes以确保Redis在后台稳定运行。
总结
daemonize是Redis配置文件中用于控制Redis是否以守护进程模式运行的参数。通过将其设置为yes或no你可以决定Redis是在后台运行还是在前台运行。在生产环境中通常建议将daemonize设置为yes以确保Redis的稳定运行。
pidfile
[rootserver ~]# cat /etc/redis.conf | grep pidfile
pidfile /var/run/redis_6379.pidRedis配置文件中的pidfile是一个非常重要的配置项它用于指定Redis进程的PID进程ID文件路径。以下是关于pidfile的详细解释
定义与功能
定义pidfile是Redis配置文件中的一个参数用于定义Redis服务器进程IDPID的文件路径。功能当Redis服务器启动时它会将自己的PID写入到由pidfile指定的文件中。这个文件是一个文本文件内容仅包含Redis进程的PID。通过读取这个文件系统管理员或其他工具可以轻松地获取Redis进程的PID进而进行监控、管理或操作。
配置方法
在Redis的配置文件通常是redis.conf中找到pidfile配置项并设置其值为你希望存储PID的文件路径。例如
pidfile /var/run/redis/redis-server.pid在这个例子中Redis的PID将被写入到/var/run/redis/redis-server.pid文件中。
默认值与位置
默认值Redis的默认pidfile位置可能会因操作系统和安装方式的不同而有所变化。在某些系统中默认位置可能是/var/run/redis.pid。位置pidfile通常位于Redis服务器的运行目录下并且以.pid作为文件扩展名。
作用与用途
管理Redis进程通过读取pidfile中的PID可以确定Redis进程的运行状态并根据需要进行启动、停止或重启操作。监控Redis进程监控程序可以定期读取pidfile中的PID以检查Redis进程是否仍在运行。如果发现Redis进程不存在监控程序可以采取相应的措施如重新启动Redis。与其他工具集成一些系统管理工具或脚本可能会使用到pidfile来识别和管理Redis进程。例如使用kill命令向Redis进程发送信号时可以通过读取pidfile中的PID来确定要发送信号的目标进程。
注意事项
确保Redis进程有权限写入pidfile指定的文件路径。如果更改了pidfile的路径或文件名请确保在启动Redis服务器之前更新配置文件中的相应配置项。
总之pidfile是Redis配置文件中用于存储Redis进程PID的文件路径配置项。通过正确配置和使用pidfile可以方便地管理和监控Redis进程。
logfile
logfile默认为空则将日志打印在屏幕上不输出成文件。也可以指定文件位置这样服务运行时只会把日志输入到指定文件里。
[rootserver ~]# cat /etc/redis.conf | grep logfile
logfile Redis配置文件中的logfile是用于配置Redis服务器日志文件的路径和名称的重要参数。以下是关于logfile的详细解释
定义与功能
定义logfile是Redis配置文件中指定日志文件存储路径和名称的配置项。功能通过配置logfileRedis服务器可以将重要的运行事件、错误信息等记录到指定的日志文件中。这些日志信息对于了解Redis服务器的运行状态、进行故障排查和调优等操作非常有帮助。
配置方法
找到Redis配置文件Redis的配置文件通常名为redis.conf其位置可能因安装方式和操作系统的不同而有所差异。常见的位置有/etc/redis/redis.conf或/usr/local/etc/redis/redis.conf。打开并编辑配置文件使用文本编辑器打开redis.conf文件。找到logfile配置项在配置文件中搜索logfile配置项它通常位于文件的较前面部分。设置日志文件路径和名称在logfile配置项后面设置你希望存储Redis日志文件的路径和名称。例如如果logfile被设置为空字符串Redis将把日志信息输出到标准输出stdout。但是如果Redis是以守护进程daemon方式运行的标准输出将被重定向到/dev/null即不会保存任何日志信息。
logfile /var/log/redis/redis-server.log在这个例子中Redis的日志文件将被写入到/var/log/redis/redis-server.log文件中。 5. 保存并关闭文件完成配置后保存并关闭redis.conf文件。 6. 重启Redis服务为了使新的logfile配置生效需要重启Redis服务。这可以通过运行如sudo systemctl restart redis的命令具体命令可能因操作系统和安装方式的不同而有所差异来完成。
默认值与位置
默认值Redis的默认logfile位置可能会因操作系统和安装方式的不同而有所变化。在某些系统中默认位置可能是/var/log/redis/redis-server.log或/var/log/redis.log。位置通常建议将日志文件存储在系统的日志目录下如/var/log/redis/这样可以方便地进行日志管理和查看。
注意事项
确保Redis进程有权限写入logfile指定的文件路径。如果更改了logfile的路径或文件名请确保在启动Redis服务器之前更新配置文件中的相应配置项。如果logfile被设置为空字符串Redis将把日志信息输出到标准输出stdout。但是如果Redis是以守护进程daemon方式运行的标准输出将被重定向到/dev/null即不会保存任何日志信息。因此通常建议明确指定一个有效的日志文件路径。
总结
通过正确配置Redis配置文件中的logfile参数可以方便地管理和查看Redis服务器的日志信息这对于了解Redis的运行状态、进行故障排查和调优等操作非常有帮助。
loglevel
[rootserver ~]# cat /etc/redis.conf | grep loglevel
loglevel noticeRedis配置文件中的loglevel参数用于设置Redis服务器的日志级别决定了Redis在何种情况下输出日志信息。以下是关于loglevel的详细解释
定义与功能
定义loglevel是Redis配置文件中用于设置日志级别的配置项。功能控制Redis服务器记录日志的详细程度。不同的日志级别决定了Redis会记录哪些类型的日志信息。
日志级别
Redis支持以下几种日志级别按详细程度从高到低排序
debug最详细的日志级别适用于开发和调试阶段。会记录大量的信息包括各种操作和内部状态变化。verbose较为详细的日志级别适用于追踪Redis的行为。会记录一些有用的信息但不像debug级别那样详细。notice普通级别的日志适用于记录Redis的常规操作。通常只记录一些重要的、需要管理员注意的事件。warning警告级别的日志适用于记录一些潜在的问题或异常情况。这些信息可能表示某些配置不当或系统性能问题。error错误级别的日志用于记录Redis发生的错误。这些日志通常表示Redis遇到了无法处理的问题或错误需要管理员立即关注和处理。
配置方法
在Redis的配置文件通常是redis.conf中找到loglevel配置项并设置其值为所需的日志级别。例如要将日志级别设置为warning可以添加或修改以下行
loglevel warning修改完配置文件后需要重启Redis服务才能使新的日志级别设置生效。
默认值
在某些Redis版本中loglevel的默认值为verbose。但请注意默认值可能会因Redis版本和安装方式的不同而有所变化。
注意事项
在生产环境中通常建议将loglevel设置为notice或warning以减少不必要的日志输出降低系统负载和磁盘空间的占用。如果需要调试Redis或排查问题可以将loglevel设置为debug或verbose以获取更详细的日志信息。但在问题解决后应及时将日志级别调回较低的值以避免对系统性能造成负面影响。
总结
loglevel是Redis配置文件中用于设置日志级别的配置项。通过合理配置loglevel可以控制Redis记录日志的详细程度以满足不同的需求和场景。
always-show-logo
[rootserver ~]# cat /etc/redis.conf | grep always-show-logo
always-show-logo no在Redis的配置文件中always-show-logo 参数用于控制Redis在启动时是否总是显示其ASCII艺术风格的logo。以下是对该参数的详细解释
定义与功能
定义always-show-logo 是一个配置选项用于控制Redis在启动时是否显示其logo。功能默认情况下Redis会根据一些条件如标准输出是否为TTY设备来决定是否在启动时显示logo。但是通过设置always-show-logo参数你可以强制Redis总是显示或总是不显示logo。
配置细节 默认值根据Redis的版本和配置文件的默认设置always-show-logo 的默认值可能有所不同。但在许多情况下它的默认行为是当标准输出是TTY设备时显示logo否则不显示。 配置方式在Redis的配置文件通常是redis.conf中你可以找到always-show-logo这一行并设置其值为yes或no。例如 要强制Redis在启动时总是显示logo设置 always-show-logo yes要强制Redis在启动时从不显示logo设置 always-show-logo no注意事项
性能影响always-show-logo参数对Redis的性能没有直接影响。它仅仅控制Redis在启动时是否显示一个ASCII艺术风格的logo。可读性对于人类用户来说logo可以增强可读性和辨识度让他们更容易地识别Redis的启动过程。但对于机器和脚本来说logo可能是不必要的。兼容性不同版本的Redis可能对always-show-logo参数的支持有所不同。因此在修改配置文件之前最好查阅你所使用的Redis版本的官方文档或帮助信息。
总结
always-show-logo是Redis配置文件中用于控制Redis在启动时是否显示其ASCII艺术风格logo的参数。通过将该参数设置为yes或no你可以强制Redis在启动时总是显示或从不显示logo。这个参数对Redis的性能没有直接影响但可以增强可读性或满足特定的需求。在修改配置文件之前请确保查阅你所使用的Redis版本的官方文档或帮助信息以获取最新的信息。
databases
[rootserver ~]# cat /etc/redis.conf | grep databases
databases 16在Redis的配置文件中databases参数用于设置Redis实例中数据库的数量。以下是关于databases参数的详细解释
定义与功能
定义databases 是 Redis 配置文件中用于指定实例中数据库数量的配置项。功能定义了在单个 Redis 实例中可以有多少个逻辑上独立的数据库。
配置细节
默认值通常Redis 的 databases 参数的默认值为 16表示实例中有 16 个独立的数据库。配置方式在 Redis 的配置文件通常是 redis.conf中你可以找到 databases 这一行并设置其值为你想要的数量。例如如果你想要 32 个数据库你可以这样设置
databases 32注意事项
数据库编号这些数据库是通过数字索引来访问的从 0 开始直到 databases 参数所指定的数量减 1。共享内存虽然这些数据库在逻辑上是独立的但它们实际上共享同一个物理内存空间。这意味着例如一个数据库使用的内存量增加可能会影响到其他数据库可用的内存量。性能影响虽然拥有多个数据库可以方便地将不同类型的数据分开存储但这并不总是带来性能上的优势。在某些情况下将不同的数据集存储在单独的 Redis 实例中可能会更有效率。使用场景在某些场景中使用多个数据库可能是有用的例如当你想要将不同的应用程序或服务的数据分开存储时。但在许多其他场景中使用单个数据库并通过键的命名空间例如使用前缀来区分不同的数据集可能更为简单和高效。
总结
databases 参数在 Redis 配置文件中用于设置实例中数据库的数量。通过调整这个参数你可以控制 Redis 实例中可用的逻辑数据库的数量。然而需要注意的是这些数据库共享同一个物理内存空间并且拥有多个数据库并不总是带来性能上的优势。在设计和部署 Redis 系统时应根据具体的需求和场景来选择合适的配置。
security安全类
通过redis命令行设置密码
[rootserver ~]# redis-cli
127.0.0.1:6379 ping
PONG
127.0.0.1:6379 config get requirepass
1) requirepass
2) #密码为空
127.0.0.1:6379 config set requirepass 123456 #设置密码为123456
OK
127.0.0.1:6379 config get requirepass #查看密码
1) requirepass
2) 123456 #密码为123456
127.0.0.1:6379 exit
[rootserver ~]# redis-cli
127.0.0.1:6379 ping #没有进行密码认证不允许任何操作
(error) NOAUTH Authentication required.
127.0.0.1:6379 config get requirepass #没有进行密码认证不允许任何操作
(error) NOAUTH Authentication required.
127.0.0.1:6379 auth 123456 #进行密码认证
OK #认证成功
127.0.0.1:6379 ping #认证成功后可以进行操作
PONG
127.0.0.1:6379 config get requirepass
1) requirepass
2) 123456
127.0.0.1:6379 exit
[rootserver ~]# systemctl restart redis #重启redis服务
[rootserver ~]# redis-cli
127.0.0.1:6379 ping #发现重启后之前设置的密码失效
PONG
127.0.0.1:6379 config get requirepass
1) requirepass
2) 在命令中设置密码只是临时的。重启redis服务器密码就还原了。
通过配置文件requirepass设置密码
在 Redis 的配置文件中requirepass 指令用于设置 Redis 服务器的密码以要求客户端在尝试进行身份验证之前提供密码。这增强了 Redis 服务器的安全性因为它可以防止未授权的访问。
配置细节
位置requirepass 通常位于 Redis 配置文件通常是 redis.conf中。设置密码要设置密码只需在 requirepass 后面添加密码即可。例如要设置密码为 mysecret你可以这样做
requirepass mysecret重启 Redis更改配置文件后你需要重启 Redis 服务器以使更改生效。安全性确保密码是强密码并妥善保管。不要在代码中或任何公共位置硬编码密码。
使用密码进行身份验证
当 Redis 服务器设置了密码后客户端需要使用 auth 命令进行身份验证。这通常在客户端连接后立即进行。
例如使用 redis-cli 客户端连接到设置了密码的 Redis 服务器时你需要这样做
[rootserver ~]# redis-cli -a mysecret或者在连接后使用 AUTH 命令
[rootserver ~]# redis-cli
127.0.0.1:6379 AUTH mysecret
OK注意事项
密码的复杂性确保你的密码是复杂的并且不容易被猜测。使用长密码、大小写字母、数字和特殊字符的组合。防火墙和安全组除了设置密码外还应考虑使用防火墙和安全组来限制对 Redis 服务器的访问。只允许必要的 IP 地址或范围访问 Redis 端口默认为 6379。使用 Redis Sentinel 或 Redis Cluster对于高可用性和安全性考虑使用 Redis Sentinel 或 Redis Cluster 来管理你的 Redis 实例。这些工具提供了额外的安全性和故障恢复功能。避免在生产环境中使用默认端口默认情况下Redis 使用 6379 端口。在生产环境中考虑更改此端口以增加安全性。定期更新密码定期更改 Redis 密码以减少密码泄露的风险。
示例
[rootserver ~]# vim /etc/redis.conf
requirepass 123456 #在配置文件中设置密码为123456[rootserver ~]# systemctl restart redis #重启redis服务
[rootserver ~]# redis-cli
127.0.0.1:6379 ping
(error) NOAUTH Authentication required.
127.0.0.1:6379 auth 123456 #需要进行密码认证
OK
127.0.0.1:6379 ping
PONG
127.0.0.1:6379 exit
[rootserver ~]# systemctl restart redis #重启redis服务
[rootserver ~]# redis-cli
127.0.0.1:6379 ping #没有进行密码认证
(error) NOAUTH Authentication required.
127.0.0.1:6379 config get requirepass
(error) NOAUTH Authentication required.
127.0.0.1:6379 auth 123456 #进行密码认证
OK
127.0.0.1:6379 config get requirepass #查看密码
1) requirepass
2) 123456 #密码
127.0.0.1:6379 通过配置文件实现永久设置
clients限制类
maxclients
[rootserver ~]# cat /etc/redis.conf | grep maxclients
# maxclients 10000设置最大客户端连接数量maxclients默认关闭状态可以设置客户端的最大连接数超过这个数值的第n1个用户开始就连接不了服务端。如果达到了此限制redis则会拒绝新的连接请求并且向这些连接请求方发出“max number of clients reached”以作回应。
maxmemory
[rootserver ~]# cat /etc/redis.conf | grep maxmemory
# maxmemory bytes设置redis可以使用的内存量。一旦到达内存使用上限redis将会试图移除内部数据移除规则可以通过maxmemory-policy来指定。maxmemory默认没有设置项目上一定要设置最大限制内存不然会存在数据丢失情况。如果redis无法根据移除规则来移除内存中的数据或者设置了“不允许移除”那么redis则会针对那些需要申请内存的指令返回错误信息比如SET、LPUSH等。但是对于无内存申请的指令仍然会正常响应比如GET等。如果你的redis是主redis说明你的redis有从redis那么在设置内存使用上限时需要在系统中留出一些内存空间给同步队列缓存只有在你设置的是“不移除”的情况下才不用考虑这个因素。
在 Redis 的配置文件中通常是 redis.confmaxmemory 指令用于设置 Redis 实例可以使用的最大内存量以字节为单位。一旦Redis 使用的内存达到这个限制Redis 就会根据配置的淘汰策略eviction policy来删除一些键以便为新的数据腾出空间。
示例配置
# 设置最大内存限制为 4GB
maxmemory 4gb你也可以使用其他单位如 k千字节、m兆字节和 g吉字节。
注意事项 合理设置你需要根据你的服务器总内存和 Redis 实例的用途来合理设置 maxmemory。设置得太小可能会导致 Redis 过早地开始淘汰键而设置得太大则可能耗尽系统资源。 淘汰策略当 Redis 达到 maxmemory 限制时它会根据配置的淘汰策略来删除一些键。你可以使用 maxmemory-policy 指令来设置淘汰策略。可用的策略包括 volatile-lru当内存不足以容纳新写入数据时在键空间中选择最近最少使用的LRU数据淘汰。只针对设置了过期时间的键。allkeys-lru当内存不足以容纳新写入数据时在键空间中选择最近最少使用的LRU数据淘汰。volatile-lfu当内存不足以容纳新写入数据时在键空间中选择最不经常使用的LFU数据淘汰。只针对设置了过期时间的键。allkeys-lfu当内存不足以容纳新写入数据时在键空间中选择最不经常使用的LFU数据淘汰。volatile-random当内存不足以容纳新写入数据时在设置了过期时间的键空间中随机选择键淘汰。allkeys-random当内存不足以容纳新写入数据时在键空间中随机选择键淘汰。volatile-ttl当内存不足以容纳新写入数据时在设置了过期时间的键空间中选择剩余时间TTL最短的键淘汰。noeviction当内存不足以容纳新写入数据时新写入操作会报错。 你可以通过配置 maxmemory-policy 来选择最适合你应用需求的淘汰策略。 内存碎片即使 Redis 使用的内存没有达到 maxmemory 限制它也可能因为内存碎片而无法为新数据分配空间。内存碎片是由于 Redis 的内存分配和释放策略造成的。你可以使用 info memory 命令来查看 Redis 的内存使用情况包括内存碎片率。 持久化如果你的 Redis 实例配置了持久化如 RDB 或 AOF请注意这些持久化文件也会占用磁盘空间。你需要确保你的服务器有足够的磁盘空间来存储这些文件。 监控和告警定期监控 Redis 的内存使用情况并设置告警以便在 Redis 接近或达到 maxmemory 限制时及时采取行动。
maxmemory-policy
[rootserver ~]# cat /etc/redis.conf | grep maxmemory-policy
# maxmemory-policy noeviction在Redis的配置文件中maxmemory-policy用于配置当Redis实例使用的内存达到maxmemory限制时系统应采取何种策略来释放内存空间。以下是关于maxmemory-policy的详细解释
作用
maxmemory-policy定义了当Redis使用的内存达到maxmemory限制时如何选择要淘汰的键key以释放内存。
可选策略
volatile-lru从设置了过期时间的键中选择最近最少使用的Least Recently Used, LRU键进行淘汰。volatile-lfu从设置了过期时间的键中选择最近最不经常使用的Least Frequently Used, LFU键进行淘汰。volatile-ttl从设置了过期时间的键中选择剩余时间TTL最短的键进行淘汰。volatile-random从设置了过期时间的键中随机选择键进行淘汰。allkeys-lru从所有键中选择最近最少使用的键进行淘汰不考虑键是否设置了过期时间。allkeys-lfu从所有键中选择最近最不经常使用的键进行淘汰不考虑键是否设置了过期时间。allkeys-random从所有键中随机选择键进行淘汰。noeviction当内存达到maxmemory限制时不进行任何淘汰操作新的写入操作将返回错误。
配置示例
在redis.conf配置文件中可以这样设置maxmemory-policy
maxmemory-policy volatile-lru注意事项
策略选择选择哪种策略取决于你的应用需求。例如如果你的应用对数据的新鲜度要求很高那么LRU策略可能是一个好选择。如果你的应用希望保留那些被频繁访问的数据那么LFU策略可能更适合。性能影响虽然LRU和LFU策略在大多数情况下都能提供良好的性能但在极端情况下如大量键在短时间内被访问它们可能需要消耗额外的CPU资源来维护数据的访问统计信息。持久化如果你的Redis实例配置了持久化如RDB或AOF请确保在修改maxmemory-policy后重新评估持久化策略以确保在内存不足时能够正确地保存数据。监控和告警定期监控Redis的内存使用情况并设置告警以便在Redis接近或达到maxmemory限制时及时采取行动。你可以使用Redis的info memory命令来获取内存使用的详细信息。
maxmemory-samples
[rootserver ~]# cat /etc/redis.conf | grep maxmemory-samples
# maxmemory-samples 5在 Redis 配置文件中maxmemory-samples 是一个与内存淘汰策略由 maxmemory-policy 控制相关的配置项特别是与那些使用随机性或近似算法的淘汰策略如 volatile-random、allkeys-random、volatile-lfu 和 allkeys-lfu有关。
作用
maxmemory-samples 定义了 Redis 在执行淘汰策略时为了估算键的使用情况而应检查的样本数量。对于 LFULeast Frequently Used最近最不常使用策略这个值用于计算键的访问频率。
配置示例
在 redis.conf 配置文件中可以这样设置 maxmemory-samples
maxmemory-samples 5细节说明
样本数量maxmemory-samples 的值越大Redis 估计键的使用情况的准确性就越高但同时也会增加 CPU 消耗和内存淘汰的延迟。默认情况下Redis 通常使用 5 个样本但在高流量环境下你可能需要增加这个值以获得更准确的估算。对性能的影响当 Redis 需要执行淘汰策略时它会从数据集中随机选择 maxmemory-samples 数量的键作为样本并根据这些样本的使用情况来估算整个数据集的使用情况。因此maxmemory-samples 的值越大Redis 执行淘汰策略时所需的 CPU 时间和内存访问量就越多。与其他配置项的关系maxmemory-samples 与 maxmemory-policy 紧密相关。只有当 maxmemory-policy 设置为需要样本估算的策略如 LFU时maxmemory-samples 的值才会影响 Redis 的行为。
总结
maxmemory-samples 是 Redis 中用于配置淘汰策略样本数量的配置项。在大多数情况下使用默认值如 5可能就足够了但在高流量或需要更精确估算的场景下你可能需要增加这个值。调整这个值时请确保考虑到对 Redis 性能的影响。