zoukankan      html  css  js  c++  java
  • redis配置文件详解

     注意:如果想在一台机器上不同端口启动多个redis服务,就把后面的配置文件修改下,后面加上配置文件路径启动即可。端口,和数据,日志等改下。

    说几个重要的。

    253行  dbfilename  : 存放数据的地方。 如:/usr/local/redis/6380/data/dump.rdb

    171行  logfile          :存放日志的地方      如:"/redis2.8/redis.log"

      1 # Redis 配置文件
      2 
      3 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写)
      4 #
      5 # 1k =>
      6 1000 bytes
      7 # 1kb => 1024 bytes
      8 # 1m => 1000000 bytes
      9 # 1mb =>
     10 1024*1024 bytes
     11 # 1g => 1000000000 bytes
     12 # 1gb => 1024*1024*1024
     13 bytes
     14 #
     15 # 内存配置大小写是一样的.比如 1gb 1Gb 1GB 1gB
     16 
     17 # daemonize no 默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes
     18 daemonize
     19 yes
     20 
     21 # 当redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址。
     22 #
     23 当运行多个redis服务时,需要指定不同的pid文件和端口
     24 pidfile /var/run/redis.pid
     25 
     26 # 指定redis运行的端口,默认是6379
     27 port 6379
     28 
     29 # 指定redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求,
     30 # 在生产环境中最好设置该项
     31 # bind
     32 127.0.0.1
     33 
     34 # Specify the path for the unix socket that will be used to listen for
     35 #
     36 incoming connections. There is no default, so Redis will not listen
     37 # on a
     38 unix socket when not specified.
     39 #
     40 # unixsocket /tmp/redis.sock
     41 #
     42 unixsocketperm 755
     43 
     44 # 设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接
     45 # 0是关闭此设置
     46 timeout
     47 0
     48 
     49 # 指定日志记录级别
     50 # Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
     51 #
     52 debug  记录很多信息,用于开发和测试
     53 # varbose 有用的信息,不像debug会记录那么多
     54 #
     55 notice 普通的verbose,常用于生产环境
     56 # warning 只有非常重要或者严重的信息会记录到日志
     57 loglevel
     58 debug
     59 
     60 # 配置log文件地址
     61 # 默认值为stdout,标准输出,若后台模式会输出到/dev/null
     62 #logfile
     63 stdout
     64 logfile /var/log/redis/redis.log
     65 
     66 # To enable logging to the system logger, just set 'syslog-enabled' to
     67 yes,
     68 # and optionally update the other syslog parameters to suit your
     69 needs.
     70 # syslog-enabled no
     71 
     72 # Specify the syslog identity.
     73 # syslog-ident redis
     74 
     75 # Specify the syslog facility.  Must be USER or between LOCAL0-LOCAL7.
     76 #
     77 syslog-facility local0
     78 
     79 # 可用数据库数
     80 # 默认值为16,默认数据库为0,数据库范围在0-(database-1)之间
     81 databases 16
     82 
     83 ################################ 快照  
     84 #################################
     85 #
     86 # 保存数据到磁盘,格式如下:
     87 #
     88 #   save
     89 <seconds> <changes>
     90 #
     91 #   
     92 指出在多长时间内,有多少次更新操作,就将数据同步到数据文件rdb。
     93 #   相当于条件触发抓取快照,这个可以多个条件配合
     94 #   
     95 #   
     96 比如默认配置文件中的设置,就设置了三个条件
     97 #
     98 #   save 900 1  900秒内至少有1个key被改变
     99 #   save 300
    100 10  300秒内至少有300个key被改变
    101 #   save 60 10000  60秒内至少有10000个key被改变
    102 
    103 save 900 1
    104 save 300 10
    105 save 60 10000
    106 
    107 # 存储至本地数据库时(持久化到rdb文件)是否压缩数据,默认为yes
    108 rdbcompression yes
    109 
    110 # 本地持久化数据库文件名,默认值为dump.rdb
    111 dbfilename dump.rdb
    112 
    113 # 工作目录
    114 #
    115 # 数据库镜像备份的文件放置的路径。
    116 #
    117 这里的路径跟文件名要分开配置是因为redis在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,
    118 #
    119 再把该该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中。
    120 #
    121 #
    122 AOF文件也会存放在这个目录下面
    123 #
    124 # 注意这里必须制定一个目录而不是文件
    125 dir ./
    126 
    127 ################################# 复制
    128 #################################
    129 
    130 # 主从复制. 设置该数据库为其他数据库的从数据库.
    131 #
    132 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
    133 #
    134 # slaveof
    135 <masterip> <masterport>
    136 
    137 # 当master服务设置了密码保护时(用requirepass制定的密码)
    138 # slav服务连接master的密码
    139 #
    140 #
    141 masterauth <master-password>
    142 
    143 
    144 # 当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:
    145 #
    146 # 1)
    147 如果slave-serve-stale-data设置为yes(默认设置),从库会继续相应客户端的请求
    148 #
    149 # 2)
    150 如果slave-serve-stale-data是指为no,出去INFO和SLAVOF命令之外的任何请求都会返回一个
    151 #    错误"SYNC with
    152 master in progress"
    153 #
    154 slave-serve-stale-data yes
    155 
    156 # 从库会按照一个时间间隔向主库发送PINGs.可以通过repl-ping-slave-period设置这个时间间隔,默认是10秒
    157 #
    158 #
    159 repl-ping-slave-period 10
    160 
    161 # repl-timeout 设置主库批量数据传输时间或者ping回复时间间隔,默认值是60秒
    162 #
    163 一定要确保repl-timeout大于repl-ping-slave-period
    164 # repl-timeout 60
    165 
    166 ################################## 安全
    167 ###################################
    168 
    169 # 设置客户端连接后进行任何其他指定前需要使用的密码。
    170 #
    171 警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解
    172 #
    173 #
    174 requirepass foobared
    175 
    176 # 命令重命名.
    177 #
    178 # 在一个共享环境下可以重命名相对危险的命令。比如把CONFIG重名为一个不容易猜测的字符。
    179 #
    180 #
    181 举例:
    182 #
    183 # rename-command CONFIG
    184 b840fc02d524045429941cc15f59e41cb7be6c52
    185 #
    186 #
    187 如果想删除一个命令,直接把它重命名为一个空字符""即可,如下:
    188 #
    189 # rename-command CONFIG ""
    190 
    191 ################################### 约束
    192 ####################################
    193 
    194 # 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,
    195 # 如果设置
    196 maxclients 0,表示不作限制。
    197 # 当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients
    198 reached错误信息
    199 #
    200 # maxclients 128
    201 
    202 # 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key
    203 #
    204 Redis同时也会移除空的list对象
    205 #
    206 #
    207 当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作
    208 #
    209 #
    210 注意:Redis新的vm机制,会把Key存放内存,Value会存放在swap区
    211 #
    212 #
    213 maxmemory的设置比较适合于把redis当作于类似memcached的缓存来使用,而不适合当做一个真实的DB。
    214 #
    215 当把Redis当做一个真实的数据库使用的时候,内存使用将是一个很大的开销
    216 # maxmemory <bytes>
    217 
    218 # 当内存达到最大值的时候Redis会选择删除哪些数据?有五种方式可供选择
    219 #
    220 # volatile-lru ->
    221 利用LRU算法移除设置过过期时间的key (LRU:最近使用 Least Recently Used )
    222 # allkeys-lru ->
    223 利用LRU算法移除任何key
    224 # volatile-random -> 移除设置过过期时间的随机key
    225 #
    226 allkeys->random -> remove a random key, any key
    227 # volatile-ttl ->
    228 移除即将过期的key(minor TTL)
    229 # noeviction -> 不移除任何可以,只是返回一个写错误
    230 #
    231 #
    232 注意:对于上面的策略,如果没有合适的key可以移除,当写的时候Redis会返回一个错误
    233 #
    234 #       写命令包括: set setnx
    235 setex append
    236 #       incr decr rpush lpush rpushx lpushx linsert lset
    237 rpoplpush sadd
    238 #       sinter sinterstore sunion sunionstore sdiff sdiffstore
    239 zadd zincrby
    240 #       zunionstore zinterstore hset hsetnx hmset hincrby incrby
    241 decrby
    242 #       getset mset msetnx exec sort
    243 #
    244 # 默认是:
    245 #
    246 #
    247 maxmemory-policy volatile-lru
    248 
    249 # LRU 和 minimal TTL 算法都不是精准的算法,但是相对精确的算法(为了节省内存),随意你可以选择样本大小进行检测。
    250 #
    251 Redis默认的灰选择3个样本进行检测,你可以通过maxmemory-samples进行设置
    252 #
    253 # maxmemory-samples
    254 3
    255 
    256 ############################## AOF ###############################
    257 
    258 
    259 #
    260 默认情况下,redis会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁,如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失。
    261 #
    262 所以redis提供了另外一种更加高效的数据库备份及灾难恢复方式。
    263 # 开启append
    264 only模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态。
    265 #
    266 但是这样会造成appendonly.aof文件过大,所以redis还支持了BGREWRITEAOF指令,对appendonly.aof 进行重新整理。
    267 #
    268 你可以同时开启asynchronous dumps 和 AOF
    269 
    270 appendonly no
    271 
    272 # AOF文件名称 (默认: "appendonly.aof")
    273 # appendfilename appendonly.aof
    274 
    275 # Redis支持三种同步AOF文件的策略:
    276 #
    277 # no: 不进行同步,系统去操作 . Faster.
    278 # always:
    279 always表示每次有写操作都进行同步. Slow, Safest.
    280 # everysec: 表示对写操作进行累积,每秒同步一次.
    281 Compromise.
    282 #
    283 # 默认是"everysec",按照速度和安全折中这是最好的。
    284 #
    285 如果想让Redis能更高效的运行,你也可以设置为"no",让操作系统决定什么时候去执行
    286 #
    287 或者相反想让数据更安全你也可以设置为"always"
    288 #
    289 # 如果不确定就用 "everysec".
    290 
    291 # appendfsync always
    292 appendfsync everysec
    293 # appendfsync no
    294 
    295 # AOF策略设置为always或者everysec时,后台处理进程(后台保存或者AOF日志重写)会执行大量的I/O操作
    296 #
    297 在某些Linux配置中会阻止过长的fsync()请求。注意现在没有任何修复,即使fsync在另外一个线程进行处理
    298 #
    299 #
    300 为了减缓这个问题,可以设置下面这个参数no-appendfsync-on-rewrite
    301 #
    302 # This means that while
    303 another child is saving the durability of Redis is
    304 # the same as "appendfsync
    305 none", that in pratical terms means that it is
    306 # possible to lost up to 30
    307 seconds of log in the worst scenario (with the
    308 # default Linux
    309 settings).
    310 #
    311 # If you have latency problems turn this to "yes". Otherwise
    312 leave it as
    313 # "no" that is the safest pick from the point of view of
    314 durability.
    315 no-appendfsync-on-rewrite no
    316 
    317 # Automatic rewrite of the append only file.
    318 # AOF 自动重写
    319 #
    320 当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写
    321 #
    322 #
    323 它是这样工作的:Redis会记住上次进行些日志后文件的大小(如果从开机以来还没进行过重写,那日子大小在开机的时候确定)
    324 #
    325 #
    326 基础大小会同现在的大小进行比较。如果现在的大小比基础大小大制定的百分比,重写功能将启动
    327 #
    328 同时需要指定一个最小大小用于AOF重写,这个用于阻止即使文件很小但是增长幅度很大也去重写AOF文件的情况
    329 # 设置 percentage
    330 为0就关闭这个特性
    331 
    332 auto-aof-rewrite-percentage 100
    333 auto-aof-rewrite-min-size 64mb
    334 
    335 ################################## SLOW LOG
    336 ###################################
    337 
    338 # Redis Slow Log 记录超过特定执行时间的命令。执行时间不包括I/O计算比如连接客户端,返回结果等,只是命令执行时间
    339 #
    340 #
    341 可以通过两个参数设置slow log:一个是告诉Redis执行超过多少时间被记录的参数slowlog-log-slower-than(微妙),
    342 #
    343 另一个是slow log 的长度。当一个新命令被记录的时候最早的命令将被从队列中移除
    344 
    345 # 下面的时间以微妙微单位,因此1000000代表一分钟。
    346 #
    347 注意制定一个负数将关闭慢日志,而设置为0将强制每个命令都会记录
    348 slowlog-log-slower-than 10000
    349 
    350 # 对日志长度没有限制,只是要注意它会消耗内存
    351 # 可以通过 SLOWLOG RESET
    352 回收被慢日志消耗的内存
    353 slowlog-max-len 1024
    354 
    355 ################################ VM ###############################
    356 
    357 ### WARNING! Virtual Memory is deprecated in Redis 2.4
    358 ### The use of
    359 Virtual Memory is strongly discouraged.
    360 
    361 # Virtual Memory allows Redis to work with datasets bigger than the
    362 actual
    363 # amount of RAM needed to hold the whole dataset in memory.
    364 # In
    365 order to do so very used keys are taken in memory while the other keys
    366 # are
    367 swapped into a swap file, similarly to what operating systems do
    368 # with
    369 memory pages.
    370 #
    371 # To enable VM just set 'vm-enabled' to yes, and set the
    372 following three
    373 # VM parameters accordingly to your needs.
    374 
    375 vm-enabled no
    376 # vm-enabled yes
    377 
    378 # This is the path of the Redis swap file. As you can guess, swap
    379 files
    380 # can't be shared by different Redis instances, so make sure to use a
    381 swap
    382 # file for every redis process you are running. Redis will complain if
    383 the
    384 # swap file is already in use.
    385 #
    386 # The best kind of storage for the
    387 Redis swap file (that's accessed at random)
    388 # is a Solid State Disk
    389 (SSD).
    390 #
    391 # *** WARNING *** if you are using a shared hosting the default
    392 of putting
    393 # the swap file under /tmp is not secure. Create a dir with access
    394 granted
    395 # only to Redis user and configure Redis to create the swap file
    396 there.
    397 vm-swap-file /tmp/redis.swap
    398 
    399 # vm-max-memory configures the VM to use at max the specified amount
    400 of
    401 # RAM. Everything that deos not fit will be swapped on disk *if* possible,
    402 that
    403 # is, if there is still enough contiguous space in the swap
    404 file.
    405 #
    406 # With vm-max-memory 0 the system will swap everything it can. Not
    407 a good
    408 # default, just specify the max amount of RAM you can in bytes, but
    409 it's
    410 # better to leave some margin. For instance specify an amount of
    411 RAM
    412 # that's more or less between 60 and 80% of your free
    413 RAM.
    414 vm-max-memory 0
    415 
    416 # Redis swap files is split into pages. An object can be saved using
    417 multiple
    418 # contiguous pages, but pages can't be shared between different
    419 objects.
    420 # So if your page is too big, small objects swapped out on disk will
    421 waste
    422 # a lot of space. If you page is too small, there is less space in the
    423 swap
    424 # file (assuming you configured the same number of total swap file
    425 pages).
    426 #
    427 # If you use a lot of small objects, use a page size of 64 or 32
    428 bytes.
    429 # If you use a lot of big objects, use a bigger page size.
    430 # If
    431 unsure, use the default :)
    432 vm-page-size 32
    433 
    434 # Number of total memory pages in the swap file.
    435 # Given that the page
    436 table (a bitmap of free/used pages) is taken in memory,
    437 # every 8 pages on
    438 disk will consume 1 byte of RAM.
    439 #
    440 # The total swap size is vm-page-size *
    441 vm-pages
    442 #
    443 # With the default of 32-bytes memory pages and 134217728 pages
    444 Redis will
    445 # use a 4 GB swap file, that will use 16 MB of RAM for the page
    446 table.
    447 #
    448 # It's better to use the smallest acceptable value for your
    449 application,
    450 # but the default is large in order to work in most
    451 conditions.
    452 vm-pages 134217728
    453 
    454 # Max number of VM I/O threads running at the same time.
    455 # This threads
    456 are used to read/write data from/to swap file, since they
    457 # also encode and
    458 decode objects from disk to memory or the reverse, a bigger
    459 # number of
    460 threads can help with big objects even if they can't help with
    461 # I/O itself
    462 as the physical device may not be able to couple with many
    463 # reads/writes
    464 operations at the same time.
    465 #
    466 # The special value of 0 turn off threaded
    467 I/O and enables the blocking
    468 # Virtual Memory
    469 implementation.
    470 vm-max-threads 4
    471 
    472 ############################### ADVANCED CONFIG
    473 ###############################
    474 
    475 # 当hash中包含超过指定元素个数并且最大的元素没有超过临界时,
    476 #
    477 hash将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界值
    478 # Redis
    479 Hash对应Value内部实际就是一个HashMap,实际这里会有2种不同实现,
    480 #
    481 这个Hash的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value
    482 redisObject的encoding为zipmap,
    483 #
    484 当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。
    485 hash-max-zipmap-entries
    486 512
    487 hash-max-zipmap-value 64
    488 
    489 # list数据类型多少节点以下会采用去指针的紧凑存储格式。
    490 #
    491 list数据类型节点值大小小于多少字节会采用紧凑存储格式。
    492 list-max-ziplist-entries
    493 512
    494 list-max-ziplist-value 64
    495 
    496 # set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储。
    497 set-max-intset-entries
    498 512
    499 
    500 # zsort数据类型多少节点以下会采用去指针的紧凑存储格式。
    501 #
    502 zsort数据类型节点值大小小于多少字节会采用紧凑存储格式。
    503 zset-max-ziplist-entries
    504 128
    505 zset-max-ziplist-value 64
    506 
    507 # Redis将在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行重新hash,可以降低内存的使用
    508 #
    509 #
    510 当你的使用场景中,有非常严格的实时性需要,不能够接受Redis时不时的对请求有2毫秒的延迟的话,把这项配置为no。
    511 #
    512 #
    513 如果没有这么严格的实时性要求,可以设置为yes,以便能够尽可能快的释放内存
    514 activerehashing yes
    515 
    516 ################################## INCLUDES
    517 ###################################
    518 
    519 # 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件
    520 #
    521 include /path/to/local.conf
    522 # include /path/to/other.conf
  • 相关阅读:
    leetcode108 Convert Sorted Array to Binary Search Tree
    leetcode98 Validate Binary Search Tree
    leetcode103 Binary Tree Zigzag Level Order Traversal
    leetcode116 Populating Next Right Pointers in Each Node
    Python全栈之路Day15
    Python全栈之路Day11
    集群监控
    Python全栈之路Day10
    自动部署反向代理、web、nfs
    5.Scss的插值
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/9614244.html
Copyright © 2011-2022 走看看