Redis使用入门(一)【配置文件】

来源:互联网 发布:淘宝外观侵权怎么处罚 编辑:程序博客网 时间:2024/06/06 08:23

redis.windows.conf内容如下:

# 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# 单位是不区分大小写的,你写 1K 5GB 4M 也行################################## INCLUDES #################################### 假如说你有一个可用于所有的 redis server 的标准配置模板,# 但针对某些 server 又需要一些个性化的设置,# 你可以使用 include 来包含一些其他的配置文件,这对你来说是非常有用的。## 但是要注意哦,include 是不能被 config rewrite 命令改写的# 由于 redis 总是以最后的加工线作为一个配置指令值,所以你最好是把 include 放在这个文件的最前面,# 以避免在运行时覆盖配置的改变,相反,你就把它放在后面(外国人真啰嗦)。## include .\path\to\local.conf# include c:\path\to\other.conf################################ 常用   ######################################在Windows上,以进程和pidfile还不受支持。#但是,您可以运行Redis的作为Windows服务,并指定一个日志文件,日志文件将包含PID。# 默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。# 当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。#daemonize no# 当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/run/redis.pid 文件里面,# 但是你可以在这里自己制定它的文件位置。#pidfile /var/run/redis.pid#指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字port 6379# TCP 监听的最大容纳数量# 在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。# Linux 内核会一声不响的把这个值缩小成 /proc/sys/net/core/somaxconn 对应的值,# 所以你要修改这两个值才能达到你的预期。tcp-backlog 511# 默认情况下,redis 在 server 上所有有效的网络接口上监听客户端连接。# 你如果只想让它在一个网络接口上监听,那你就绑定一个IP或者多个IP。## 示例,多个IP用空格隔开:#绑定的主机地址# bind 192.168.1.100 10.0.0.1# bind 127.0.0.1# 指定 unix socket 的路径。## unixsocket /tmp/redis.sock# unixsocketperm 700#指定在一个 client 空闲多少秒之后关闭连接(0 就是不管它)#设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接timeout 0# tcp 心跳包。## 如果设置为非零,则在与客户端缺乏通讯的时候使用 SO_KEEPALIVE 发送 tcp acks 给客户端。# 这个之所有有用,主要由两个原因:## 1) 防止死的 peers# 2) Take the connection alive from the point of view of network#    equipment in the middle.#推荐一个合理的值就是60秒#指定TCP连接是否为长连接,"侦探"信号有server端维护。默认为0.表示禁用tcp-keepalive 0# 定义日志级别。# 可以是下面的这些值:# debug (适用于开发或测试阶段)# verbose (many rarely useful info, but not a mess like the debug level)# notice (适用于生产环境)# warning (仅仅一些重要的消息被记录)#log 等级分为4 级,debug,verbose, notice, 和warning。生产环境下一般开启noticeloglevel notice# 指定日志文件的位置# 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null  logfile /Worksoftware/Redis3DI/logs/redis.log# 要想把日志记录到系统日志,就把它改成 yes,# 也可以可选择性的更新其他的syslog 参数以达到你的要求# syslog-enabled no# 设置 syslog 的 identity。# syslog-ident redis# 设置 syslog 的 facility,必须是 USER 或者是 LOCAL0-LOCAL7 之间的值。# syslog-facility local0# 设置数据库的数目。# 默认数据库是 DB 0,你可以在每个连接上使用 select <dbid> 命令选择一个不同的数据库,# 但是 dbid 必须是一个介于 0 到 databasees - 1 之间的值#设置数据库的个数,可以使用SELECT 命令来切换数据库。默认使用的数据库是0号库。默认16个库databases 16################################ 快照  ################################## 存 DB 到磁盘:##   格式:save <间隔时间(秒)> <写入次数>##   根据给定的时间间隔和写入次数将数据保存到磁盘##   下面的例子的意思是:#   900 秒内如果至少有 1 个 key 的值变化,则保存#   300 秒内如果至少有 10 个 key 的值变化,则保存#   60 秒内如果至少有 10000 个 key 的值变化,则保存#  #   注意:你可以注释掉所有的 save 行来停用保存功能。#   也可以直接一个空字符串来实现停用:#   save ""#保存数据快照的频率,即将数据持久化到dump.rdb文件中的频度。用来描述"在多少秒期间至少多少个变更操作"触发snapshot数据保存动作#默认设置,意思是:#if(在60 秒之内有10000 个keys 发生变化时){#进行镜像备份#}else if(在300 秒之内有10 个keys 发生了变化){#进行镜像备份#}else if(在900 秒之内有1 个keys 发生了变化){#进行镜像备份#}#分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。   #指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合   save 900 1save 300 10save 60 10000# 默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,# 这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘,# 否则就会没人注意到灾难的发生。# 如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。# 然而你要是安装了靠谱的监控,你可能不希望 redis 这样做,那你就改成 no 好了。#当持久化出现错误时,是否依然继续进行工作,是否终止所有的客户端write请求。#默认设置"yes"表示终止,一旦snapshot数据保存故障,那么此server为只读服务。#如果为"no",那么此次snapshot将失败,但下一次snapshot不会受到影响,不过如果出现故障,数据只能恢复到"最近一个成功点"stop-writes-on-bgsave-error yes# 是否在 dump .rdb 数据库的时候使用 LZF 压缩字符串# 默认都设为 yes# 如果你希望保存子进程节省点 cpu ,你就设置它为 no ,# 不过这个数据集可能就会比较大#在进行数据镜像备份时,是否启用rdb文件压缩手段,默认为yes。#压缩可能需要额外的cpu开支,不过这能够有效的减小rdb文件的大,有利于存储/备份/传输/数据恢复rdbcompression yes# 是否校验rdb文件#是否进行校验和,是否对rdb文件使用CRC64校验和,默认为"yes",#那么每个rdb文件内容的末尾都会追加CRC校验和,利于第三方校验工具检测文件完整性rdbchecksum yes#镜像备份文件的文件名,默认为 dump.rdbdbfilename  dump.rdb# 工作目录# 例如上面的 dbfilename 只指定了文件名,# 但是它会写入到这个目录下。这个配置项一定是个目录,而不能是文件名。#数据库镜像备份的文件rdb/AOF文件放置的路径。这里的路径跟文件名要分开配置是因为Redis #在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,#再把该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中dir  /Worksoftware/Redis3DI/data/#dir ./################################# 主从复制  ##################################设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步# 主从复制。使用 slaveof 来让一个 redis 实例成为另一个reids 实例的副本。# 注意这个只需要在 slave 上配置。#设置该数据库为其他数据库的从数据库,并为其指定master信息。# slaveof <masterip> <masterport># 如果 master 需要密码认证,就在这里设置#当主数据库连接需要密码验证时,在这里指定# masterauth <master-password># 当一个 slave 与 master 失去联系,或者复制正在进行的时候,# slave 可能会有两种表现:# 1) 如果为 yes ,slave 仍然会应答客户端请求,但返回的数据可能是过时,#    或者数据可能是空的在第一次同步的时候# 2) 如果为 no ,在你执行除了 info he salveof 之外的其他命令时,#    slave 都将返回一个 "SYNC with master in progress" 的错误,##当主master服务器挂机或主从复制在进行时,是否依然可以允许客户访问可能过期的数据。#在"yes"情况下,slave继续向客户端提供只读服务,有可能此时的数据已经过期;#在"no"情况下,任何向此server发送的数据请求服务(包括客户端和此server的slave)都将被告知"error"slave-serve-stale-data yes# 你可以配置一个 slave 实体是否接受写入操作。# 通过写入操作来存储一些短暂的数据对于一个 slave 实例来说可能是有用的,# 因为相对从 master 重新同步数而言,据数据写入到 slave 会更容易被删除。# 但是如果客户端因为一个错误的配置写入,也可能会导致一些问题。# 从 redis 2.6 版起,默认 slaves 都是只读的。# 注意:只读的 slaves 没有被设计成在 internet 上暴露给不受信任的客户端。# 它仅仅是一个针对误用实例的一个保护层。#slave是否为"只读",强烈建议为"yes"slave-read-only yesrepl-diskless-sync norepl-diskless-sync-delay 5# Slaves 在一个预定义的时间间隔内发送 ping 命令到 server 。# 你可以改变这个时间间隔。默认为 10 秒。# slave向指定的master发送ping消息的时间间隔(秒),默认为10# repl-ping-slave-period 10# 设置主从复制过期时间#这个值一定要比 repl-ping-slave-period 大#slave与master通讯中,最大空闲时间,默认60秒.超时将导致连接关闭# repl-timeout 60#slave与master的连接,是否禁用TCP nodelay选项。"yes"表示禁用,那么socket通讯中数据将会以packet方式发送(packet大小受到socket buffer限制)。#可以提高socket通讯的效率(tcp交互次数),但是小数据将会被buffer,不会被立即发送,对于接受者可能存在延迟。#"no"表示开启tcp nodelay选项,任何数据都会被立即发送,及时性较好,但是效率较低,建议设为norepl-disable-tcp-nodelay no# 设置主从复制容量大小。这个 backlog 是一个用来在 slaves 被断开连接时# 存放 slave 数据的 buffer,所以当一个 slave 想要重新连接,通常不希望全部重新同步,# 只是部分同步就够了,仅仅传递 slave 在断开连接时丢失的这部分数据。# 这个值越大,salve 可以断开连接的时间就越长。# backlog只分配一次并且至少需要一个slave连接# repl-backlog-size 1mb# 在某些时候,master 不再连接 slaves,backlog 将被释放。# 如果设置为 0 ,意味着绝不释放 backlog 。# repl-backlog-ttl 3600# 当 master 不能正常工作的时候,Redis Sentinel 会从 slaves 中选出一个新的 master,# 这个值越小,就越会被优先选中,但是如果是 0 , 那是意味着这个 slave 不可能被选中。# 默认优先级为 100。#适用Sentinel模块(unstable,M-S集群管理和监控),需要额外的配置文件支持。slave的权重值,默认100.当master失效后,Sentinel将会从slave列表中找到权重值最低(>0)的slave,并提升为master。如果权重值为0,表示此slave为"观察者",不参与master选举slave-priority 100# min-slaves-to-write 3# min-slaves-max-lag 10## Setting one or the other to 0 disables the feature.## By default min-slaves-to-write is set to 0 (feature disabled) and# min-slaves-max-lag is set to 10.################################## 安全  ####################################设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭# requirepass foobared#设置客户端连接后进行任何其他指定前需要使用的密码。警告:因为redis 速度相当快,所以在一台比较好的服务器下,#一个外部的用户可以在一秒钟进行150K 次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。requirepass 123456# 重命名指令,对于一些与"server"控制有关的指令,可能不希望远程客户端(非管理员用户)链接随意使用,那么就可以把这些指令重命名为"难以阅读"的其他字符串# rename-command CONFIG ""## Please note that changing the name of commands that are logged into the# AOF file or transmitted to slaves may cause problems.################################### 限制  #####################################设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息# 一旦达到最大限制,redis 将关闭所有的新连接# 并发送一个‘max number of clients reached’的错误。#限制同时连接的客户数量。当连接数超过这个值时,redis 将不再接收其他连接请求,客户端尝试连接时将收到error 信息。默认为10000,要考虑系统文件描述符限制,不宜过大,浪费文件描述符,具体多少根据具体情况而定# maxclients 10000# persistence-available [(yes)|no]#指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区#redis-cache所能使用的最大内存(bytes),默认为0,表示"无限制",最终由OS物理内存大小决定(如果物理内存不足,有可能会使用swap)。#此值尽量不要超过机器的物理内存尺寸,从性能和实施的角度考虑,可以为物理内存3/4。此配置需要和"maxmemory-policy"配合使用,当redis中内存数据达到maxmemory时,触发"清除策略"。#在"内存不足"时,任何write操作(比如set,lpush等)都会触发"清除策略"的执行。在实际环境中,建议redis的所有物理机器的硬件配置保持一致(内存一致),同时确保master/slave中"maxmemory""policy"配置一致。#当内存满了的时候,如果还接收到set 命令,redis 将先尝试剔除设置过expire 信息的key,而不管该key 的过期时间还没有到达。在删除时,#将按照过期时间进行删除,最早将要被过期的key 将最先被删除。如果带有expire 信息的key 都删光了,内存还不够用,那么将返回错误。这样,redis 将不再接收写请求,只接收get 请求。#maxmemory 的设置比较适合于把redis 当作于类似memcached的缓存来使用。# maxmemory <bytes># 最大内存策略,你有 5 个选择。#内存不足"时,数据清除策略,默认为"volatile-lru"。#volatile-lru  ->对"过期集合"中的数据采取LRU(近期最少使用)算法.如果对key使用"expire"指令指定了过期时间,那么此key将会被添加到"过期集合"中。将已经过期/LRU的数据优先移除.如果"过期集合"中全部移除仍不能满足内存需求,将OOM.#allkeys-lru ->对所有的数据,采用LRU算法#volatile-random ->对"过期集合"中的数据采取"随即选取"算法,并移除选中的K-V,直到"内存足够"为止. 如果如果"过期集合"中全部移除全部移除仍不能满足,将OOM#allkeys-random ->对所有的数据,采取"随机选取"算法,并移除选中的K-V,直到"内存足够"为止#volatile-ttl ->对"过期集合"中的数据采取TTL算法(最小存活时间),移除即将过期的数据.#noeviction ->不做任何干扰操作,直接返回OOM异常#另外,如果数据的过期不会对"应用系统"带来异常,且系统中write操作比较密集,建议采取"allkeys-lru"# maxmemory-policy volatile-lru# 默认值3,上面LRU和最小TTL策略并非严谨的策略,而是大约估算的方式,因此可以选择取样值以便检查# maxmemory-samples 3############################## 追加模式 ################################默认情况下,redis 会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,#而且备份也不能很频繁。所以redis 提供了另外一种更加高效的数据库备份及灾难恢复方式。#开启append only 模式之后,redis 会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,#当redis 重新启动时,会从该文件恢复出之前的状态。但是这样会造成appendonly.aof 文件过大,#所以redis 还支持了BGREWRITEAOF 指令,对appendonly.aof 进行重新整理。如果不经常进行数据迁移操作,#推荐生产环境下的做法为关闭镜像,开启appendonly.aof,同时可以选择在访问较少的时间每天对appendonly.aof 进行重写一次。appendonly no#aof文件名字,默认为appendonly.aofappendfilename "appendonly.aof"#fsync模式有三种:#no:让OS托管,这样更快,但是如果出现问题,可能会丢失更多的数据。#always:每次write都刷到log,慢,但是对数据来说最安全。#everysec:每秒一次flush(默认),这是一种折衷的做法,使速度和数据安全之间取得适当的平衡。# appendfsync always# appendfsync no#设置对appendonly.aof 文件进行同步的频率。always 表示每次有写操作都进行同步,everysec 表示对写操作进行累积,每秒同步一次。#no不主动fsync,由OS自己来完成。这个需要根据实际业务场景进行配置appendfsync everysec#AOF设置 #当fsync为always或者everysec时,一个bgsave或者AOF rewrite线程正在耗费大量I/0,redis可能会在fsync上阻塞很久。发生之后就无法fix,即使是另一个线程跑fsync,也会阻塞我们同步的write方法。#如下方法可以解决这个问题:当bgsave()或bgrewriteaof()在跑,主进程的fsync()就无法调用。也就是当子进程在save,那段时间相当于redis是appendaof no的。也就是有可能会丢失最多30s的log。#所以如果你有lag问题,把下边改成yes,否则就用no。yes意思是暂停aof,拒绝主进程的这次fsync。no是redis是排队的,不会被prevent了,但主进程是阻塞的。#在aof rewrite期间,是否对aof新记录的append暂缓使用文件同步策略,主要考虑磁盘IO开支和请求阻塞时间。#默认为no,表示"不暂缓",新的aof记录仍然会被立即同步no-appendfsync-on-rewrite no#自动重写AOF#当Aof log增长超过指定比例时,重写log file, 设置为0表示不自动重写Aof 日志,百分比(percentage)设置为0时,禁用自动重写功能,#重写是为了使aof体积保持最小,而确保保存最完整的数据,。auto-aof-rewrite-percentage 100#触发aof rewrite的最小文件尺寸auto-aof-rewrite-min-size 64mb#容错 #AOF文件可能在尾部是不完整的(上次system关闭有问题,尤其是mount ext4文件系统时没有加上data=ordered选项。#只会发生在os死时,redis自己死不会不完整)。那redis重启时load进内存的时候就有问题了。#发生的时候,可以选择redis启动报错,或者load尽量多正常的数据。#如果aof-load-truncated是yes,会自动发布一个log给客户端然后load(默认)。#如果是no,用户必须手动redis-check-aof修复AOF文件才可以。aof-load-truncated yes################################ LUA 脚本  ################################以毫秒为单位的最大脚本执行时间。#如果达到了这个值,脚本还没执行完Redis会记录并返回错误。#当一个脚本超过了最大时限时只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。第一个可以杀没有调write命令的东西。要是已经调用了write,就只能用第二个命令杀。#设置为0时执行时间无限制。 #lua脚本运行的最大时间lua-time-limit 5000################################ REDIS 集群   ################################此处暂不介绍(暂时用不上)。# 启用或停用集群# cluster-enabled yes# cluster-config-file nodes-6379.conf # cluster-node-timeout 15000################################## 慢日志 ####################################Redis的慢日志是一个记录超过规定的执行时间查询的系统。执行时间不包括I/O操作,如与客户端通信,回复等,只是实际执行该命令所需要的时间。#线程阻塞不能服务其他请求的时间长度,以微秒计时,1s=1000*1000微秒。设置为负值时禁用慢日志,设置为0是记录所有请求。slowlog-log-slower-than 10000#长度没有限制,但是会消耗内存。可以通过SLOWLOG RESET回收旧日志的内存。slowlog-max-len 128################################ 延迟监控 ###############################收集运行时不同命令的耗时,可以通过LATENCY命令打印这些图表。#计时单位为毫秒,系统只记录比latency-monitor-threshold值大的记录。如果配置为0表示关闭监控(默认)。#也可以通过命令“CONFIG SET latency-monitor-threshold <milliseconds>”来动态开始此功能。latency-monitor-threshold 0############################# 事件通知 ###############################可以通知pub/sub(发布/订阅)客户端关于key空间的变化。#比如:如果开着开关,一个client在db0上key=“foo”上进行了DEL操作,两个消息将会通过 pub/sub 发布# PUBLISH __keyspace@0__:foo del# PUBLISH __keyevent@0__:del foo# 每一种通知由一个字母表示:#    K Keyspace events, published with __keyspace@<db>__ prefix.#    E Keyevent events, published with __keyevent@<db>__ prefix.#    g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...#    $ String commands#    l List commands#    s Set commands#    h Hash commands#    z Sorted set commands#    x Expired events (events generated every time a key expires)#    e Evicted events (events generated when a key is evicted for maxmemory)#    A Alias for g$lshzxe, so that the "AKE" string means all the events.#参数由以上字母组成,若配置为空字符串,表示不开启此功能。#例如,可能会如下配置:#  notify-keyspace-events Elg#  notify-keyspace-events Ex#大部分人不需要这个功能,并且还需要一定开销,所以默认关闭。 notify-keyspace-events ""############################### 高级配置 ################################哈希表中元素(条目)总个数不超过设定数量时,采用线性紧凑格式存储来节省空间 hash-max-ziplist-entries 512#哈希表中每个value的长度不超过多少字节时,采用线性紧凑格式存储来节省空间hash-max-ziplist-value 64#list数据类型多少节点以下会采用去指针的紧凑存储格式 #对于list类型,将会采取ziplist,linkedlist两种编码类型。 list-max-ziplist-entries 512#list数据类型节点值大小小于多少字节会采用紧凑存储格式list-max-ziplist-value 64#set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储 #intset中允许保存的最大条目个数,如果达到阀值,intset将会被重构为hashtableset-max-intset-entries 512# 与hash和list相似,有序集合也可以用一种特别的编码方式来节省大量空间。# 这种编码只适合长度和元素都小于下面限制的有序集合: #zset为有序集合,有2中编码类型:ziplist,skiplist。因为"排序"将会消耗额外的性能,当zset中数据较多时,将会被重构为skiplist。zset-max-ziplist-entries 128zset-max-ziplist-value 64hll-sparse-max-bytes 3000#指定是否激活重置哈希,默认为开启(后面在介绍Redis的哈希算法时具体介绍)# 启用哈希刷新,每100个CPU毫秒会拿出1个毫秒来刷新Redis的主哈希表(顶级键值映射表)。# redis所用的哈希表实现(见dict.c)采用延迟哈希刷新机制:你对一个哈希表操作越多,哈希刷新# 操作就越频繁;反之,如果服务器是空闲的,那么哈希刷新就不会完成,哈希表就会占用更多的一些# 内存而已。# 默认是每秒钟进行10次哈希表刷新,用来刷新字典,然后尽快释放内存。# 建议:# 如果你对延迟比较在意,不能够接受Redis时不时的对请求有2毫秒的延迟的话,就用# "activerehashing no",如果不太在意延迟而希望尽快释放内存就设置"activerehashing yes"#是否开启顶层数据结构的rehash功能,如果内存允许,请开启。rehash能够很大程度上提高K-V存取的效率\activerehashing yes# 客户端的输出缓冲区的限制,可用于强制断开那些因为某种原因从服务器读取数据的速度不够快的客户端,# (一个常见的原因是一个发布/订阅客户端消费消息的速度无法赶上生产它们的速度)# 可以对三种不同的客户端设置不同的限制:# normal -> 正常客户端# slave -> slave和 MONITOR 客户端# pubsub -> 至少订阅了一个pubsub channel或pattern的客户端# 下面是每个client-output-buffer-limit语法:# client-output-buffer-limit <class><hard limit> <soft limit> <soft seconds># 一旦达到硬限制客户端会立即被断开,或者达到软限制并持续达到指定的秒数(连续的)。# 例如,如果硬限制为32兆字节和软限制为16兆字节/10秒,客户端将会立即断开# 如果输出缓冲区的大小达到32兆字节,或客户端达到16兆字节并连续超过了限制10秒,就将断开连接。# 默认normal客户端不做限制,因为他们在不主动请求时不接收数据(以推的方式),只有异步客户端# 可能会出现请求数据的速度比它可以读取的速度快的场景。# pubsub和slave客户端会有一个默认值,因为订阅者和slaves以推的方式来接收数据# 把硬限制和软限制都设置为0来禁用该功能#客户端buffer控制。在客户端与server进行的交互中,每个连接都会与一个buffer关联,此buffer用来队列化等待被client接受的响应信息。#如果client不能及时的消费响应信息,那么buffer将会被不断积压而给server带来内存压力.如果buffer中积压的数据达到阀值,将会导致连接被关闭,buffer被移除。#buffer控制类型包括:normal -> 普通连接;slave ->与slave之间的连接;pubsub ->pub/sub类型连接,此类型的连接,往往会产生此种问题;因为pub端会密集的发布消息,但是sub端可能消费不足.#指令格式:client-output-buffer-limit <class> <hard> <soft> <seconds>",其中hard表示buffer最大值,一旦达到阀值将立即关闭连接;#soft表示"容忍值",它和seconds配合,如果buffer值超过soft且持续时间达到了seconds,也将立即关闭连接,如果超过了soft但是在seconds之后,buffer数据小于了soft,连接将会被保留.#其中hard和soft都设置为0,则表示禁用buffer控制.通常hard值大于soft.client-output-buffer-limit normal 0 0 0client-output-buffer-limit slave 256mb 64mb 60client-output-buffer-limit pubsub 32mb 8mb 60#Redis server执行后台任务的频率,默认为10,此值越大表示redis对"间歇性task"的执行次数越频繁(次数/秒)。"间歇性task"包括"过期集合"检测、关闭"空闲超时"的连接等,此值必须大于0且小于500。此值过小就意味着更多的cpu周期消耗,后台task被轮询的次数更频繁。#此值过大意味着"内存敏感"性较差。建议采用默认值。# Redis调用内部函数来执行许多后台任务,如关闭客户端超时的连接,清除未被请求过的过期Key等等。# 不是所有的任务都以相同的频率执行,但Redis依照指定的“hz”值来执行检查任务。# 默认情况下,“hz”的被设定为10。提高该值将在Redis空闲时使用更多的CPU时,但同时当有多个key# 同时到期会使Redis的反应更灵敏,以及超时可以更精确地处理。# 范围是1到500之间,但是值超过100通常不是一个好主意。# 大多数用户应该使用10这个默认值,只有在非常低的延迟要求时有必要提高到100。hz 10aof-rewrite-incremental-fsync yes################################## INCLUDES #################################### 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件# 额外载入配置文件。# include /path/to/local.conf# include /path/to/other.conf

如图:

这里写图片描述

指定的日志路径

这里写图片描述

管理工具

这里写图片描述

1 0