安装Redis
1. 下载
2. 上传虚拟机
- 上传用到xshell、xftp => 下载
unzip /home/zip/redis-6.2.5.zip -d /home/path/redis
#解压redis到指定目录yum -y install unzip
#安装unzip解压命令
3.安装Redis
- Redis是C语言编写的,需要C语言的环境
yum -y install gcc-c++
- 进入解压目录编译Redis
cd /home/path/redis/redis-6.2.5/
chmod -R 775 /home/path/redis/redis-6.2.5/
#编译之前保证文件都是可执行的权限make
#make命令编译cd /home/path/redis/redis-6.2.5/src
#编译完成准备安装make install
4. 配置Redis
-
中文配置文件查看附录
-
配置密码 => 需要可配置
-
vi /home/path/redis/redis-6.2.5/redis.conf
-
requirepass
#配置Redis密码
-
port
#端口 -
protected-mode
#保护模式
-
bind
#指定Redis的 IP
-
pidfile
#查看pid的位置,默认在/var/run/redis_6379.pid
-
daemonize
#守护进程
5. 开机启动脚本
vi /etc/init.d/redis
#创建并编辑一个脚本,这个路径下通常放置一些脚本
#!/bin/sh
# chkconfig: 345 99 10
IP=111.111.111.111 #自定义的ip
REDISPORT=6379
PASSWORD=SFS@redis2021 #如果设置了密码
EXEC=/home/path/redis/redis-6.2.5/src/redis-server #redis服务端的命令,安装在src下,网上喜欢移动到指定的位置
CLIEXEC=/home/path/redis/redis-6.2.5/src/redis-cli #redis客户端的命令
PIDFILE=/var/run/redis_6379.pid #reids的进程文件生成的位置,默认位置
CONF="/home/path/redis/redis-6.2.5/redis.conf" #redis的配置文件所在的位置
start()
{
if [ -f $PIDFILE ]
then
echo "$PIDFILE 存在, 进程已在运行或崩溃"
else
echo "开启redis服务..."
#指定配置文件启动,所以redis.conf可以在任何位置 => nohup:关闭终端服务不关闭,&后台执行
nohup $EXEC $CONF &
echo "Redis已开启"
fi
}
stop()
{
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE 不存在, 进程没有启动"
else
PID=$(cat $PIDFILE)
echo "关闭中 ..."
#没有设置密码就$CLIEXEC shutdown
$CLIEXEC -h $IP -p $REDISPORT -a $PASSWORD shutdown
while [ -x /proc/${PID} ]
do
echo "等待Redis关闭 ..."
sleep 1
done
echo "Redis已关闭"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
echo "Redis已关闭"
start
echo "Redis已开启"
;;
*)
echo "请使用start、stop、restart作为第一个参数"
stop
echo "Redis已关闭"
start
echo "Redis已开启"
;;
esac
exit 0
chmod 775 redis
#赋予执行权限chkconfig --add redis
#添加脚本到配置执行 => 可以使用service redis xx
启动脚本chkconfig redis on
#配置开机执行init 6
#重启ps -ef|grep redis
#查看启动状态
- 可以使用
service redis xx
开启关闭重启Redis service redis start/stop/restart
- 添加指定需要开放的端口:
firewall-cmd --add-port=6379/tcp --permanent
- 重载入添加的端口:
firewall-cmd --reload
- 可以在外部连接Redis了
附录
Redis中文配置文件
#Redis配置文件示例
#单位注释:当需要内存大小时,可以指定
#它通常采用1k 5GB 4M等形式:
#
#1k=>1000字节
#1kb=>1024字节
#1m=>1000000字节
#1mb=>1024*1024字节
#1g=>100000000字节
#1gb=>1024*1024*1024字节
#
#单元不区分大小写,因此1GB 1GB都是相同的。
##################################包括###################################
#在此处包括一个或多个其他配置文件。这是有用的,如果你
#拥有适用于所有Redis服务器的标准模板,但也需要
#自定义每个服务器的一些设置。包含文件可以包括
#其他文件,所以请明智地使用它。
#
#注意,命令“CONFIG REWRITE”不会重写选项“include”
#来自管理员或Redis Sentinel。因为Redis总是使用最后处理的
#行作为配置指令的值,最好将includes
#在该文件的开头,以避免在运行时覆盖配置更改。
#
#如果您有兴趣使用includes覆盖配置
#选项,最好使用include作为最后一行。
#
# include .\path\to\local.conf
# include c:\path\to\other.conf
################################一般的#####################################
#在Windows上,不支持daemonize和pidfile。
#但是,您可以将redis作为Windows服务运行,并指定日志文件。
#日志文件将包含pid。
#接受指定端口上的连接,默认值为6379。
#如果指定端口0,Redis将不会侦听TCP套接字。
port 6379
#TCP listen()积压工作。
#
#在每秒高请求的环境中,您需要高积压工作才能正常工作
#避免客户端连接速度慢的问题。请注意,Linux内核
#将静默地将其截断为/proc/sys/net/core/somaxconn so的值
#确保提高somaxconn和tcp_max_syn_backlog的值
#为了达到预期的效果。
tcp-backlog 511
#默认情况下,Redis侦听来自所有网络接口的连接
#在服务器上可用。可以只听一个或多个
#使用“bind”配置指令的接口,后跟一个或多个
#更多的IP地址。
#
#示例:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
#指定将用于侦听的Unix套接字的路径
#传入连接。没有默认设置,因此Redis不会监听
#未指定时,在unix套接字上。
#
#unixsocket/tmp/redis.sock
#unixsocketperm 700
#客户端空闲N秒后关闭连接(0表示禁用)
timeout 0
#保持活力。
#
#如果非零,则使用SO_KEEPALIVE在缺席时向客户端发送TCP确认
#沟通能力。这很有用,原因有二:
#
#1)检测死掉的对等点。
#2)从网络的角度来看待连接设备在中间。
#
#在Linux上,指定的值(以秒为单位)是用于发送ACK的时间段。
#请注意,要关闭连接,需要两倍的时间。
#在其他内核上,周期取决于内核配置。
#
#此选项的合理值为60秒。
tcp-keepalive 0
#指定服务器详细级别。
#这可以是以下情况之一:
#调试(大量信息,对开发/测试有用)
#冗长(许多信息很少有用,但不像调试级别那样混乱)
#注意(适度冗长,您可能希望在生产中得到什么)
#警告(仅记录非常重要/关键的消息)
loglevel notice
#指定日志文件名。也可以使用“stdout”强制
#Redis登录标准输出。
logfile ""
#要启用Windows事件日志记录,只需将“syslog enabled”设置为
#可以,并且可以选择更新其他系统日志参数以满足您的需要。
#如果Redis作为Windows服务安装和启动,这将
#将自动启用。
#系统日志启用号
#在Windows应用程序日志中指定事件的源名称。
#syslog ident redis
#设置数据库的数量。默认数据库为DB 0,您可以选择
#使用SELECT<dbid>where在每个连接上创建一个不同的连接
#dbid是介于0和“数据库”-1之间的数字
databases 16
################################快照################################
#
#将数据库保存在磁盘上:
#
# save <seconds> <changes>
#
#如果给定的秒数和给定的
#对数据库执行的写入操作数。
#
#在下面的示例中,行为将是保存:
#900秒(15分钟)后,如果至少有一把钥匙更换
#300秒(5分钟)后,如果至少更改了10个键
#60秒后,如果至少10000个密钥发生更改
#
#注意:您可以通过注释掉所有“保存”行来完全禁用保存。
#
#还可以删除以前配置的所有保存
#通过添加带有一个空字符串参数的save指令进行点操作
#如以下示例所示:
#
#保存“”
save 900 1
save 300 10
save 60 10000
#默认情况下,如果启用RDB快照,Redis将停止接受写操作
#(至少一个保存点)和最新的后台保存失败。
#这将使用户意识到(以一种困难的方式)数据没有持久化
#正确地存储在磁盘上,否则很可能没有人会注意到
#灾难将会发生。
#
#如果后台保存过程将再次开始工作,Redis将
#自动允许再次写入。
#
#但是,如果您已经设置了对Redis服务器的正确监视
#和持久性,您可能希望禁用此功能,以便Redis
#即使磁盘出现问题,也要继续正常工作,
#权限,等等。
stop-writes-on-bgsave-error yes
#转储.rdb数据库时使用LZF压缩字符串对象?
#默认设置为“是”,因为这几乎总是一场胜利。
#如果要在保存子项中保存一些CPU,请将其设置为“否”,但
#如果有可压缩的值或键,则数据集可能会更大。
rdbcompression yes
#由于RDB版本5,CRC64校验和被放置在文件的末尾。
#这使格式更能抵抗损坏,但存在性能问题
#在保存和加载RDB文件时点击付费(约10%),因此您可以禁用它
#以获得最佳性能。
#
#禁用校验和创建的RDB文件的校验和为零,这将
#告诉加载代码跳过检查。
rdbchecksum yes
#转储数据库的文件名
dbfilename dump.rdb
#工作目录。
#
#DB将写入此目录中,并指定文件名
#上面使用“dbfilename”配置指令。
#
#仅附加文件也将在此目录中创建。
#
#请注意,您必须在此处指定目录,而不是文件名。
dir ./
#################################复制#################################
#主从复制。使用slaveof使Redis实例成为的副本
#另一台Redis服务器。关于Redis复制,需要尽快了解的一些事情。
#
#1)Redis复制是异步的,但您可以将主机配置为
#如果它似乎未与至少一个连接,则停止接受写入
#一定数量的奴隶。
#2)Redis从机能够与执行部分重新同步
#如果复制链接丢失的时间相对较短,则为master
#时间。您可能需要配置复制待办事项大小(请参阅下一页)
#根据您的需要,使用合理的值。
#3)复制是自动的,不需要用户干预。过了一会儿
#网络分区从属服务器自动尝试重新连接到主服务器
#并与它们重新同步。
#
# slaveof <masterip> <masterport>
#如果主机受密码保护(使用“requirepass”配置
#下面的指令)可以在
#启动复制同步过程,否则主机将
#拒绝从属请求。
#
# masterauth <master-password>
#当从属服务器与主服务器失去连接时,或者当复制服务器
#如果仍在进行中,则从机可以以两种不同的方式进行操作:
#
#1)如果从服务器过时数据设置为“是”(默认值),则从服务器将
#仍然回复客户端请求,可能带有过期数据,或者
#如果这是第一次同步,则数据集可能为空。
#
#2)如果从服务器过时数据设置为“否”,则从服务器将以
#所有类型的命令都出现“正在与主机同步”错误
#但是为了信息和奴隶。
#
slave-serve-stale-data yes
#您可以将从属实例配置为接受或不接受写入。反对
#从实例可能有助于存储一些临时数据(因为
#在与主设备重新同步后,写在从设备上的数据将很容易被删除),但是
#如果客户端因为错误而向其写入,也可能导致问题
#配置错误。
#
#因为Redis2.6默认情况下从机是只读的。
#
#注意:只读从机的设计不允许暴露于不受信任的客户端
#在互联网上。它只是一个防止实例误用的保护层。
#默认情况下,只读从机仍会导出所有管理命令
#例如配置、调试等。在一定程度上你可以提高
#使用“重命名命令”隐藏所有只读从机的安全性
#行政/危险命令。
slave-read-only yes
#复制同步策略:磁盘或套接字。
#
# -------------------------------------------------------
#警告:无盘复制目前处于试验阶段
# -------------------------------------------------------
#
#无法继续复制的新从属设备和重新连接从属设备
#过程只是接收差异,需要做的就是所谓的“充分的”
#同步”。RDB文件从主设备传输到从设备。
#传输可以通过两种不同的方式进行:
#
#1)磁盘备份:Redis主机创建一个写入RDB的新进程
#磁盘上的文件。稍后,该文件将由父级传输
#进程以增量方式添加到从属进程。
#2)无盘:Redis主机创建一个新进程,直接写入
#RDB文件到从属套接字,完全不接触磁盘。
#
#使用磁盘备份的复制,在生成RDB文件时,会有更多的从属服务器
#可以在当前子文件生成后立即排队并与RDB文件一起提供
#RDB文件完成了它的工作。用无盘复制代替一次
#传输开始,到达的新从属设备将排队,并进行新的传输
#将在当前进程终止时启动。
#
#使用无盘复制时,主机将等待可配置数量的复制
#开始传输前的时间(秒),希望多个从机
#将到达,并且可以并行传输。
#
#使用慢速磁盘和快速(大带宽)网络,无盘复制
#效果更好。
repl-diskless-sync no
#启用无盘复制时,可以配置延迟
#服务器等待生成通过套接字传输RDB的子级
#给奴隶们。
#
#这一点很重要,因为一旦转移开始,就不可能发球
#新的从机到达,将排队等待下一次RDB传输,因此服务器
#等待一个延迟,以便让更多的从属设备到达。
#
#延迟以秒为单位指定,默认为5秒。禁用
#它完全只是将其设置为0秒,传输将尽快开始。
repl-diskless-sync-delay 5
#从属服务器以预定义的间隔向服务器发送ping。改变是可能的
#此间隔使用repl\u ping\u slave\u period选项。默认值为10
#秒。
#
# repl-ping-slave-period 10
#以下选项设置的复制超时:
#
#1)从从机的角度来看,同步期间的大容量传输I/O。
#2)从从属设备(数据、ping)的角度来看,主设备超时。
#3)从主机的角度来看,从机超时(REPLCONF-ACK pings)。
#
#务必确保该值大于该值
#为repl ping从属周期指定,否则将检测到超时
#每次主服务器和从服务器之间的通信量都很低。
#
# repl-timeout 60
#同步后在从属套接字上禁用TCP_节点延迟?
#
#如果选择“是”,Redis将使用较少数量的TCP数据包和
#将数据发送到从属服务器的带宽更少。但这可能会增加一个延迟
#显示在从机端的数据,最长为40毫秒
#Linux内核使用默认配置。
#
#如果选择“否”,则从机侧显示数据的延迟将消失
#将减少带宽,但将使用更多带宽进行复制。
#
#默认情况下,我们针对低延迟进行优化,但在流量非常大的情况下
#或者,当主人和奴隶离我们很远的时候,把这个变成“是”可能
#这是个好主意。
repl-disable-tcp-nodelay no
#设置复制待办事项大小。积压工作是一个累积的缓冲区
#从机数据当从机断开连接一段时间后
#想要重新连接,通常不需要完全重新同步,而是部分重新同步
#resync就足够了,只需传递从机丢失的部分数据
#断开连接。
#
#复制待办事项越大,从机的可用时间越长
#已断开连接,以后可以执行部分重新同步。
#
#只有在至少连接了一个从机之后,才会分配积压工作。
#
# repl-backlog-size 1mb
#在一段时间内,主设备不再连接从属设备后,积压的工作将停止
#将被释放。以下选项配置所需的秒数
#需要从最后一个从机断开的时间开始经过,例如
#要释放的待办事项缓冲区。
#
#值为0表示从不释放积压工作。
#
# repl-backlog-ttl 3600
#从属优先级是Redis在信息输出中发布的整数。
#Redis Sentinel使用它来选择一个从服务器升级到一个服务器
#如果主机不再正常工作,则为主机。
#
#优先级较低的从机被认为更适合升级,因此
#例如,如果有三个优先权为10100的奴隶,那么25个哨兵将
#选择优先级为10的,这是最低的。
#
#但是,0的特殊优先级将从机标记为无法执行
#主服务器的角色,因此用户永远不会选择优先级为0的从服务器
#Redis Sentinel用于促销。
#
#默认情况下,优先级为100。
slave-priority 100
#如果写入少于,则主机可以停止接受写入
#N个连接的从机,滞后小于或等于M秒。
#
#N个从机需要处于“联机”状态。
#
#滞后(以秒为单位)必须小于等于指定值,其计算公式如下:
#从从属服务器接收的最后一次ping,通常每秒发送一次。
#
#此选项不保证N个副本将接受写入,但
#如果没有足够的从属设备,将限制丢失写入的曝光窗口
#在指定的秒数内可用。
#
#例如,要要求至少3个滞后时间小于等于10秒的从属设备,请使用:
#
# min-slaves-to-write 3
# min-slaves-max-lag 10
#
#将一个或另一个设置为0将禁用该功能。
#
#默认情况下,要写入的最小从属对象设置为0(功能已禁用),并且
#最小从属最大滞后设置为10。
##################################保安###################################
#要求客户端在处理任何其他文件之前发出身份验证<PASSWORD>
#命令。这在您不信任的环境中可能很有用
#其他人可以访问运行redis server的主机。
#
#为了向后兼容,这应该保留注释,因为大多数
#人们不需要身份验证(例如,他们运行自己的服务器)。
#
#警告:由于Redis速度非常快,外部用户最多可以尝试
#针对一个好的框,每秒有150k个密码。这意味着你应该
#使用非常强的密码,否则很容易被破解。
#
# requirepass foobared
#命令重命名。
#
#可以在共享模式中更改危险命令的名称
#环境。例如,CONFIG命令可能被重命名为
#很难猜测,因此它仍然可以用于内部工具
#但不适用于一般客户。
#
#例如:
#
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#
#也可以通过将命令重命名为空字符串:
#
# rename-command CONFIG ""
#
#请注意,更改登录到
#AOF文件或传输到从属服务器可能会导致问题。
###################################极限####################################
#设置同时连接的客户端的最大数量。默认情况下
#此限制设置为10000个客户端,但是如果Redis服务器不可用
#能够配置进程文件限制以允许指定的限制
#允许的最大客户端数设置为当前文件限制
#减32(因为Redis为内部使用保留了一些文件描述符)。
#
#一旦达到限制,Redis将关闭所有新连接
#“已达到最大客户端数”错误。
#
# maxclients 10000
#如果将Redis用作仅内存缓存,而不使用任何类型的
#持久化,然后是后台AOF/RDB使用的fork()机制
#坚持是不必要的。作为一种优化,所有持久性都可以
#在Windows版本的Redis中关闭。这将重定向堆
#分配给系统堆分配器,并禁用
#否则会导致fork()操作:BGSAVE和BGREWRITEAOF。
#此标志不能与配置的任何其他标志组合
#AOF和RDB操作。
# persistence-available [(yes)|no]
#不要使用超过指定字节数的内存。
#当达到内存限制时,Redis将尝试删除密钥
#根据选择的逐出策略(请参阅maxmemory策略)。
#
#如果Redis无法根据策略删除密钥,或者如果策略为
#设置为“noeviction”,Redis将开始回复命令错误
#这将使用更多内存,如SET、LPUSH等,并将继续
#回复GET之类的只读命令。
#
#当使用Redis作为LRU缓存或设置
#实例的硬内存限制(使用“noeviction”策略)。
#
#警告:如果将从属服务器连接到maxmemory打开的实例,
#减去馈送从属设备所需的输出缓冲区的大小
#从已用内存计数中删除,以便网络问题/重新同步
#不触发一个循环,其中键被逐出,并依次输出
#从机缓冲区已满,退出的密钥的增量触发删除
#等等,直到数据库完全清空。
#
#简言之。。。如果已连接从属服务器,建议您设置较低的
#限制maxmemory,以便系统上有一些可用RAM供从机使用
#输出缓冲区(但如果策略为“noeviction”,则不需要此缓冲区)。
#
#警告:未设置maxmemory将导致Redis以
#如果达到堆限制,内存不足异常。
#
#注意:由于Redis使用系统分页文件来分配堆内存,
#Windows任务管理器或其他工具显示的工作集内存使用情况
#ProcessExplorer之类的工具并不总是准确的。比如说,对
#在后台保存RDB或AOF文件后,工作集值
#可能会大幅下降。以检查所使用的内存量是否正确
#由redis服务器存储数据时,请使用INFO client命令。信息
#命令仅显示用于存储redis数据的内存,而不显示额外的内存
#Windows进程为其自身需求而使用的内存。额外金额
#通过减去
#Windows任务管理器报告的峰值工作集和使用的\u内存\u峰值
#由INFO命令报告。
#
# maxmemory <bytes>
#MAXMEMORY策略:当使用MAXMEMORY时,Redis将如何选择要删除的内容
#到达。您可以从五种行为中进行选择:
#
#volatile lru->使用lru算法删除带有过期集的密钥
#allkeys lru->根据lru算法删除任何密钥
#volatile random->删除带有过期集的随机密钥
#allkeys random->删除随机键,任意键
#volatile ttl->删除过期时间最近的密钥(次要ttl)
#noeviction->根本不过期,只需在写操作中返回一个错误即可
#
#注意:对于上述任何策略,Redis都会在写入时返回错误
#操作,当没有合适的键进行逐出时。
#
#在编写之日,这些命令是:set setnx setex append
#增量说明rpush lpushx lpushx linsert lset RPOPLPPUSH sadd
#烧结店sunion sunionstore sdiff sdiffstore zadd zincrby
#zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
#getset mset msetnx执行排序
#
#默认值为:
#
# maxmemory-policy noeviction
#LRU和最小TTL算法不是精确算法,而是近似算法
#算法(为了节省内存),所以您也可以选择示例
#要检查的尺寸。例如,默认Redis将检查三个键和
#选择最近较少使用的样本,您可以更改样本大小
#使用以下配置指令。
#
# maxmemory-samples 3
##############################仅附加模式###############################
#默认情况下,Redis将数据集异步转储到磁盘上。这种模式是
#在许多应用程序中已经足够好了,但Redis进程或
#断电可能导致几分钟的写操作丢失(取决于具体情况)
#配置的存储点)。
#
#仅追加文件是一种提供
#耐久性更好。例如,使用默认数据fsync策略
#(请参阅配置文件的后面部分)Redis在一个数据库中只会丢失一秒钟的写操作
#戏剧性的事件,如服务器断电,或在发生故障时进行一次写入
#Redis进程本身出现错误,但操作系统是错误的
#仍然正常运行。
#
#AOF和RDB持久性可以同时启用而不会出现问题。
#如果启动时启用了AOF,Redis将加载AOF,即文件
#具有更好的耐久性保证。
#
#请查收http://redis.io/topics/persistence 了解更多信息。
appendonly no
#仅追加文件的名称(默认值:“appendonly.aof”)
appendfilename "appendonly.aof"
#fsync()调用告诉操作系统在磁盘上实际写入数据
#而不是在输出缓冲区中等待更多数据。一些操作系统将真正刷新
#磁盘上的数据,其他一些操作系统将尽快尝试这样做。
#
#Redis支持三种不同的模式:
#
#否:不要fsync,只要让操作系统在需要时刷新数据即可。更快。
#每次写入仅附加日志后始终:fsync。慢,最安全。
#everysec:fsync每秒仅一次。妥协。
#
#默认值为“everysec”,因为这通常是两者之间的正确折衷
#速度和数据安全。这取决于你能否理解,如果你能放松下来
#“否”,这将允许操作系统在
#它想要更好的表现(但如果你能接受
#某些数据丢失考虑默认的持久模式(SNAP),
#或者相反,使用“总是”,这非常慢,但比
#埃弗里塞克。
#
#更多详细信息请查看以下文章:
# http://antirez.com/post/redis-persistence-demystified.html
#
#如果不确定,请使用“everysec”。
# appendfsync always
appendfsync everysec
# appendfsync no
#当AOF fsync策略设置为always或everysec时,背景
#保存过程(后台保存或AOF日志后台重写)为
#在某些Linux配置中,对磁盘执行大量I/O
#Redis可能会在fsync()调用上阻塞太长时间。请注意,没有修复
#目前,这是因为即使在不同的线程中执行fsync也会阻塞
#我们的同步写入(2)调用。
#
#为了缓解此问题,可以使用以下选项
#这将防止在主进程中调用fsync(),而
#正在进行BGSAVE或BGAOF重写。
#
#这意味着,当另一个孩子在存钱时,Redis的耐用性会降低
#与“appendfsync none”相同。实际上,这意味着
#在最坏的情况下,可能会丢失长达30秒的日志(使用
#默认Linux设置)。
#
#如果您有延迟问题,请将此设置为“是”。否则,请将其保留为
#从耐久性的角度来看,“不”是最安全的选择。
no-appendfsync-on-rewrite no
#自动重写仅附加的文件。
#Redis能够自动重写隐式调用的日志文件
#当AOF日志大小按指定的百分比增长时,重写AOF。
#
#这就是它的工作原理:Redis会记住
#最近一次重写(如果重新启动后未发生重写,则
#使用启动时的AOF)。
#
#将此基本大小与当前大小进行比较。如果当前大小为
#大于指定百分比时,将触发重写。阿尔索
#您需要为要重写的AOF文件指定最小大小,如下所示:
#即使百分比增加,也可以避免重写AOF文件
#已经够到了,但还是很小。
#
#指定零的百分比以禁用自动AOF
#重写功能。
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
#在Redis过程中,可能会发现AOF文件在末尾被截断
#启动过程,当AOF数据加载回内存时。
#在运行Redis的系统中可能会发生这种情况
#崩溃,尤其是在安装ext4文件系统时没有
#数据=有序选项(但当Redis本身
#崩溃或中止,但操作系统仍能正常工作)。
#
#当这种情况发生时,Redis可以带着错误退出,也可以加载尽可能多的内容
#尽可能多地收集数据(现在是默认值),并在找到AOF文件时启动
#在末尾被截断。以下选项控制此行为。
#
#如果aof load truncated设置为yes,则加载并删除截断的aof文件
#Redis服务器开始发出日志,通知用户该事件。
#否则,如果该选项设置为“否”,则服务器将中止并出错
#拒绝开始。当选项设置为“否”时,用户需要
#在重新启动之前,使用“redis check AOF”实用程序修复AOF文件
#服务器。
#
#请注意,如果发现AOF文件在中间被损坏
#服务器仍将退出并出现错误。此选项仅适用于以下情况:
#Redis将尝试从AOF文件中读取更多数据,但字节不足
#将被发现。
aof-load-truncated yes
################################LUA脚本###############################
#Lua脚本的最大执行时间(毫秒)。
#
#如果达到最大执行时间,Redis将记录脚本正在运行
#在允许的最长时间后仍在执行中,并将开始
#回答带有错误的查询。
#
#当长时间运行的脚本超过最大执行时间时,只有
#脚本KILL和SHUTDOWN NOSAVE命令可用。第一种可能是
#用于停止尚未调用写入命令的脚本。第二
#是在执行写入命令时关闭服务器的唯一方法
#已由脚本发出,但用户不想等待
#脚本的终止。
#
#将其设置为0或负值,以便在没有警告的情况下无限执行。
lua-time-limit 5000
################################REDIS群集###############################
#
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#警告:不过,Redis Cluster被认为是稳定的代码
#为了将其标记为“成熟”,我们需要等待一个不小的百分比
#在生产中部署it的用户数量。
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
#普通Redis实例不能是Redis集群的一部分;仅限于
#以群集节点可以启动的方式启动。为了启动一个Redis实例作为
#群集节点启用群集支持取消注释以下内容:
#
# cluster-enabled yes
#每个群集节点都有一个群集配置文件。此文件不可用
#用于手工编辑的。它由Redis节点创建和更新。
#每个Redis群集节点都需要不同的群集配置文件。
#确保在同一系统中运行的实例没有
#重叠的群集配置文件名。
#
# cluster-config-file nodes-6379.conf
#Cluster node timeout是节点不可访问的毫秒数
#将其视为处于故障状态。
#大多数其他内部时间限制是节点超时的倍数。
#
# cluster-node-timeout 15000
#如果发生故障的主设备的从属设备的数据
#看起来太老了。
#
#对于一个奴隶来说,没有一个简单的方法可以真正精确地测量其生命
#其“数据时代”,因此执行以下两项检查:
#
#1)如果有多个从属设备能够进行故障切换,它们将交换消息
#为了给奴隶最好的利益
#复制偏移量(已处理来自主服务器的更多数据)。
#奴隶将尝试通过偏移量获得他们的等级,并应用到起始位置
#故障转移的延迟与其等级成比例。
#
#2)每个从机计算最后一次与服务器交互的时间
#它的主人。这可能是最后一次接收到的ping或命令(如果主机
#仍处于“已连接”状态),或自
#断开与主机的连接(如果复制链路当前已关闭)。
#如果最后一次交互太旧,从机将不会尝试故障切换
#一点也不。
#
#点“2”可由用户调整。具体来说,从机将不会执行
#如果自上次与主机交互后,时间
#已用时间大于:
#
# (node-timeout * slave-validity-factor) + repl-ping-slave-period
#
#例如,如果节点超时为30秒,那么从属有效性系数
#为10,并且假设默认的repl ping从属周期为10秒,则
#如果从属设备无法与主设备通信,则不会尝试故障切换
#超过310秒。
#
#较大的从属有效性系数可能会使数据太旧的从属设备无法进行故障切换
#主节点,而太小的值可能会阻止集群
#选一个奴隶。
#
#为了获得最大可用性,可以设置从属有效性系数
#设置为0,这意味着从属服务器将始终尝试故障切换
#不管他们最后一次与大师互动是什么时候。
#(然而,他们总是尝试应用与他们的时间成比例的延迟
#偏移秩)。
#
#零是唯一能够保证当所有分区恢复时
#群集将始终能够继续。
#
# cluster-slave-validity-factor 10
#集群从属服务器能够迁移到孤立的主服务器,即主服务器
#没有工作的奴隶。这提高了集群能力
#抵抗失败,否则一个孤立的主人就不能失败
#如果没有工作的从属设备,则发生故障。
#
#只有在至少还有一个家庭的情况下,奴隶才会迁移到孤儿主人那里
#为他们的老主人提供其他工作奴隶的数量。这个号码
#这就是“移民壁垒”。迁移屏障为1意味着一个奴隶
#仅当其主服务器至少有1个其他工作从属服务器时,才会迁移
#等等。它通常反映了你想要的每一天的奴隶数量
#在你的群集中掌握。
#
#默认值为1(仅当从属对象的主对象保留至少一个值时,从属对象才会迁移)
#一个奴隶)。要禁用迁移,只需将其设置为非常大的值。
#可以设置值0,但仅对调试和测试有用
#在生产中。
#
# cluster-migration-barrier 1
#默认情况下,Redis群集节点在检测到查询时停止接受查询
#至少有一个哈希槽未覆盖(没有可用的节点为其提供服务)。
#如果集群部分关闭(例如一系列哈希槽),则使用这种方法
#(不再覆盖)所有群集最终都不可用。
#一旦所有插槽再次被覆盖,它将自动返回可用状态。
#
#但是,有时您需要工作的集群的子集,
#继续接受对仍在使用的密钥空间部分的查询
#掩护。为此,只需将集群设置为需要完全覆盖即可
#选择否。
#
# cluster-require-full-coverage yes
#要设置集群,请务必阅读文档
#可在http://redis.io 网站。
##################################慢日志###################################
#Redis慢速日志是一个系统,用于记录超过指定时间的查询
#执行时间。执行时间不包括I/O操作
#比如与客户交谈,发送回复等等,
#但实际执行命令所需的时间(这是唯一的
#命令执行的一个阶段,线程被阻塞,无法服务
#(同时提出其他要求)。
#
#您可以使用两个参数配置慢速日志:一个参数告诉Redis
#以微秒为单位,要超出的执行时间是多少
#命令进行记录,另一个参数是
#慢日志。记录新命令时,最旧的命令将从日志中删除
#记录的命令队列。
#以下时间以微秒表示,因此1000000是等效的
#到一秒钟。请注意,负数将禁用慢速日志,而
#值为零将强制记录每个命令。
slowlog-log-slower-than 10000
#这个长度没有限制。请注意,它将消耗内存。
#您可以使用SLOWLOG RESET回收慢速日志使用的内存。
slowlog-max-len 128
################################延迟监视器##############################
#Redis延迟监控子系统对不同的操作进行采样
#在运行时收集与可能的数据源相关的数据
#Redis实例的延迟。
#
#通过LATENCY命令,用户可以使用此信息
#打印图表并获取报告。
#
#系统仅记录在相同或相同时间内执行的操作
#大于通过指定的毫秒数
#延迟监视器阈值配置指令。当其值被设置时
#如果设置为零,则延迟监视器将关闭。
#
#默认情况下,延迟监视被禁用,因为它基本上不需要
#如果您没有延迟问题,并且收集数据具有良好的性能
#冲击虽然很小,但可以在大载荷下测量。延迟
#可以在运行时使用命令轻松启用监视
#如果需要,“配置设置延迟监视器阈值<毫秒>”。
latency-monitor-threshold 0
#############################事件通知##############################
#Redis可以将密钥空间中发生的事件通知发布/订阅客户端。
#此功能记录在http://redis.io/topics/notifications
#
#例如,如果已启用键空间事件通知,并且客户端
#对数据库0中存储的键“foo”执行DEL操作,2
#消息将通过发布/订阅发布:
#
# PUBLISH __keyspace@0__:foo del
# PUBLISH __keyevent@0__:del foo
#
#可以在集合中选择Redis将通知的事件
#上课的时间。每个类都由一个字符标识:
#
#K键空间事件,以uu键空间@<db>前缀发布。
#E Keyevent事件,以uu Keyevent@<db>前缀发布。
#g通用命令(非特定类型),如DEL、EXPIRE、RENAME等。。。
#$String命令
#列表命令
#s设置命令
#h散列命令
#z排序集命令
#x过期事件(每次密钥过期时生成的事件)
#e收回事件(为maxmemory收回密钥时生成的事件)
#g$lshzxe的别名,因此“AKE”字符串表示所有事件。
#
#“notify keyspace events”将一个由
#零个或多个字符。空字符串表示通知
#他们是残疾人。
#
#示例:从
#事件名称,使用:
#
# notify-keyspace-events Elg
#
#示例2:获取订阅通道的过期密钥流
#名字__keyevent@0__:过期使用:
#
# notify-keyspace-events Ex
#
#默认情况下,所有通知都被禁用,因为大多数用户不需要
#此功能和此功能有一些开销。请注意,如果您没有
#指定K或E中的至少一个,则不会传递任何事件。
notify-keyspace-events ""
###############################高级配置###############################
#当散列有一个
#少量条目,且最大条目不超过给定的
#门槛。可以使用以下指令配置这些阈值。
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
#与散列类似,小列表也以特殊方式按顺序编码
#以节省大量空间。特殊表示仅在以下情况下使用:
#您受到以下限制:
list-max-ziplist-entries 512
list-max-ziplist-value 64
#在一种情况下,集合有一种特殊的编码:当集合组成时
#正好是范围内基数为10的整数的字符串
#由64位有符号整数组成。
#以下配置设置设置了服务器大小的限制
#设置以使用此特殊的内存节省编码。
set-max-intset-entries 512
#与散列和列表类似,排序集也在
#为了节省大量的空间。此编码仅在长度和
#排序集的元素低于以下限制:
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
#HyperLogLog稀疏表示字节数限制。限额包括
#16字节报头。当使用稀疏表示的HyperLogLog交叉时
#此限制将转换为稠密表示。
#
#大于16000的值是完全无用的,因为此时
#密集表示更高效。
#
#建议值为~3000,以获得以下好处:
#在不降低太多PFADD速度的情况下进行节省空间的编码,
#这是O(N)和稀疏编码。该值可以提高到
#~10000时,CPU不是问题,但空间是,数据集是
#由许多基数在0-15000范围内的Hyperloglog组成。
hll-sparse-max-bytes 3000
#主动重新灰化在中每100毫秒CPU时间使用1毫秒
#以帮助重新设置主Redis哈希表(顶级映射表
#值的键)。Redis使用的哈希表实现(参见dict.c)
#执行延迟重新哈希:在哈希表中运行的操作越多
#即重新灰化,执行的重新灰化“步骤”越多,因此如果
#服务器处于空闲状态。重新灰化从未完成,并且使用了更多内存
#通过哈希表。
#
#默认情况下,每秒使用此毫秒10次,以便
#积极地重新整理主词典,尽可能地释放内存。
#
#如果不确定:
#如果您有硬性延迟要求,并且确实如此,请使用“activerehashing no”
#在您的环境中,Redis可以随时回复不是一件好事
#到延迟2毫秒的查询。
#
#如果您没有这样严格的要求,请使用“activerehashing yes”
#希望尽可能快地释放内存。
activerehashing yes
#客户端输出缓冲区限制可用于强制断开客户端连接
#由于某种原因,从服务器读取数据的速度不够快(a
#常见的原因是,发布/订阅客户端不能像客户端那样快速地使用消息
#出版商可以制作它们)。
#
#对于三种不同类型的客户端,可以设置不同的限制:
#
# normal -> normal clients including MONITOR clients
# slave -> slave clients
# pubsub -> clients subscribed to at least one pubsub channel or pattern
#
#每个客户端输出缓冲区限制指令的语法如下:
#
# client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
#
#一旦达到硬限制,或者
#已达到软限制,并且在指定数量的
#秒(连续)。
#例如,如果硬限制是32兆字节,而软限制是
#16兆字节/10秒,客户端将立即断开连接
#如果输出缓冲区的大小达到32兆字节,但也会
#如果客户端达到16兆字节并持续克服
#限制为10秒。
#
#默认情况下,普通客户端不受限制,因为它们不接收数据
#没有询问(以推送方式),但只是在请求之后,所以仅
#异步客户端可能会创建一种更快地请求数据的场景
#比它能读的还多。
#
#相反,pubsub和从属客户端有一个默认限制,因为
#订户和从机以推送方式接收数据。
#
#硬限制或软限制都可以通过将其设置为零来禁用。
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
#Redis调用一个内部函数来执行许多后台任务,比如
#关闭timeot中客户端的连接,清除过期的
#从未要求过,等等。
#
#并非所有任务都以相同的频率执行,但Redis会检查
#根据指定的“hz”值执行的任务。
#
#默认情况下,“hz”设置为10。当
#Redis是空闲的,但同时会使Redis在
#有许多密钥同时过期,并且可能会出现超时
#更精确地处理。
#
#范围在1到500之间,但是超过100的值通常不是
#好主意。大多数用户应该使用默认值10,并将其提高到10
#100仅适用于要求极低延迟的环境。
hz 10
#当子级重写AOF文件时,如果启用以下选项
#文件将每生成32MB的数据进行fsync同步。这是有用的
#为了更增量地将文件提交到磁盘并避免
#大延迟峰值。
aof-rewrite-incremental-fsync yes
##################################包括###################################
#在此处包括一个或多个其他配置文件。这是有用的,如果你
#有一个适用于所有Redis服务器的标准模板,但也需要
#自定义每个服务器的一些设置。包含文件可以包括
#其他文件,所以请明智地使用它。
#
# include /path/to/local.conf
# include /path/to/other.conf