redis学习-35-Redis配置项汇总

40.配置项汇总

  • 对 Redis 的常用配置项和基本命令做简单的总结,可以把本章看做简版的速查手册。不过,需要注意的是由于 Redis 不同版本的差异,配置项会多少存在一些不同,但总体的来说,大同小异。

  • 基本配置:

# 监听端口号,默认为6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
port 6379  

#指定包含其它配置文件,能够在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有本身的特定配置文件
include /path/to/local.conf;

#指定redis是否以守护线程的方式启动
daemonize no 

#以守护进程启动时,pid(进程编号)将会写入 pidfile 配置的文件
pidfile /var/run/redis.pid;

#守护进程:一种特殊的进程,不再依附于终端。linux 操作系统中,系统和用户交互的页面就叫终端。如果没有开启守护线程,redis 只会以前台启动,终端关闭时,redis 进程会随着停止。

#创建database的数量,默认为0库,可使用SELECT 命令在链接上指定数据库id
databases 16 

#刷新快照到硬盘中rdb 文件。指定在多长时间内,有多少次更新操做,就将数据同步到数据文件。必须满足下列三个要求之一才会触发,即900秒内至少有1个key发生变化。
#不配置表示不开启 rdb 持久化
save <seconds> <changes>;
save 900 1 
#在300秒内至少10个key发生变化。
save 300 10 
#在60秒之内至少有10000个可以发生变化。
save 60 10000 

#指定 rdb 文件是否压缩,默认是。redis 采用 LZF 压缩,关闭后 CPU 压力减轻但 rdb 文件更大
rdbcompression yes;

#指定 rdb 文件名称
dbfilename dump.rdb;
#指定 rdb 文件路径
dir ./;


  • 主从服务配置:
#slave 节点同步的 master 节点的 ip 和 端口
replicaof <masterip> <masterport> 

#master 节点有密码时,配置 master 节点密码
masterauth <master-password> 

# 当主机和从机断开时或这正处于在复制过程中,是否让从服务器是应答请求
slave-serve-stale-data yes 

#设置从服务器为只读模式,默认是只读模式
slave-read-only yes


#如果master不能再正常工作,那么会在多个slave中,选择优先值最小的一个slave提升为master,
#优先值为0表示不能提升为master,一般在哨兵sentinel环境中使用。
slave-priority 100 

#在slave和master同步后,后续的同步是否设置成TCP_NODELAY,设置成no,则redis master会立即发送同步数据,没有延迟
#默认情况下,我们优化低延迟,但在非常高的流量条件下或者当主副本和副本相隔很远时,将此设置为“是”
repl-disable-tcp-nodelay no 

#主节点仅允许当能够通信的从节点数量大于等于此处的值时,才允许接受写操作;
min-slaves-to-write 3 

#从节点延迟时长超出此处指定的时间时,主节点会拒绝写入操作;
min-slaves-max-lag 10
  • 安全配置:
# 用来配置密码,默认没有密码。有密码时通过 auth xxx 命令验证密码
requirepass foobared 

#在公共环境下重命名部分敏感命令 如config、flushall等
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
  • 限制配置:
#最大连接数,redis 最多同时支持客户端数量,默认为 0 表示无限制
maxclients 10000 

#客户端闲置多长时间后断开连接,0 表示永不断开
timeout 0;

#设置向客户端应答时,是否把较小的包合并为一个包发送,默认开启
glueoutputbuf yes;

#最大使用内存,达到限制触发内存淘汰策略。内存淘汰后仍然不行。触发 VM 机制:,会把Key存放内存,将 value 放入 swap 区:交换区,系统在物理内存不够时,与 Swap 进行交换,保存超过物理内存的数据
#设置redis可使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则能够经过maxmemory-policy来指定。若是redis没法根据移除规则来移除内存中的数据,或者设置了“不容许移除”,那么redis则会针对那些须要申请内存的指令返回错误信息,好比SET、LPUSH等。
#可是对于无内存申请的指令,仍然会正常响应,好比GET等。若是你的redis是主redis(说明你的redis有从redis),那么在设置内存使用上限时,须要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的状况下,才不用考虑这个因素
maxmemory <bytes> 

#是否开启虚拟内存,默认值为no,VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中
vm-enabled no;

#虚拟内存文件路径,默认值为/tmp/redis.swap,不可多节点共享
vm-swap-file /tmp/redis.swap;

