Redis常用文件配置

对Redis的redis.windows.conf文件进行配置详情:

在这里插入图片描述

#是否在后台运行;no:不是后台运行
daemonize yes

#是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。
protected-mode yes

#redis的进程文件
pidfile/var/run/redis/redis-server.pid

#redis监听的端口号。
port6379

#指定redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求#bind127.0.0.1
#bind0.0.0.0

#配置unixsocket来让redis支持监听本地连接。
#unixsocket/var/run/redis/redis.sock

#配置unixsocket使用文件的权限
#unixsocketperm 700

#此参数为设置客户端空闲超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,不能小于0。
timeout 0

#此参数为设置客户端空闲超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,不能小于0。
timeout 0

#tcpkeepalive参数。如果设置不为0,就使用配置tcp的SO_KEEPALIVE值,使用keepalive有两个好处:检测挂掉的对端。降低中间设备出问题而导致网络看似连接却已经与对端端口的问题。在Linux内核中,设置了keepalive,redis会定时给对端发送ack。检测到对端关闭需要两倍的设置值。
tcp-keepalive 0

#指定了服务端日志的级别。级别包括:debug(很多信息,方便开发、测试),verbose(许多有用的信
息,但是没有debug级别信息多),notice(适当的日志级别,适合生产环境),warn(只有非常重要的信息)
loglevel notice

#指定了记录日志的文件。空字符串的话,日志会打印到标准输出设备。后台运行的redis标准输出是/dev/null。
logfile/var/log/redis/redis-server.log

#是否打开记录syslog功能
#syslog-enabled no

#syslog的标识符。
#syslog-ident redis

#日志的来源、设备
#syslog-facility local0

#数据库的数量,默认使用的数据库是DB0。可以通过SELECT命令选择一个db 
databases16

#redis是基于内存的数据库,可以通过设置该值定期写入磁盘。
#注释掉“save”这一行配置项就可以让保存数据库功能失效
#900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化)
#300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化)
#60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)
save 900 1
save 300 10
save 60 10000

#当RDB持久化出现错误后,是否依然进行继续进行工作,yes:不能进行工作,no:可以继续进行工作,可以通过info中的rdb_last_bgsave_status了解RDB持久化是否有错误
stop-writes-on-bgsave-error yes

#使用压缩rdb文件,rdb文件压缩使用LZF压缩算法,yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间
rdbcompression yes

#是否校验rdb文件。从rdb格式的第五个版本开始,在rdb文件的末尾会带上CRC64的校验和。这跟有利于文件的容错性,但是在保存rdb文件的时候,会有大概10%的性能损耗,所以如果你追求高性能,可以关闭该配置。
rdbchecksum yes

#rdb文件的名称
dbfilenamedump.rdb

#数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录
dir/data

############################# REPLICATION(主从复制) #############################
   
# 作为从服务器,默认情况下是只读的(yes),可以修改成NO,用于写(不建议)。
slave-read-only yes
 
############################## SECURITY(安全) ################################
 
# 配置redis连接认证密码
# 如果配置了,则客户端在连接Redis时需通过auth <password>命令提供密码(默认关闭)
# 注意:因为redis太快了,每秒可认证15w次密码,简单的很容易被攻破,最好使用一个更复杂的密码
requirepass foobared
 
# 设置成一个空的值,可以禁止一个命令
# rename-command CONFIG ""

################################ LIMITS(限制)#################################
 
# 设置连上redis的最大客户端连接数量。默认10000。设置0表示不作限制。
# 超出此数,Redis会关闭新的连接并向客户端返回max Number of clients reached错误
# redis不区分连接是客户端连接还是内部打开文件或和slave连接等,故maxclients最小建议设置到32
# maxclients 10000
 
 
# 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中
# 当内存满了,配合maxmemory-policy策略进行处理
# 当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。
# maxmemory <bytes>
 
 
# 内存容量超过maxmemory后的处理策略如下几种策略:
#  1) volatile-lru:只对设置过期时间的key进行LRU算法删除(默认)
#  2) allkeys-lru:删除不经常使用的key
#  3) volatile-random:随机删除即将过期的key
#  4) allkeys->random:随机删除一个key
#  5) volatile-ttl:删除即将过期的的key
#  6) noeviction:不移除任何key,对于写命令返回报错
# maxmemory-policy volatile-lru
 
