238_Redis_常用配置

举报
alexsully 发表于 2021/12/06 21:37:47 2021/12/06
【摘要】 Redis配置文件

一 常规配置

daemonize yes
#当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile /data/6380/redis.pid
requirepass 123456
port 6379 # 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口
bind 127.0.0.1 #监听端口
protected-mode no # 保护模式  仅仅接受本机反问 不接受远程访问
timeout 300  #当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
loglevel verbose  #指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
logfile  "/data/6380/redis.log"  #stdout 日志记录默认为标准输出,如果配置Redis为守护进程方式运行,则日志将会发送给/dev/null
databases 16  #设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id
tcp-keepalive 60  #对访问客户端的一种心跳检测,每个n秒检测一次。 单位秒,如果设置为0,则不会进行Keepalive检测,建议设置成60 
# 持久化
save 900 1
save 300 10
save 60 10000 # Redis默认配置文件中提供了三个条件:表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改
rdbcompression yes # 指定存储至本地数据库时是否压缩数据,采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
dbfilename dump.rdb  #指定本地数据库文件名,默认值为dump.rdb
dir /data/6379  #指定本地数据库存放目录,rdb、aof文件也会写在这个目录
appendonly no
appendfilename appendonly.aof

# 主从
slaveof  #、设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
masterauth #当master服务设置了密码保护时,slav服务连接master的密码

# 内存连接配置
maxclients 10000
maxmemory 102400000
maxmemory-policy volatile-lru


#指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页存放,由Redis将
#访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中
vm-enabled no
vm-swap-file /tmp/redis.swap  
#虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
#将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据
都是内存存储的(Redis的索引数据 就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0
vm-max-memory 0

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

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

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

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

#指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
hash-max-zipmap-entries 64
hash-max-zipmap-value 512


#指定是否激活重置哈希,默认为开启
activerehashing yes

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


二 配置分类

1 Units 单位

  • 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit
  • 对大小写不敏感
# Redis configuration file example
# Note on units: when memory size is needed, it is possible to specify
# it in the usual form of 1k 5GB 4M and so forth:
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
# units are case insensitive so 1GB 1Gb 1gB are all the same.


2 INCLUDES 包含

通过includes包含,redis.conf 可以作为总文件,可以包含其他文件

# include .\path\to\local.conf
# include c:\path\to\other.conf


3 NETWORK 网络配置  SECURITY安全

bind 127.0.0.1  192.168.1.51 # 指定IP进行监听  绑定的ip
protected-mode yes # 保护模式  仅仅接受本机反问 不接受远程访问
port 6379 # 默认端口
#客户端设置
config get requirepass
config set requirepass "123456"  # 获得

4 GENERAL 通用

daemonize yes # 默认情况下,Redis不作为守护进程运行。需要开启的话,改为 yes
supervised no # 可通过upstart和systemd管理Redis守护进程
pidfile /var/run/redis_6379.pid # 以后台进程方式运行redis,则需要指定pid文件
loglevel notice # 日志级别。可选项有:
# debug(记录大量日志信息,适用于开发、测试阶段);
# verbose(较多日志信息);
# notice(适量日志信息,使用于生产环境);
# warning(仅有部分重要、关键信息才会被记录)
logfile "/data/7002/redis.log" # 日志文件的位置,当指定为空字符串时,为标准输出
databases 16 # 设置数据库的数目。默认的数据库是DB 0
always-show-logo yes # 是否总是显示logo


tcp-backlog  511
设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列。
在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。

注意Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值(128)
需要确认增大/proc/sys/net/core/somaxconn和/proc/sys/net/ipv4/tcp_max_syn_backlog(128)两个值来达到想要的效果

#对访问客户端的一种心跳检测,每个n秒检测一次。 单位为秒,如果设置为0,则不会进行Keepalive检测,建议设置成60 
# 对客户端进行监测 如果60s无操作 就会kill掉这个链接
tcp-keepalive 60



5 SNAPSHOPTING 快照

# 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化)
save 900 1
# 300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化)
save 300 10
# 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)
save 60 10000
stop-writes-on-bgsave-error yes # 持久化出现错误后,是否依然进行继续进行工作
rdbcompression yes # 使用压缩rdb文件 yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间
rdbchecksum yes  #是否校验rdb文件,更有利于文件的容错性,但是在保存rdb文件的时候,会有大概10%的性能损耗
dbfilename dump.rdb #dbfilenamerdb文件名称
dir ./ # dir 数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录

6 append only模式

appendonly no   # 是否以append only模式作为持久化方式,默认使用的是rdb方式持久化,这种方式在许多应用中已经足够用了
appendfilename "appendonly.aof" #  appendfilename AOF 文件名称

# appendfsync aof持久化策略的配置
appendfsync everysec 
# no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快。
# always表示每次写入都执行fsync,以保证数据同步到磁盘。
# everysec表示每秒执行一次fsync,可能会导致丢失这1s数据。


7 限制Limit

maxclients 10000 # 设置能连上redis的最大客户端连接数量
maxmemory  102400000  # redis配置的最大内存容量 <bytes>

# maxmemory-policy 内存达到上限的处理策略
maxmemory-policy noeviction  volatile-lru
#volatile-lru:利用LRU算法移除设置过期时间的key
#volatile-random:随机移除设置过过期时间的key
#volatile-ttl:移除即将过期的key,根据最近过期时间来删除(辅以TTL)
#allkeys-lru:利用LRU算法移除任何key
#allkeys-random:随机移除任何key
#noeviction:不移除任何key,只是返回一个写错误


#设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小,redis默认会检查这么多个key并选择其中LRU的那个。
#一般设置3到7的数字,数值越小样本越不准确,但性能消耗越小
maxmemory-samples


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。