#将大于 vm-max-memory 的数据放入虚拟内存,不管vm-max-memory设置多小,全部索引数据都是内存存储的(Redis的索引数据 就是keys)(key 在内存,value 在虚拟内存),默认为0,表示所有 value 放入虚拟内存
vm-max-memory 0;

#Redis swap 文件分成了很多的 page,指定每个分页的大小,vm-page-size是要根据存储的 数据大小来设定的,建议若是存储小对象,page大小最好设置为32或者64bytes;若是存储很大大对象,则可使用更大的page,若是不肯定,就使用默认值
#一个对象可以保存在多个 page 上面,但每个 page 只供一个对象使用,不能被多个对象共享
vm-page-size 32;

#设置swap文件中的page数量,因为页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,在磁盘上每8个pages将消耗1byte的内存。
vm-pages 134217728;

#设置访问 swap 文件的线程数,最好不要超过机器的核数,为 0 那么全部对swap文件的操做都是串行的,可能会形成比较长时间的延迟。默认值为4
vm-max-threads 4;


#内存到极限后的处理策略
maxmemory-policy volatile-lru 

#内存处理策略,用于在超出内存限制时,删除一些key
LRU算法:leastest recently use 最近最少使用
volatile-lru # LRU算法删除过期key
allkeys-lru # LRU算法删除key(不区分过不过期)
volatile-random # 随机删除过期key
allkeys-random # 随机删除key(不区分过不过期)
volatile-ttl # 删除快过期的key
noeviction # 禁止删除key,这如果内存不足,会直接返回错误。默认配置

#设置样本数量,LRU算法和最小TTL算法都并不是是精确的算法,而是估算值。因此设置样本的大小用于提高LRU/TTL算法的精准度,在自动清理内存时,指定的数字越大,CPU消耗就越多,默认为5。redis默认会检查这么多个key并选择其中LRU的那个
maxmemory-samples 5
  • 哈希算法相关配置:
#指定超过一定的数量或者最大的元素超过某一临界值时的哈希类型 key-value,采用特殊的哈希算法
hash-max-zipmap-entries 64;
#指定最大的元素超过某一临界值的哈希类型 key-value,采用特殊的哈希算法
hash-max-zipmap-value 512;
#是否激活重置哈希,默认为开启
activerehashing yes;
#重置哈希:redis 在每 100 毫秒时使用 1 毫秒的 CPU 时间来对 redis 的 hash 表进行重新 hash,降低内存的使用


  • AOF日志模式:
#是否启用日志模式,开启 aof 持久化,默认关闭
#指定是否在每次更新操做后进行日志记录,Redis在默认状况下是异步的把数据写入磁盘,若是不开启,可能会在断电时致使一段时间内的数据丢失。由于 redis自己同步数据文件是按上面save条件来同步的,因此有的数据会在一段时间内只存在于内存中。默认为no
appendonly no 

#指定更新日志文件名,默认为appendonly.aof
appendfilename appendonly.aof;

#由系统决定何时写,统一写,速度快
appendfsync no 
# 系统不缓冲,一直写,但是慢,这种方式几乎不丢失数据
appendfsync always 
#每秒写1次,默认,宕机会丢失这一秒的数据
appendfsync everysec 

#重写时是否能够运用Appendfsync,相当于将appendfsync设置为no,不存在磁盘操作,只是将数据写入了缓冲区,写入速度非常快
no-appendfsync-on-rewrite no 

#触发aof重写操作,要求本次文件大小比上次重写时要增加1(100%)倍
auto-AOF-rewrite-percentage 100 

#触发aof重写操作,至少要达到的aof文件大小
auto-AOF-rewrite-min-size 64mb 
  • **慢查询配置:**Redis slowlog 是一个记录 Redis 执行查询命令时所耗费时间的日志系统,它仅记录执行一个查询命令所耗费的时间,不记录其他内容。
  • Redis慢速日志是一个系统,用于记录超过指定值的查询执行时间。执行时间不包括I/O操作。比如与客户交谈、发送回复等等,而只是实际执行命令所需的时间(这是命令执行阶段,线程被阻塞且无法服务同时的其他请求)。
  • 可以使用两个参数配置慢日志:一个告诉Redis要超过多少执行时间(以微秒为单位)命令,超过这个时间则记录命令。另一个参数是慢日志的长度。记录新命令时,最旧的命令将从记录的命令队列移除。
#记录响应时间大于10000微秒的慢查询,相当于一秒,负数将禁用慢速日志,而值为零强制记录每个命令。
slowlog-log-slower-than 10000