#
 
# lru检测的样本数。
# 使用lru或ttl淘汰算法,从需要淘汰的列表中随机选择sample个key,选出闲置时间最长的key移除。
# maxmemory-samples 3

 
########################## APPEND ONLY MODE (附加模式) ###########################
 
 
# AOF持久化,指定是否在每次更新操作后进行日志记录,默认redis是异步(快照)的把数据写入本地磁盘
# redis默认使用的是rdb方式持久化,此方式在许多应用中已足够用。
# 但redis如果中途宕机,会导致可能有几分钟的数据丢失,按照上面save条件来策略进行持久化
# Append Only File是另一种持久化方式,可提供更好的持久化特性。
# Redis会把每次写入的数据在接收后都写入appendonly.aof 文件
# 每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
appendonly no
 
 
# 指定aof文件名,默认为appendonly.aof
# appendfilename appendonly.aof
 
 
 
# AOF持久化三种同步策略:
#   1) no:不同步(不执行fsync),数据不会持久化
#   2) always:每次有数据发生变化时都会写入appendonly.aof(慢,安全)
#   3) everysec:每秒同步一次到appendonly.aof,可能会导致丢失这1s数据(折中选择,默认值)
appendfsync everysec
 
 
 
# 在AOF重写或写入rdb文件时,会执行大量IO
# 对于everysec和always的AOF模式来说,执行fsync会造成阻塞过长时间
# yes:表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入
# 默认为no,建议yes。Linux的默认fsync策略是30秒。可能丢失30秒数据。
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文件的数据被载入内存。重启可能发生在redis所在的主机操作系统宕机后,尤其在ext4文件系统没有加上data=ordered选项(redis宕机或者异常终止不会造成尾部不完整现象。)出现这种现象,可以选择让redis退出,或者导入尽可能多的数据。如果选择的是yes,当截断的aof文件被导入的时候,会自动发布一个log给客户端然后load。如果是no,用户必须手动redis-check-aof修复AOF文件才可以。
aof-load-truncated yes
 

############################ LUA SCRIPTING(LUA 脚本) ###########################
 
# 如果达到最大时间限制(毫秒),redis会记个log,然后返回error。当一个脚本超过了最大时限。
# 只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。第一个可以杀没有调write命令的东西。
# 要是已经调用了write,只能用第二个命令杀。
lua-time-limit 5000
 

############################ REDIS CLUSTER(Redis集群) ###########################
 
# 集群开关,默认是不开启集群模式。
# cluster-enabled yes
 
 
# 集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。
# 这个文件无需手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,# 请确保与实例运行的系统中配置文件名称不冲突
# cluster-config-file nodes-6379.conf
 
 
# 节点互连超时的阀值。集群节点超时毫秒数
# cluster-node-timeout 15000
 
 
# 在进行故障转移时,全部slave会请求申请为master,有些slave可能与master断开连接一段时间了,
# 导致数据过于陈旧,这种slave不该提升为master。该参数判断slave与master断线的时间是否过长。
# 判断方法是:比较slave断开连接的时间和
#   (node-timeout * slave-validity-factor) + repl-ping-slave-period
# 如果节点超时时间为三十秒, 并且slave-validity-factor为10
# 假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave将不会尝试进行故障转移 
# cluster-slave-validity-factor 10
 
 
# master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数若被设为2,
# 那么只有当一个主节点拥有2 个可工作的从节点时,它的一个从节点会尝试迁移。
# cluster-migration-barrier 1
 
 
# 默认情况下,集群全部的slot有节点负责,集群状态才为ok,才能提供服务。
# 设置为no,可以在slot没有全部分配的时候提供服务。
# 不建议打开该配置,这样会造成分区时,小分区的master一直在接受写请求,而造成很长时间数据不一致。
# cluster-require-full-coverage yes

 
############################## SLOW LOG (慢日志)#############################
 
