################################## NETWORK #####################################
# 默认情况下,如果没有指定“bind”配置指令,Redis将侦听服务器上可用的所有网络接口的连接。
# bind 127.0.0.1
# 启用默认保护模式。只有当您确定您希望其他主机的客户端连接到Redis时,您才应该禁用它,即使没有配置身份验证,也没有使用“bind”指令显式列出特定的接口集。
protected-mode no
# 在指定端口上接受连接,默认值是6379
port 7101
# TCP监听的最大容纳数量,在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。Linux 内核会把这个值缩小成 /proc/sys/net/core/somaxconn对应的值,要提升并发量需要修改这两个值才能达到目的。
tcp-backlog 511
# 在客户机空闲N秒后关闭连接(0到禁用)
timeout 300
# 如果非零,请使用SO_KEEPALIVE向没有通信的客户发送TCP协议。这个选项的合理值是300秒,这是新的Redis默认值,从Redis 3.2.1开始。
tcp-keepalive 300
################################# GENERAL #####################################
# 默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。
daemonize yes
# 可以通过upstart和systemd管理Redis守护进程
# 选项:
# supervised no - 没有监督互动
# supervised upstart - 通过将Redis置于SIGSTOP模式来启动信号
# supervised systemd - signal systemd将READY = 1写入$ NOTIFY_SOCKET
# supervised auto - 检测upstart或systemd方法基于 UPSTART_JOB或NOTIFY_SOCKET环境变量
supervised no
# 配置PID文件路径,当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/redis/run/redis_6379.pid 文件里面。
pidfile /home/work/redis_cluster/redis-pandora/redis_7101/var/redis_7101.pid
# 定义日志级别。
# debug(记录大量日志信息,适用于开发、测试阶段)
# verbose(较多日志信息)
# notice(适量日志信息,使用于生产环境)
# warning(仅有部分重要、关键信息才会被记录)
loglevel notice
# 日志文件的位置,当指定为空字符串时,为标准输出,如果redis已守护进程模式运行,那么日志将会输出到/dev/null
logfile /home/work/redis_cluster/redis-pandora/redis_7101/log/7101.log
# 设置数据库的数目。默认的数据库是DB 0 ,可以在每个连接上使用select <dbid> 命令选择一个不同的数据库,dbid是一个介于0到databases - 1 之间的数值。
databases 16
# 默认情况下,Redis只显示了ASCII艺术标志,当开始记录到标准输出时,如果标准输出是TTY。基本上,这意味着通常只有在交互式会话中才会显示徽标。但是,可以强制执行4.0的行为,并且在启动日志中始终显示一个ASCII艺术标识,通过设置下面的选项为yes。
always-show-logo yes
################################ SNAPSHOTTING ################################
# 格式:save <间隔时间(秒)> <写入次数>
# 注意:你可以注释掉所有的 save 行来停用保存功能。
# disable saving at all for master
# save 900 1
# save 300 10
# save 60 10000
# 如果用户开启了RDB快照功能,那么在redis持久化数据到磁盘时如果出现失败,默认情况下,redis会停止接受所有的写请求。
stop-writes-on-bgsave-error yes
# 启动rdb文件压缩,耗费CPU资源,默认为yes
rdbcompression yes
# 对rdb数据进行校验,耗费CPU资源,默认为yes
rdbchecksum yes
# rdb文件名称
dbfilename dump_7101.rdb
# rdb文件前缀目录
dir /home/work/redis_cluster/redis-pandora/redis_7101/data
################################# REPLICATION #################################
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
################################## SECURITY ###################################
# 设置redis连接密码
# requirepass higo2025@LEshowHE
############################## MEMORY MANAGEMENT ##############################
# 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key。
maxmemory 20G
############################# LAZY FREEING ####################################
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
############################## APPEND ONLY MODE ###############################
# 是否启用aof持久化方式
appendonly no
# aof文件名
appendfilename "appendonly.aof"
# aof持久化策略的配置
# no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快。
# always表示每次写入都执行fsync,以保证数据同步到磁盘。
# everysec表示每秒执行一次fsync,可能会导致丢失这1s数据。
appendfsync everysec
# 在aof重写或者写入rdb文件的时候,会执行大量IO,此时对于everysec和always的aof模式来说,执行fsync会造成阻塞过长时间,no-appendfsync-on-rewrite字段设置为默认设置为no。如果对延迟要求很高的应用,这个字段可以设置为yes,否则还是设置为no,这样对持久化特性来说这是更安全的选择。
no-appendfsync-on-rewrite no
# aof自动重写配置,当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候,Redis能够调用bgrewriteaof对日志文件进行重写。当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程。
auto-aof-rewrite-percentage 100
# 设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写
auto-aof-rewrite-min-size 64mb
# aof文件可能在尾部是不完整的,当redis启动的时候,aof文件的数据被载入内存。如果选择的是yes,当截断的aof文件被导入的时候,会自动发布一个log给客户端然后load。如果是no,用户必须手动redis-check-aof修复AOF文件才可以。
aof-load-truncated yes
# 4.0实现了这一特性——RDB-AOF混合持久化。
aof-use-rdb-preamble no
################################ LUA SCRIPTING ###############################
lua-time-limit 5000
################################ REDIS CLUSTER ###############################
# 如果配置yes则开启集群功能,此redis实例作为集群的一个节点,否则,它是一个普通的单一的redis实例。
cluster-enabled yes
# 虽然此配置的名字叫"集群配置文件",但是此配置文件不能人工编辑,它是集群节点自动维护的文件,主要用于记录集群中有哪些节点、他们的状态以及一些持久化参数等,方便在重启时恢复这些状态。通常是在收到请求之后这个文件就会被更新。
cluster-config-file /home/work/redis_cluster/redis-pandora/redis_7101/conf/nodes-7101.conf
# 这是集群中的节点能够失联的最大时间,超过这个时间,该节点就会被认为故障。如果主节点超过这个时间还是不可达,则用它的从节点将启动故障迁移,升级成主节点。注意,任何一个节点在这个时间之内如果还是没有连上大部分的主节点,则此节点将停止接收任何请求。一般设置为15秒即可。
cluster-node-timeout 15000
################################## SLOW LOG ###################################
# “Redis慢速日志”是一个记录超过指定执行时间的查询的系统。执行时间不包括I/O操作,比如与客户端,发送应答等等,但就实际执行命令所需的时间(这是唯一阶段命令执行的线程被阻塞,不能同时处理其他请求)。
# 单位:微秒
slowlog-log-slower-than 10000
# 这个长度没有限制。只要意识到它会消耗内存。可以回收利用慢速日志重置的慢速日志。
slowlog-max-len 128
################################ LATENCY MONITOR ##############################
latency-monitor-threshold 0
############################# EVENT NOTIFICATION ##############################
notify-keyspace-events ""
############################### ADVANCED CONFIG ###############################
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
建议(注意一定要使用work账号):
$ mkdir -p /home/work/redis_cluster/redis-pandora/redis_7101/conf && mkdir /home/work/redis_cluster/redis-pandora/redis_7101/data /home/work/redis_cluster/redis-pandora/redis_7101/log /home/work/redis_cluster/redis-pandora/redis_7101/var
$ mkdir -p /home/work/redis_cluster/redis-pandora/redis_7102/conf && mkdir /home/work/redis_cluster/redis-pandora/redis_7102/data /home/work/redis_cluster/redis_7002/log /home/work/redis_cluster/redis-pandora/redis_7102/var && cp /home/work/redis_cluster/redis-pandora/redis_7101/conf/redis.conf /home/work/redis_cluster/redis-pandora/redis_7102/conf/ && sed -i "s/7101/7102/g" /home/work/redis_cluster/redis-pandora/redis_7102/conf/redis.conf
连接方式为:redis-cli -h <ip> -c -p <port> (客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可,即可以访问整个集群)
举个栗子:redis-cli -h xx.xx.0.40 -c -p 7101 (加参数 -c 可连接到集群)
通过lvs代理访问:redis-cli -h xx.xx.252.1 -c -p 7101
启动:$ for((i=1;i<=2;i++)); do redis-server /home/work/redis_cluster/redis-bim/redis_710${i}/conf/redis.conf; done
停止:$ for((i=1;i<=2;i++)); do redis-cli -p 710${i} shutdown; done