#最多记录128条,此长度没有限制。只需注意它会消耗内存。可以使用SLOWLOG RESET回收慢速日志使用的内存。
slowlog-max-len 128 
  • 服务端命令:
#返回时间戳+微秒
time 

#返回key的数量
dbsize 

#重写aof
bgrewriteaof

#后台开启子进程来执行数据持久化
bgsave 

#以阻塞的方式对数据进行持久化
save 

#返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示。
lastsave 

#设置为host:port的从服务器(数据清空,复制新的主服务器内容)
slaveof host port 
#变成主服务器(原数据不丢失,一般用于主服失败后)
slaveof no one  

#清空当前数据库的所有数据
flushdb 
#清空所有数据库的所有数据
flushall 

关闭服务器,保存数据,修改AOF
shutdown [save/nosave] 

#获取慢查询日志
slowlog get 
#获取慢查询日志条数
slowlog len 
#清空慢查询
slowlog reset
  • 客户端命令:
#以易于理解和阅读的方式返回Redis服务器的各种信息、统计数值
info [server|clients|memory|stats|]

#获取配置文件选项
config get [配置项]    
#重新设置配置文件选项和对应参数
config set [配置项] [参数值]

#对启动Redis服务器时所指定的配置文件进行改写
config rewrite  
#重置info命令中的某些统计信息
config resetstat

#调试选项,看一个key的情况
debug object key
#该命令能够让服务器崩溃
debug segfault 
object key (refcount|encoding|idletime)

#调试用,打开控制台,观察命令
monitor 
#列出所有连接
client list 
#杀死某个连接 CLIENT KILL 127.0.0.1:6379
client kill 

#获取连接的名称 默认nil
client getname 
 #设置连接名称,便于调试
client setname 
  • 连接命令:
#验证登录密码(如果设置了密码),redis-cli客户端登陆后进行验证
auth 密码  
#测试服务器是否可用
ping     
#测试服务器是否正常交互
echo "hello redis" 
#选择数据库0-15
select 0/.../15  
#退出连接
quit /exit
  • 日志相关配置:
#指定日志级别,从低到高分别为:debug、verbose、notice、warning,默认 notice
loglevel notice;
#日志记录方式,默认标准输出
logfile stdout;
  • 哨兵模式 Sentinel配置文件名称:sentinel.conf,常见配置如下:
#指定端口号
port 26379;
#指定工作路径
dir "/usr/local/redis-6380";
#指定工作模式,是否守护线程
daemonize yes;
#指定日志名称
logfile "./sentinel.log";
  • 监视配置如下:
#指定哨兵监控的 master 节点配置
#mymaster redis 节点名称,1 表示判断 redis 节点失效至少需要 1 个 Sentinel 节点同意
sentinel monitor mymaster 192.168.137.40 6379 1;
#redis 节点存在密码时验证密码
sentinel auth-pass mymaster 123456;
#哨兵监控的节点多久不能正常返回消息后置为主观下线状态
sentinel down-after-milliseconds mymaster 5000;
#故障转移(主备切换)最大时长,超过该时长未完成转移则认为本次转移失败
sentinel failover-timeout mymaster 18000;
#当发生故障转移时,最多同时有多少个 slave 节点同时从新 master 节点同步数据
#值越小故障转移时间越长,所需同步的slave次数大,值越大同时有更少的 slave 节点可以执行 get 操作,即网络阻塞,服务处于不可用状态
sentinel parallel-syncs <master-name> <numslaves>;
#配置当出现某种状态后出发脚本,例如异常通知管理员等等。脚本返回1将重复执行,大于1将不再执行
# 当 sentinel 监控节点有任何警告级别的事件发生时调用该脚本,常用来发邮件
sentinel notification-script <master-name> <script-path>;
#当 sentinel 监控节点发生故障转移时调用该脚本,用来通信新的主备机器
sentinel client-reconfig-script <master-name> <script-path>;
  • 启动监视后自动生成的配置:
sentinel config-epoch mymaster 0;
sentinel leader-epoch mymaster 1;
// 指定 slave 节点的 IP 和端口,故障转以后该值会改变
sentinel known-slave mymaster 10.5.35.3 6380;
// 指定其它正在监视 master 节点的哨兵节点
// 后面的 ip、端口都是 Sentinel 节点的值
sentinel known-sentinel mymaster 192.168.137.40 26379 7a88891a6147e202a53601ca16a3d438e9d55c9d;
sentinel current-epoch 1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值