技术分享-Redis(3)

前面两个章节把redis的基础大都介绍了,这章节主要分享redis的配置,配置才是王道。

对于玩过的一些技术栈django、mysql、sqlserver、hadoop、hive、spark,其难点根本不是语法,而是deployment!!!

部署真的是搞死人。

redis主要可以分成三种模式:普通模式(或者可以认为是master模式)、slave模式和sentinel模式。

master可以是单机模式,也可是服务主机模式、其实都差不多、只是是否集群连接的区别。

slave模式也称为“从”模式,一般从属于master。

sentinel模式就是作为监控集群正常与否的一种特殊master模式。

以下先介绍一些必要且重要的配置信息。

# 服务端口
port 6379

# 进程名,启动redis时分配的进程名字
pidfile "/var/run/redis_6379.pid"

# 日志文件名
logfile "./master.log"

# 持久化存储名,数据存储文件名
dbfilename "master.rdb"

# 以上文件存放的根路径
dir "/opt/redis"

# 登陆密码(不填则不需要)
requirepass "123456"

# 与bind参数一起使用,不使用bind参数同时该参数为no,则允许远程访问
protected-mode no

# 后台运行(yes则后台运行,windows无效)
daemonize yes

# 存储校验(redis存储时对数据的一种校验方式)

rdbchecksum no

# 执行任务频率,机器厉害的可以往大了开
hz 10

# 允许最大握手队列长度(跟tcp协议相关操作)
tcp-backlog 511

# 0表示永不断开客户端(若其他,表示客户端无操作的时间后自动断开)
timeout 0

# 检测掉线超时机制
tcp-keepalive 300

# 接管分配机制
supervised no

# 日志级别(debug、verbose、notice、warn)
loglevel notice

# 开启数据库数量
databases 16

# 保存机制(900秒1个变化则保存、300秒10个变化则保存。。。)
save 900 1
save 300 10
save 60 10000

# 保存出错继续运行(yes开启保证服务端不受错误影响)
stop-writes-on-bgsave-error yes

# 持久化使用压缩算法(yes则开启内置优化算法)
rdbcompression yes

# 从机设置,master IP地址

slaveof 0.0.0.0

#master密码

masterauth "xxxxxx"

# slave端只读(slave模式开启,否则注释)
# slave-read-only yes

# socket同步方式(磁盘保存传输和网络直接传输)
repl-diskless-sync no

# socket传输延时
repl-diskless-sync-delay 5

# (至今未知)
repl-disable-tcp-nodelay no

# slave选取优先级(slave模式启用,否则注释)
# slave-priority 100

# 一种持久化方式
appendonly no

# 一种持久化文件名
appendfilename "appendonly.aof"

# 一种持久化同步频率
appendfsync everysec

# 一种持久化方式存储模式
no-appendfsync-on-rewrite no

# 一种持久化方式重写配置模式
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 一种持久化方式修复方式
aof-load-truncated yes

# (至今未知)
lua-time-limit 5000

# 记录慢命令日志(慢日志开启方便错误回查)
slowlog-log-slower-than 10000

# 日志长度设置
slowlog-max-len 128

# 关闭延迟监控功能
latency-monitor-threshold 0

# 键操作命令通知模式(类似数据库触发器)
notify-keyspace-events ""

# 哨兵监测目标,'master'为自命名,后为master的ip地址,再后是宕机确认机数量(如我写的是2,表示两台sentinel都确定宕机的情况下才进行故障转移)
# sentinel monitor master 0.0.0.0  2
# 宕机判断条件
#sentinel down-after-milliseconds master 10000
# 故障转移延迟
# sentinel failover-timeout master 30000
# master密码
# sentinel auth-pass master 123456


以上是相对比较重要的配置信息,以下信息是对容量和数据结构的一些DIY设置,

没有特别重要的配置要求,可忽略:

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
aof-rewrite-incremental-fsync yes



以下详细介绍几个超级重要的配置参数:

1、master(单机)模式。

(1)port 6379

端口号。默认是6379,当你需要开启多个端口时,必须修改该端口。否则只能启动一个redis服务。