# slog log是用来记录redis运行中执行比较慢的命令耗时。
# 当命令的执行超过了指定时间,就记录在slow log中,slog log保存在内存中,所以没有IO操作。
# 执行时间比slowlog-log-slower-than大的请求记录到slowlog里面,单位是微秒
# 所以1000000就是1秒。注意,负数时间会禁用慢查询日志,而0则会强制记录所有命令。
slowlog-log-slower-than 10000
 
 
# 慢查询日志长度。当一个新的命令被写进日志时,最老的那个记录会被删掉。
# 这个长度没有限制。只要有足够的内存就行。你可以通过 SLOWLOG RESET 来释放内存。
slowlog-max-len 1024

 
############################ VIRTUAL MEMORY( 虚拟内存) ###########################
 

# 指定是否启用虚拟内存机制,默认no,
# VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上(内存占用多,最好关闭)
# 访问多的页面由磁盘自动换出到内存中
vm-enabled no

# 虚拟内存文件位置,默认值为/tmp/redis.swap,不可多个Redis实例共享
# Redis交换文件最好的存储是SSD(固态硬盘)
vm-swap-file /tmp/redis.swap
 
 
# redis使用的最大内存上限,保护redis不会因过多使用物理内存影响性能
# 将大于vm-max-memory的数据存入虚拟内存,但无论设置多少,所有索引数据都是内存存储的(即keys)
# 当vm-max-memory设置为0时,所有value都存在于磁盘。默认值为0
vm-max-memory 0
 
 
# Redis swap文件分成了很多的page,一个对象可以保存在多个page上面
# 但一个page上不能被多个对象共享,vm-page-size是要根据存储的数据大小来设定的。
# 建议:
#    如果存储很多小对象,page大小设置为32或64字节;
#    如果存储很大的对象,则可以使用更大的page,如果不确定,就使用默认值
# 每个页面的大小设置为32字节
vm-page-size 32
 
 
# 设置swap文件中页面数量
# 由于页表(一种表示页面空闲或使用的bitmap)是存放在内存中的,在磁盘上每8个页将消耗1byte的内存
# swap空间总容量为 vm-page-size * vm-pages
vm-pages 134217728
 
 
 
# 设置访问swap文件的线程数,最后不要超过机器的核数
# 如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟,默认值为4
vm-max-threads 4
 
 
 
 
############################ ADVANCED CONFIG(高级配置) ###########################
 
 
# 哈希表中元素(条目)总个数<=512个,采用ziplist,否则使用hash
hash-max-zipmap-entries 512   
 
# 哈希表中每个value的长度<=64字节时,采用ziplist,否则使用hash
hash-max-zipmap-value 64     
# list元素<=512个,采用ziplist,否则用linkedlist
list-max-ziplist-entries 512
# list内某个元素大小<=64字节时,采用ziplist,否则用linkedlist 
list-max-ziplist-value 64 
# set内元素数量<=512个,且都是整数型值,采用inset,否则使用hashtable
set-max-intset-entries 512
# zset内元素数量<=128个,采用ziplist,否则用skiplist跳表 
zset-max-ziplist-entries 128

# zset内某个元素大小<=64字节时,采用ziplist,否则用skiplist跳表 
zset-max-ziplist-value 64
 
# value大小 <= hll-sparse-max-bytes使用稀疏数据结构(sparse)
# value大小 > hll-sparse-max-bytes使用稠密的数据结构(dense)。
# 一个比16000大的value是几乎没用的,建议的value大概为3000。
# 如果对CPU要求不高,对空间要求较高的,建议设置到10000左右。
hll-sparse-max-bytes 3000
 
# redis执行任务的频率为1s除以hz。
hz 10

# 在AOF重写时,如果打开了aof-rewrite-incremental-fsync开关,系统会每32MB执行一次fsync。
# 这对于把文件写入磁盘是有帮助的,可以避免过大的延迟峰值。
aof-rewrite-incremental-fsync yes
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值