# 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 1Gb 1GB 1gB
# daemonize no 默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes
daemonize
yes
默认参数
代码如下 | 复制代码 |
361way@ubuntu ~$ egrep -v '(^#|^$)' redis.conf ####################基本配置部分########################### daemonize yes #是否在后台运行 pidfile /var/run/redis/redis-server.pid #运行时redis的pid文件存放的路径 port 6379 #redis监听的端口 bind 127.0.0.1 #监听地址 timeout 0 #设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么server端关闭该连接。0为永不超时 tcp-keepalive 0 loglevel notice logfile /var/log/redis/redis-server.log #日志文件存放的路径 databases 16 #################Snapshotting配置########################## save 900 1 #900秒之内有1个keys发生变化时 save 300 10 #300秒之内有10个keys发生变化时 save 60 10000 #60秒之内有1万个keys发生变化时 stop-writes-on-bgsave-error yes #是否启用停止写在save出错的时候 rdbcompression yes #是否启用rdb文件压缩手段,默认为yes 。压缩需要额外的cpu开支,不过这能够有效的减小rdb文件的大小,有利于存储/备份/传输/数据恢复。 rdbchecksum yes #是否对rdb文件使用CRC64校验和,默认为”yes”,那么每个rdb文件内容的末尾都会追加CRC校验和。 #对于其他第三方校验工具,可以很方便的检测文件的完整性 。 dbfilename dump.rdb #指定rdb文件的名称 dir /var/lib/redis #指定rdb/AOF文件的目录位置,只能为文件夹不能为文件 ####################### Replication ########################## slave-serve-stale-data yes #如果当前server是slave,那么当slave与master失去通讯时,是否继续为客户端提供服务,”yes”表示继续,”no”表示终止。 slave-read-only yes repl-disable-tcp-nodelay no slave-priority 100 appendonly no appendfilename "appendonly.aof" #更新日志文件名,默认值为appendonly.aof appendfsync everysec #no表示让操作系统(OS)进行数据缓存同步到磁盘(执行快),always表示每次更新操作后调用fsync()将数据写到磁盘(最安全),everysec表示每秒同步一次。 no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb #如果达到64M的百分之百就停止写入 lua-time-limit 5000 #执行一个LUA脚本时的最大时间,防止死循环等等,设置为0是没有限制,单位为秒 slowlog-log-slower-than 10000 slowlog-max-len 128 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 #redis 2.0后引入了 hash 数据结构,hash 中包含超过指定元素个数并且最大的元素当没有超过临界时,hash 将以zipmap来存储。 #zipmap又称为 small hash,可大大减少内存的使用 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 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 hz 10 #一个任务可以使用的cpu数目 aof-rewrite-incremental-fsync yes tcp-keepalive:指定TCP连接是否为长连接,”侦探”信号由server端维护,长连接将会额外的增加server端的开支 #默认为0.表示禁用,非0值表示开启”长连接”;”侦探”信号的发送间隔将有linux系统决定。在多次”侦探”后,如果对等端仍不回复,将会关闭连接,否则连接将会被保持开启。 |
loglevel:server日志级别,合法值:debug,verbose,notice,warning 默认为notice 。
debug适合开发环境,客户端操作信息都会输出日志
verbose输出一些相对有用的信息,目前效果不明
notice适合生产环境
warning异常信息
databases:设定redis所允许的最大”db簇”的个数,默认为16个簇。客户端可以通过”select”指令指定需要使用的”db簇”索引号,默认为0。 redis的顶层数据结构中,所有K-V都潜在的包括了”db簇”索引号,任何一个key都将隶属于一个”db”。 任何对数据的检索,只会覆盖指定的”db”;例如数据被插入到”db10″中,那么在”db 1″中去get,将会返回null。 对数据归类到不同的db簇中,可以帮助我们实现一些特定的需求,比如根据不同客户端连接,来指定不同的db索引号。
save <seconds> <changes>:在多少秒期间至少多少个变更操作”触发snapshot,snapshot最终将生成新的dump.rdb文件 。 设置 Redis 进行数据库镜像的频率。保存数据到disk的策略 。save " "用来禁用snapshot功能。
appendonly:是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中,默认值为no。
开启append only 模式后,redis 将每一次写操作请求都追加到appendonly.aof 文件中,redis重新启动时,会从该文件恢复出之前的状态。但可能会造成 appendonly.aof 文件过大,所以redis支持BGREWRITEAOF 指令,对appendonly.aof重新整理。
其他参数:
maxclients 10000 :客户端链接的最大数量
slaveof <master ip> <master port>: 将当前server做为slave,并为其指定master信息
requirepass 密码:当前server的授权密码
masterauth <master password> :以认证的方式连接到master。 如果master中使用了”密码保护”,slave必须交付正确的授权密码,才能连接成功。此配置项中<master password>值需要和master机器的”requirepass”保持一致。
vm-enabled yes :redis 是一个内存数据库,当内存满时,无法接收新的写请求,所以在redis2.0后,提供了虚拟内存的支持。但需要注意的是redis 所有的key都会放在内存中,在内存不够时,只把value 值放入交换区中。虽然使用虚拟内存,但性能基本不受影响,需要注意的是要把vm-max-memory设置到足够来放下所有的key。
vm-swap-file /tmp/redis.swap :设置虚拟内存的交换文件路径,不可多个Redis实例共享
vm-max-memory 0 :设置开启虚拟内存后,redis将使用的最大物理内存大小, 默认为0,redis将把他所有能放到交换文件的都放到交换文件中,以尽量少的使用物理内存。即当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。在生产环境下,需要根据实际情况设置该值,最好不要使用默认的 0 。
vm-page-size 32:设置虚拟内存的页大小。如果 value 值比较大,如要在 value 中放置博客、新闻之类的所有文章内容,就设大一点。
vm-pages 134217728:设置交换文件的总的 page 数量。注意page table信息是放在物理内存中,每8个page 就会占据RAM中的 1 个 byte,总的虚拟内存大小 = vm-page-size * vm-pages 。
vm-max-threads 4:设置 VM IO 同时使用的线程数量。
activerehashing yes:是否重置Hash表,设置成yes后redis将每100毫秒使用1毫秒CPU时间来对redis的hash表重新hash,可降低内存的使用。当使用场景有较为严格的实时性需求,不能接受Redis时不时的对请求有2毫秒的延迟的话,把这项配置为no。如果没有这么严格的实时性要求,可以设置为 yes,以便能够尽可能快的释放内存。
slave-serve-stale-data yes:如果当前server是slave,那么当slave与master失去通讯时,是否继续为客户端提供服务,”yes”表示继续,”no”表示终止.
在”yes”情况下,slave继续向客户端提供只读服务,有可能此时的数据已经过期.
在”no”情况下,任何向此server发送的数据请求服务(包括客户端和此server的slave)都将被告知”error”