比如:我是做爬虫的,我可以设置6379为任务分发专用的端口,6380为IP池等等。这样能尽可能避免服务崩溃导致整体任务受牵连。

(2)pidfile "/var/run/redis_6379.pid"

进程ID命名方式。这个命名方式,有助于你查询崩溃的服务,能一眼就分清哪个对应哪个服务,可以直接kill。同时便于脚本的编程。

(3)logfile "./master.log"

日志名。不同的redis服务对应不同的日志名,这是必须的

(4)dbfilename "master.rdb"

存储文件名。同上

(5)dir "/opt/redis"

以上所有有关文件名的配置的根路径,必须设置好

(6)requirepass "xxx"

登录密码。建议填上,不然在没有安全组保护的情况下,任何扫描端口的方式都能入侵你的redis(但是!!!sentinel建议不填密码)


2、slave模式(在master配置的基础上)

(1)slaveof xxxxxx

从属于master的主机ip,不填没法做slave

(2)masterauth "xxxxxx"

master的密码。不填无法连接master

(3)slave-read-only yes

从机是否可以进行写操作。!!!对于新手,务必填写成yes,否则任何从机的操作,直接影响master的数据!!!

填写成no的时候,从机的所有操作,master同样适用。

3、sentinel(master配置基础上)

(1)sentinel monitor master ip num

哨兵检测的目标,前两个参数固定。master为你随意取的名字,ip为master地址,num为多少就表示“当有多少台sentinel都认为master已经挂了”的情况下,进行故障转移

sentinel down-after-milliseconds master 10000

宕机超时判断条件,无法连接10秒后,认为宕机。(10000毫秒)

sentinel failover-timeout master 30000

故障转移超时,转移超过30秒,认为转移失败


sentinel auth-pass master xxxxxx

master的登录密码


OK,继续介绍两个概念。

1、slave。

即从机。每个master可以被多个slave绑定,每个slave仅能绑定一个master。slave绑定一个master(一个端口)后,master的所有数据变更,slave会同步进行变更,即:即时同步。当master宕机后,sentinel会进行投票,选取一个slave作为新的master(前提是有sentinel服务),其中slave-priority 100就是认为干预设定的slave选取优先级,数值越小,等级越高,优先被选中,否则由sentinel自行选取。

2、sentinel

哨兵机制。用来检测redis主机状态的一种redis服务。其会以ping方式向master发送ping命令,如出现无法ping通的情况,则投票宕机。当投票宕机的snetinel达到设定的数量时,宕机确认,然后选取出一台slave作为新的master。与此同时,sentinel会在+sdown频道发送订阅(重要重要重要,务必记住该频道名,脚本监测时最重要的一步)。


一下发出三个配置,供大家参考,分别是master配置、sentinel配置、slave配置

#  master

port 6379
pidfile "/var/run/redis_6379.pid"
logfile "./master.log"
dbfilename "master.rdb"
dir "/opt/redis"
requirepass "123456"
protected-mode no
daemonize yes
rdbchecksum no
hz 10
tcp-backlog 511
timeout 0
tcp-keepalive 300
supervised no
loglevel notice
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
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
aof-rewrite-incremental-fsync yes
# sentinel

port 16379
pidfile "/var/run/redis_6379.pid"
logfile "./sentinel.log"
dbfilename "sentinel.rdb"
dir "/opt/redis"
protected-mode no
daemonize yes
rdbchecksum no
sentinel monitor master 1.1.1.1 2
sentinel down-after-milliseconds master 10000
sentinel failover-timeout master 30000
sentinel auth-pass master 123456
rdbchecksum no
hz 10
tcp-backlog 511
timeout 0
tcp-keepalive 300
supervised no
loglevel notice
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
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
aof-rewrite-incremental-fsync yes
#    slave
port 6379
pidfile "/var/run/redis_6379.pid"
logfile "./slave.log"
dbfilename "slave.rdb"
dir "/opt/redis"
requirepass "123456"
protected-mode no
daemonize yes
rdbchecksum no
slaveof 1.1.1.1
masterauth 123456
rdbchecksum no
hz 10
tcp-backlog 511
timeout 0
tcp-keepalive 300
supervised no
loglevel notice
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
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
aof-rewrite-incremental-fsync yes



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值