Redis 配置文件
# Redis 配置文件示例# 注意单位: 当需要配置内存大小时, 可能需要指定像1k,5GB,4M等常见格式
#
# 1k=> 1000 bytes
# 1kb=> 1024 bytes
# 1m=> 1000000 bytes
# 1mb=> 1024*1024 bytes
# 1g=> 1000000000 bytes
# 1gb=> 1024*1024*1024 bytes
#
# 单位是对大小写不敏感的 1GB 1Gb1gB 是相同的。
##################################INCLUDES ###################################
# 可以在这里包含一个或多个其他的配置文件。如果你有一个适用于所有Redis服务器的标准配置模板
# 但也需要一些每个服务器自定义的设置,这个功能将很有用。被包含的配置文件也可以包含其他配置文件,
# 所以需要谨慎的使用这个功能。
#
# 注意“inclue”选项不能被admin或Redis哨兵的"CONFIGREWRITE"命令重写。
# 因为Redis总是使用最后解析的配置行最为配置指令的值, 你最好在这个文件的开头配置includes来
# 避免它在运行时重写配置。
# 如果相反你想用includes的配置覆盖原来的配置,你最好在该文件的最后使用include
#
#include /path/to/local.conf
#include /path/to/other.conf
################################GENERAL#####################################
# 默认Rdis不会作为守护进程运行。如果需要的话配置成'yes'
# 注意配置成守护进程后Redis会将进程号写入文件/var/run/redis.pid
daemonizeno
# 当以守护进程方式运行时,默认Redis会把进程ID写到 /var/run/redis.pid。你可以在这里修改路径。
pidfile/var/run/redis.pid
# 接受连接的特定端口,默认是6379
# 如果端口设置为0,Redis就不会监听TCP套接字。
port 6379
# TCPlisten() backlog.
#
# 在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。注意Linux内核默默地将这个值减小
# 到/proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_max_syn_backlog
# 两个值来达到想要的效果。
tcp-backlog511
# 默认Redis监听服务器上所有可用网络接口的连接。可以用"bind"配置指令跟一个或多个ip地址来实现
# 监听一个或多个网络接口
#
# 示例:
#
# bind192.168.1.100 10.0.0.1
# bind127.0.0.1
# 指定用来监听Unix套套接字的路径。没有默认值,所以在没有指定的情况下Redis不会监听Unix套接字
#
#unixsocket /tmp/redis.sock
#unixsocketperm 755
# 一个客户端空闲多少秒后关闭连接。(0代表禁用,永不关闭)
timeout 0
# TCPkeepalive.
#
# 如果非零,则设置SO_KEEPALIVE选项来向空闲连接的客户端发送ACK,由于以下两个原因这是很有用的:
#
# 1)能够检测无响应的对端
# 2)让该连接中间的网络设备知道这个连接还存活
#
# 在Linux上,这个指定的值(单位:秒)就是发送ACK的时间间隔。
# 注意:要关闭这个连接需要两倍的这个时间值。
# 在其他内核上这个时间间隔由内核配置决定
#
# 这个选项的一个合理值是60秒
tcp-keepalive0
# 指定服务器调试等级
# 可能值:
# debug (大量信息,对开发/测试有用)
#verbose (很多精简的有用信息,但是不像debug等级那么多)
# notice(适量的信息,基本上是你生产环境中需要的)
#warning (只有很重要/严重的信息会记录下来)
loglevelnotice
# 指明日志文件名。也可以使用"stdout"来强制让Redis把日志信息写到标准输出上。
# 注意:如果Redis以守护进程方式运行,而设置日志显示到标准输出的话,日志会发送到/dev/null
logfile""
# 要使用系统日志记录器,只要设置"syslog-enabled" 为"yes" 就可以了。
# 然后根据需要设置其他一些syslog参数就可以了。
#syslog-enabled no
# 指明syslog身份
#syslog-ident redis
# 指明syslog的设备。必须是user或LOCAL0 ~ LOCAL7之一。
#syslog-facility local0
# 设置数据库个数。默认数据库是 DB 0,
# 可以通过select (0根据LRU算法删除任何key。
#volatile-random -> 根据过期设置来随机删除key。
#allkeys->random -> 无差别随机删。
#volatile-ttl -> 根据最近过期时间来删除(辅以TTL)
#noeviction -> 谁也不删,直接在写操作时返回错误。
#
# 注意:对所有策略来说,如果Redis找不到合适的可以删除的key都会在写操作时返回一个错误。
#
# 目前为止涉及的命令:setsetnx setex append
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
# getset mset msetnx exec sort
#
# 默认值如下:
#
#maxmemory-policy volatile-lru
# LRU和最小TTL算法的实现都不是很精确,但是很接近(为了省内存),所以你可以用样本量做检测。
# 例如:默认Redis会检查3个key然后取最旧的那个,你可以通过下面的配置指令来设置样本的个数。
#
#maxmemory-samples 3
##############################APPEND ONLY MODE ###############################
# 默认情况下,Redis是异步的把数据导出到磁盘上。这种模式在很多应用里已经足够好,但Redis进程
# 出问题或断电时可能造成一段时间的写操作丢失(这取决于配置的save指令)。
#
# AOF是一种提供了更可靠的替代持久化模式,例如使用默认的数据写入文件策略(参见后面的配置)
# 在遇到像服务器断电或单写情况下Redis自身进程出问题但操作系统仍正常运行等突发事件时,Redis
# 能只丢失1秒的写操作。
#
# AOF和RDB持久化能同时启动并且不会有问题。
# 如果AOF开启,那么在启动时Redis将加载AOF文件,它更能保证数据的可靠性。
#
# 请查看http://redis.io/topics/persistence 来获取更多信息.
appendonlyno
# 纯累加文件名字(默认:"appendonly.aof")
appendfilename"appendonly.aof"
#fsync() 系统调用告诉操作系统把数据写到磁盘上,而不是等更多的数据进入输出缓冲区。
# 有些操作系统会真的把数据马上刷到磁盘上;有些则会尽快去尝试这么做。
#
# Redis支持三种不同的模式:
#
# no:不要立刻刷,只有在操作系统需要刷的时候再刷。比较快。
# always:每次写操作都立刻写入到aof文件。慢,但是最安全。
#everysec:每秒写一次。折中方案。
#
# 默认的 "everysec" 通常来说能在速度和数据安全性之间取得比较好的平衡。根据你的理解来
# 决定,如果你能放宽该配置为"no"来获取更好的性能(但如果你能忍受一些数据丢失,可以考虑使用
# 默认的快照持久化模式),或者相反,用“always”会比较慢但比everysec要更安全。
#
# 请查看下面的文章来获取更多的细节
#http://antirez.com/post/redis-persistence-demystified.html
#
# 如果不能确定,就用 "everysec"
#appendfsync always
appendfsynceverysec
#appendfsync no
# 如果AOF的同步策略设置成 "always" 或者 "everysec",并且后台的存储进程(后台存储或写入AOF
# 日志)会产生很多磁盘I/O开销。某些Linux的配置下会使Redis因为 fsync()系统调用而阻塞很久。
# 注意,目前对这个情况还没有完美修正,甚至不同线程的 fsync()会阻塞我们同步的write(2)调用。
#
# 为了缓解这个问题,可以用下面这个选项。它可以在 BGSAVE 或 BGREWRITEAOF 处理时阻止fsync()。
#
# 这就意味着如果有子进程在进行保存操作,那么Redis就处于"不可同步"的状态。
# 这实际上是说,在最差的情况下可能会丢掉30秒钟的日志数据。(默认Linux设定)
#
# 如果把这个设置成"yes"带来了延迟问题,就保持"no",这是保存持久数据的最安全的方式。
no-appendfsync-on-rewriteno
# 自动重写AOF文件
# 如果AOF日志文件增大到指定百分比,Redis能够通过 BGREWRITEAOF 自动重写AOF日志文件。
#
# 工作原理:Redis记住上次重写时AOF文件的大小(如果重启后还没有写操作,就直接用启动时的AOF大小)
#
# 这个基准大小和当前大小做比较。如果当前大小超过指定比例,就会触发重写操作。你还需要指定被重写
# 日志的最小尺寸,这样避免了达到指定百分比但尺寸仍然很小的情况还要重写。
#
# 指定百分比为0会禁用AOF自动重写特性。
auto-aof-rewrite-percentage100
auto-aof-rewrite-min-size64mb
################################LUA SCRIPTING###############################
# Lua 脚本的最大执行时间,毫秒为单位
#
# 如果达到了最大的执行时间,Redis将要记录在达到最大允许时间之后一个脚本仍然在执行,并且将
# 开始对查询进行错误响应。
#
# 当一个长时间运行的脚本超过了最大执行时间,只有 SCRIPTKILL 和SHUTDOWN NOSAVE 两个
# 命令可用。第一个可以用于停止一个还没有调用写命名的脚本。第二个是关闭服务器唯一方式,当
# 写命令已经通过脚本开始执行,并且用户不想等到脚本的自然终止。
#
# 设置成0或者负值表示不限制执行时间并且没有任何警告
lua-time-limit5000
##################################SLOW LOG ###################################
# Redis慢查询日志可以记录超过指定时间的查询。运行时间不包括各种I/O时间,例如:连接客户端,
# 发送响应数据等,而只计算命令执行的实际时间(这只是线程阻塞而无法同时为其他请求服务的命令执
# 行阶段)
#
# 你可以为慢查询日志配置两个参数:一个指明Redis的超时时间(单位为微秒)来记录超过这个时间的命令
# 另一个是慢查询日志长度。当一个新的命令被写进日志的时候,最老的那个记录从队列中移除。
#
# 下面的时间单位是微秒,所以1000000就是1秒。注意,负数时间会禁用慢查询日志,而0则会强制记录
# 所有命令。
slowlog-log-slower-than10000
# 这个长度没有限制。只是要主要会消耗内存。你可以通过 SLOWLOGRESET 来回收内存。
slowlog-max-len128
#############################Event notification ##############################
# Redis 能通知 Pub/Sub 客户端关于键空间发生的事件
# 这个功能文档位于http://redis.io/topics/keyspace-events
#
# 例如:如果键空间事件通知被开启,并且客户端对 0 号数据库的键 foo 执行 DEL 命令时,将通过
#Pub/Sub发布两条消息:
#PUBLISH __keyspace@0__:foo del
#PUBLISH __keyevent@0__:del foo
#
# 可以在下表中选择Redis要通知的事件类型。事件类型由单个字符来标识:
#
#K 键空间通知,以__keyspace@__为前缀
#E 键事件通知,以__keysevent@__为前缀
#g DEL , EXPIRE , RENAME 等类型无关的通用命令的通知, ...
#$ String命令
#l List命令
#s Set命令
#h Hash命令
#z 有序集合命令
#x 过期事件(每次key过期时生成)
#e 驱逐事件(当key在内存满了被清除时生成)
#A g$lshzxe的别名,因此”AKE”意味着所有的事件
#
#notify-keyspace-events 带一个由0到多个字符组成的字符串参数。空字符串意思是通知被禁用。
#
# 例子:启用List和通用事件通知:
#notify-keyspace-events Elg
#
# 例子2:为了获取过期key的通知订阅名字为 __keyevent@__:expired 的频道,用以下配置
#notify-keyspace-events Ex
#
# 默认所用的通知被禁用,因为用户通常不需要该特性,并且该特性会有性能损耗。
# 注意如果你不指定至少K或E之一,不会发送任何事件。
notify-keyspace-events""
###############################ADVANCED CONFIG ###############################
# 当hash只有少量的entry时,并且最大的entry所占空间没有超过指定的限制时,会用一种节省内存的
# 数据结构来编码。可以通过下面的指令来设定限制
hash-max-ziplist-entries512
hash-max-ziplist-value64
# 与hash似,数据元素较少的list,可以用另一种方式来编码从而节省大量空间。
# 这种特殊的方式只有在符合下面限制时才可以用:
list-max-ziplist-entries512
list-max-ziplist-value64
# set有一种特殊编码的情况:当set数据全是十进制64位有符号整型数字构成的字符串时。
# 下面这个配置项就是用来设置set使用这种编码来节省内存的最大长度。
set-max-intset-entries512
# 与hash和list相似,有序集合也可以用一种特别的编码方式来节省大量空间。
# 这种编码只适合长度和元素都小于下面限制的有序集合:
zset-max-ziplist-entries128
zset-max-ziplist-value64
#HyperLogLog sparse representation bytes limit. The limit includes the
# 16bytes header. When an HyperLogLog using the sparse representation crosses
# thislimit, it is converted into the dense representation.
#
# Avalue greater than 16000 is totally useless, since at that point the
# denserepresentation is more memory efficient.
#
# Thesuggested value is ~ 3000 in order to have the benefits of
# thespace efficient encoding without slowing down too much PFADD,
# whichis O(N) with the sparse encoding. The value can be raised to
# ~10000 when CPU is not a concern, but space is, and the data set is
#composed of many HyperLogLogs with cardinality in the 0 - 15000 range.
hll-sparse-max-bytes3000
# 启用哈希刷新,每100个CPU毫秒会拿出1个毫秒来刷新Redis的主哈希表(顶级键值映射表)。
# redis所用的哈希表实现(见dict.c)采用延迟哈希刷新机制:你对一个哈希表操作越多,哈希刷新
# 操作就越频繁;反之,如果服务器是空闲的,那么哈希刷新就不会完成,哈希表就会占用更多的一些
# 内存而已。
#
# 默认是每秒钟进行10次哈希表刷新,用来刷新字典,然后尽快释放内存。
#
# 建议:
# 如果你对延迟比较在意,不能够接受Redis时不时的对请求有2毫秒的延迟的话,就用
#"activerehashing no",如果不太在意延迟而希望尽快释放内存就设置"activerehashingyes"
activerehashingyes
# 客户端的输出缓冲区的限制,可用于强制断开那些因为某种原因从服务器读取数据的速度不够快的客户端,
# (一个常见的原因是一个发布/订阅客户端消费消息的速度无法赶上生产它们的速度)
#
# 可以对三种不同的客户端设置不同的限制:
# normal-> 正常客户端
# slave-> slave和 MONITOR客户端
# pubsub-> 至少订阅了一个pubsubchannel或pattern的客户端
#
# 下面是每个client-output-buffer-limit语法:
#client-output-buffer-limit
# 一旦达到硬限制客户端会立即被断开,或者达到软限制并持续达到指定的秒数(连续的)。
# 例如,如果硬限制为32兆字节和软限制为16兆字节/10秒,客户端将会立即断开
# 如果输出缓冲区的大小达到32兆字节,或客户端达到16兆字节并连续超过了限制10秒,就将断开连接。
#
# 默认normal客户端不做限制,因为他们在不主动请求时不接收数据(以推的方式),只有异步客户端
# 可能会出现请求数据的速度比它可以读取的速度快的场景。
#
# pubsub和slave客户端会有一个默认值,因为订阅者和slaves以推的方式来接收数据
#
# 把硬限制和软限制都设置为0来禁用该功能
client-output-buffer-limitnormal 000
client-output-buffer-limitslave 256mb64mb60
client-output-buffer-limitpubsub 32mb8mb60
# Redis调用内部函数来执行许多后台任务,如关闭客户端超时的连接,清除未被请求过的过期Key等等。
#
# 不是所有的任务都以相同的频率执行,但Redis依照指定的“hz”值来执行检查任务。
#
# 默认情况下,“hz”的被设定为10。提高该值将在Redis空闲时使用更多的CPU时,但同时当有多个key
# 同时到期会使Redis的反应更灵敏,以及超时可以更精确地处理。
#
# 范围是1到500之间,但是值超过100通常不是一个好主意。
# 大多数用户应该使用10这个默认值,只有在非常低的延迟要求时有必要提高到100。
hz 10
# 当一个子进程重写AOF文件时,如果启用下面的选项,则文件每生成32M数据会被同步。为了增量式的
# 写入硬盘并且避免大的延迟高峰这个指令是非常有用的
aof-rewrite-incremental-fsyncyes
页:
[1]