redis配置文件详解

合集下载

Redis配置参数详解

Redis配置参数详解

Redis配置参数详解Redis是⼀个应⽤⾮常⼴泛的⾼性能Key-Value型数据库,与memcached类似,但功能更加强⼤!本⽂将按照不同功能模块的⽅式,依次对各个功能模块的配置参数进⾏详细介绍。

GENERAL./redis-server /path/to/redis.conf 按照指定的配置⽂件启动include /path/to/other.conf 包含其它的redis配置⽂件daemonize yes 启⽤后台守护进程运⾏模式pidfile /var/run/redis.pid redis启动后的进程ID保存⽂件port 6379 指定使⽤的端⼝号bind IP 监听指定的⽹络接⼝unixsocket /tmp/redis.sock 指定监听的socket,适⽤于unix环境timeout N 客户端空闲N秒后断开连接,参数0表⽰不启⽤loglevel notice 指定服务器信息显⽰的等级,4个参数分别为debug\verbose\notice\warninglogfile “” 指定⽇志⽂件,默认是使⽤系统的标准输出syslog-enabled no 是否启⽤将记录记载到系统⽇志功能,默认为不启⽤syslog-ident redis 若启⽤⽇志记录,则需要设置⽇志记录的⾝份syslog-facility local0 若启⽤⽇志记录,则需要设置⽇志facility,可取值范围为local0~local7,表⽰不同的⽇志级别databases 16 设置数据库的数量,默认启动时使⽤DB0,使⽤“select <dbid>”可以更换数据库tcp-backlog 511 此参数确定TCP连接中已完成队列(3次握⼿之后)的长度,应⼩于Linux系统的/proc/sys/net/core/somaxconn的值,此选项默认值为511,⽽Linux的somaxconn默认值为128,当并发量⽐较⼤且客户端反应缓慢的时候,可以同时提⾼这两个参数。

Redis3.2.6配置文件详细中文说明

Redis3.2.6配置文件详细中文说明

Redis3.2.6配置⽂件详细中⽂说明Redis3.2.6最新配置⽂件详细中⽂说明,啥都不说直接看说明############### 指定配置⽂件:################################## INCLUDES ####################################### 1 包含⽂件# 如果想要使⽤到配置⽂件,Redis服务必须以配置⽂件的路径作为第⼀个参数启动。

如:./redis-server /path/to/redis.conf# 单位说明:当需要指定内存⼤⼩时,可能会使⽤到不同的单位,如1k、5GB、4M等,这⾥给出其单位含义:# 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1000000000 bytes# 1gb => 1024*1024*1024 bytes# s指定单位是⼤⼩写不敏感。

如1GB、1gB、1Gb是⼀样的。

# include使⽤:# ⽤于include⼀个或多个配置⽂件。

# 当需要在⼀个标准的通⽤配置模板上进⾏⼀些个性化定制,则可以使⽤include 关键字来include这些个性化配置⽂件。

# 注意:虽然admin 或Redis Sentinel下执⾏的“CONFIG REWRITE”命令(Redis 2.8 引⼊的命令)会重写配置,但并不包含“include”关键字。

也就是说“CONFIG REWRITE”覆盖“include”相关内容。

# 由于redis以最后的配置作为直接配置,所以建议将include命令放置在配置⽂件的最前⾯以防⽌配置被覆盖。

# 但是如果打算使⽤另外的配置⽂件来覆盖当前⽂件的部分或全部配置,那么则可将include命令放置到该⽂件的末尾。

redis集群 配置参数

redis集群 配置参数

redis集群配置参数
在Redis集群中,需要配置以下参数:
1. cluster-enabled:设置为yes来启用集群模式。

2. cluster-config-file:指定集群配置文件的路径。

3. cluster-node-timeout:指定集群节点之间的超时时间。

4. cluster-announce-ip:指定集群节点的IP地址。

5. cluster-announce-port:指定集群节点的端口号。

6. cluster-announce-bus-port:指定集群节点之间通信的端口号。

7. cluster-require-full-coverage:设置为yes来要求所有槽位都要有节点才能正常工作。

8. cluster-migration-barrier:设置为yes来阻止在槽迁移期间的对数据的写入操作。

这些参数可以在Redis的配置文件redis.conf中进行设置。

在配置文件中找到对应的参数进行修改并重启Redis服务即可生效。

redis.conf配置参数详解

redis.conf配置参数详解
loglevel 日志记录等级,有4个可选值,debug,verbose(默认值),notice,warning
logfile 日志记录方式,默认值为stdout
databases 可用数据库数,默认值为16,默认数据库为0
save <seconds> <changes> 指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。
save 900 1
900秒(15分钟)内至少有1个key被改变
save 300 10 300秒(5分钟)内至少有300个key被改变
save 60 10000 60秒内至少有10000个key被改变
rdbcompression 存储至本地数据库时是否压缩数据,默认为yes
dbfilename 本地数据库文件名,默认值为dump.rdb
maxclients 最大客户端连接数,默认不限制(注释)
maxmemory <bytes> 设置最大内存,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,任到达最大内存设置,将无法再进行写入操作。(注释)
appendonly 是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认值为no
hash-max-ziverehashing yes
Redis官方文档对VM的使用提出了一些建议: 当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大. 当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value. 最好使用linux ext3 等对稀疏文件支持比较好的文件系统保存你的swap文件. vm-max-threads这个参数,可以设置访问swap文件的线程数,设置最好不要超过机器的核数.如果设置为0,那么所有对swap文件的操作都是串行的.可能会造成比较长时间的延迟,但是对数据完整性有很好的保证.

Redis5.0配置文件中文参考

Redis5.0配置文件中文参考

Redis5.0配置⽂件中⽂参考Redis 5.0 配置⽂件#是否在后台执⾏,yes:后台运⾏;no:不是后台运⾏daemonize yes#是否开启保护模式,默认开启。

要是配置⾥没有指定bind和密码。

开启该参数后,redis只会本地进⾏访问,拒绝外部访问。

protected-mode yes#redis的进程⽂件pidfile /var/run/redis/redis-server.pid#redis监听的端⼝号。

port 6379#此参数确定了TCP连接中已完成队列(完成三次握⼿之后)的长度,当然此值必须不⼤于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,⽽Linux的默认参数值是128。

当系统并发量⼤并且客户端速度缓慢的时候,可以将这⼆个参数⼀起参考设定。

该内核参数默认值⼀般是128,对于负载很⼤的服务程序来说⼤⼤的不够。

⼀般会将它修改为2048或者更⼤。

在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,然后在终端中执⾏sysctl -p。

tcp-backlog 511#指定 redis 只接收来⾃于该 IP 地址的请求,如果不进⾏设置,那么将处理所有请求bind 127.0.0.1#配置unix socket来让redis⽀持监听本地连接。

# unixsocket /var/run/redis/redis.sock#配置unix socket使⽤⽂件的权限# unixsocketperm 700# 此参数为设置客户端空闲超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,不能⼩于0。

timeout 0#tcp keepalive参数。

如果设置不为0,就使⽤配置tcp的SO_KEEPALIVE值,使⽤keepalive有两个好处:检测挂掉的对端。

降低中间设备出问题⽽导致⽹络看似连接却已经与对端端⼝的问题。

高级配置之给 Redis 配置一个系统服务文件

高级配置之给 Redis 配置一个系统服务文件

高级配置之给 Redis 配置一个系统服务文件
使得 redis 可以使用 systemctl 工具进行管理,使得可以设置开机自启等功能
1. 创建一个 Redis 的系统服务文件
执行命令 vim /etc/systemd/system/redis.service
文件内容如下 [Unit] Description=redis-server After=network.target [Service] Type=forking ExecStart=/usr/local/bin/redis-server /soft/redis-7.0.5/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target
2. 重载服务系统
systemctl daemon-reload
3. 使用 systemctl 对 Redis 进行管理
(1)启动 redis 服务
systemcyl start redis
(2)停止 redis 服务
systemctl stop redis
(3)永久停止 Redis 服务
systemctl enable redis
(4)重启 redis 服务
systemctl restart redis
(5)查看 redis 的服务状态
systemctl status redis
(6)设置 redis 的开机自启
emctl enable redis
4. 使用 Redis 客户端进行测试
直接手动运行客户端程序即可 redis-cli

Redis6.0.5版本配置文件说明(转载)

Redis6.0.5版本配置文件说明(转载)

Redis6.0.5版本配置⽂件说明(转载)Redis版本此⽂章中Redis版本为6.0.5。

redis-server --versionRedis server v=6.0.5 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=e8c241ddd6b4e79c配置⽂件说明因Redis配置⽂件内容过多,我按照以模块的⽅式分别对配置项进⾏说明。

1、###UNIT(单位)### (了解)1k => 1000 bytes1kb => 1024 bytes1m => 1000000 bytes1mb => 1024*1024 bytes1g => 1000000000 bytes1gb => 1024*1024*1024 bytes2、###INCLUDES(包含)###(了解)可以⽤于包含(引⼊)⼀个或多个其他配置⽂件3、###MODULES(模块)###(了解)⽤于启动时加载模块。

如果服务器⽆法加载模块它将中⽌。

可以使⽤多个loadmodule指令。

4、###NETWORK(⽹络)###(需记)1. bind说明:Redis服务监听地址,⽤于Redis客户端连接,默认只监听本机回环地址。

默认配置项:bind 127.0.0.12.protected-mode说明:Protected模式是⼀层安全保护。

默认是开启的,配置bind ip或者设置访问密码访问,关闭后,外部⽹络可以直接访问。

默认配置项:protected-mode yes3.prot说明:Redis监听端⼝,默认为6379默认配置项:port 63794.tcp-backlog说明:此参数确定了TCP连接中已完成队列(完成三次握⼿之后)的长度,当然此值必须不⼤于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511。

Redis Sentinel 文档说明讲解

Redis Sentinel 文档说明讲解

Redis Sentinel 文档说明Redis Sentinel 的设计目标是用来协助管理Redis实例的系统,它通常执行下面的4类任务:•监控,Sentinel会持续的检测master和slave的实例是否像期望的方式工作。

•通知,Sentinel可以通过一个API,通知系统管理员,或计算机上的其他程序,它监控的redis实例中那些事情出错了。

•自动的错误恢复,如果一个master不能像期望的那样正常工作,Sentinel 可以启动一个错误恢复的处理过程,将一个slave升级成为master,并使其他的slave成为新的master的slave,应用使用Redis server获取新master位置的通知。

•配置信息的获取,Sentinel会作为面向客户端的服务的一个发现的源头:客户端会通过与Sentinels连接,来获取当前工作的Redis master 的位置。

如果经历了错误恢复,Sentinels将会报告新的master的地址。

Sentinel的分布式本质(Distributed nature of Sentinel)Redis Sentinel是一个可分布的系统,这意味着通常你会在你的基础规划中选择运行多个Sentinel进程,而这些进程会使用gossip protocols来理解一个master是否下线,并使用agreement protocols来获取执行错误恢复的授权,或赋予一个新配置新的版本。

分布式系统具有安全(safety)和活动(liveness)的特性,如果想能使用好Redis Sentinel,你应该理解Sentinel是如果作为一个分布式系统工作的。

这些使Sentinel与单进程的程序相比,会更复杂并更具有优势,如:•一个Sentinels的群集,即便其中一部分Sentinels失效,仍然可以完成一个master的故障恢复。

•如果一个Sentinel工作不正常,或连接不上,不会得到其它的Sentinels 的授权,也就不可能做故障恢复的工作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

redis 是一款开源的、高性能的键-值存储(key-value store),和 memcached 类似,redis 常被称作是一款 key-value 内存存储系统或者内存数据库,同时由于它支持丰富的数据结构,又被称为一种数据结构服务器(data structure server)。

编译完 redis,它的配置文件在源码目录下 redis.conf ,将其拷贝到工作目录下即可使用,下面具体解释redis.conf 中的各个参数:1 daemonize no默认情况下,redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为 yes。

2 pidfile /var/run/redis.pid当 Redis 在后台运行的时候,Redis 默认会把 pid 文件放在/var/run/redis.pid,你可以配置到其他地址。

当运行多个 redis 服务时,需要指定不同的 pid 文件和端口3 port监听端口,默认为 63794 #bind 127.0.0.1指定 Redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中为了安全最好设置该项。

默认注释掉,不开启5 timeout 0设置客户端连接时的超时时间,单位为秒。

当客户端在这段时间内没有发出任何指令,那么关闭该连接6 tcp-keepalive 0指定 TCP 连接是否为长连接,"侦探"信号有 server 端维护。

默认为 0.表示禁用7 loglevel noticelog 等级分为 4 级,debug,verbose, notice, 和 warning。

生产环境下一般开启 notice 8 logfile stdout配置 log 文件地址,默认使用标准输出,即打印在命令行终端的窗口上,修改为日志文件目录9 databases 16设置数据库的个数,可以使用 SELECT 命令来切换数据库。

默认使用的数据库是 0 号库。

默认 16 个库10save 900 1save 300 10save 60 10000保存数据快照的频率,即将数据持久化到 dump.rdb 文件中的频度。

用来描述"在多少秒期间至少多少个变更操作"触发 snapshot 数据保存动作默认设置,意思是:if(在 60 秒之内有 10000 个 keys 发生变化时){进行镜像备份}else if(在 300 秒之内有 10 个 keys 发生了变化){进行镜像备份}else if(在 900 秒之内有 1 个 keys 发生了变化){进行镜像备份}11 stop-writes-on-bgsave-error yes当持久化出现错误时,是否依然继续进行工作,是否终止所有的客户端 write 请求。

默认设置"yes"表示终止,一旦 snapshot 数据保存故障,那么此 server 为只读服务。

如果为"no",那么此次 snapshot 将失败,但下一次 snapshot 不会受到影响,不过如果出现故障,数据只能恢复到"最近一个成功点"12 rdbcompression yes在进行数据镜像备份时,是否启用 rdb 文件压缩手段,默认为 yes。

压缩可能需要额外的cpu 开支,不过这能够有效的减小 rdb 文件的大,有利于存储/备份/传输/数据恢复13 rdbchecksum yes读取和写入时候,会损失 10%性能是否进行校验和,是否对 rdb 文件使用 CRC64 校验和,默认为"yes",那么每个 rdb 文件内容的末尾都会追加 CRC 校验和,利于第三方校验工具检测文件完整性14 dbfilename dump.rdb镜像备份文件的文件名,默认为 dump.rdb15 dir ./数据库镜像备份的文件 rdb/AOF 文件放置的路径。

这里的路径跟文件名要分开配置是因为Redis 在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,再把该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中16 # slaveof <masterip><masterport>设置该数据库为其他数据库的从数据库,并为其指定 master 信息。

17 masterauth当主数据库连接需要密码验证时,在这里指定18 slave-serve-stale-data yes当主master服务器挂机或主从复制在进行时,是否依然可以允许客户访问可能过期的数据。

在"yes"情况下,slave 继续向客户端提供只读服务,有可能此时的数据已经过期;在"no"情况下,任何向此 server 发送的数据请求服务(包括客户端和此 server 的 slave)都将被告知"error"19 slave-read-only yesslave 是否为"只读",强烈建议为"yes"20 # repl-ping-slave-period 10slave 向指定的 master 发送 ping 消息的时间间隔(秒),默认为 1021 # repl-timeout 60slave 与 master 通讯中,最大空闲时间,默认 60 秒.超时将导致连接关闭22 repl-disable-tcp-nodelay noslave 与 master 的连接,是否禁用 TCP nodelay 选项。

"yes"表示禁用,那么 socket 通讯中数据将会以 packet 方式发送(packet 大小受到 socket buffer 限制)。

可以提高 socket通讯的效率(tcp交互次数),但是小数据将会被buffer,不会被立即发送,对于接受者可能存在延迟。

"no"表示开启 tcp nodelay 选项,任何数据都会被立即发送,及时性较好,但是效率较低,建议设为 no23 slave-priority 100适用 Sentinel 模块(unstable,M-S 集群管理和监控),需要额外的配置文件支持。

slave 的权重值,默认100.当master失效后,Sentinel将会从slave列表中找到权重值最低(>0)的slave, 并提升为 master。

如果权重值为 0,表示此 slave 为"观察者",不参与 master 选举24 # requirepass foobared设置客户端连接后进行任何其他指定前需要使用的密码。

警告:因为 redis 速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行 150K 次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。

25 # rename-command CONFIG 3ed984507a5dcd722aeade310065ce5d (方式:MD5('CONFIG^!'))重命名指令,对于一些与"server"控制有关的指令,可能不希望远程客户端(非管理员用户)链接随意使用,那么就可以把这些指令重命名为"难以阅读"的其他字符串26 # maxclients 10000限制同时连接的客户数量。

当连接数超过这个值时,redis 将不再接收其他连接请求,客户端尝试连接时将收到 error 信息。

默认为 10000,要考虑系统文件描述符限制,不宜过大,浪费文件描述符,具体多少根据具体情况而定27 # maxmemory <bytes>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 的缓存来使用。

28 # maxmemory-policy volatile-lru内存不足"时,数据清除策略,默认为"volatile-lru"。

volatile-lru ->对"过期集合"中的数据采取 LRU(近期最少使用)算法.如果对 key 使用"expire"指令指定了过期时间,那么此 key 将会被添加到"过期集合"中。

将已经过期/LRU 的数据优先移除.如果"过期集合"中全部移除仍不能满足内存需求,将 OOM.allkeys-lru ->对所有的数据,采用 LRU 算法volatile-random ->对"过期集合"中的数据采取"随即选取"算法,并移除选中的 K-V,直到"内存足够"为止. 如果如果"过期集合"中全部移除全部移除仍不能满足,将 OOMallkeys-random ->对所有的数据,采取"随机选取"算法,并移除选中的 K-V,直到"内存足够"为止volatile-ttl ->对"过期集合"中的数据采取 TTL 算法(最小存活时间),移除即将过期的数据. noeviction ->不做任何干扰操作,直接返回 OOM 异常另外,如果数据的过期不会对"应用系统"带来异常,且系统中 write 操作比较密集,建议采取"allkeys-lru"29 # maxmemory-samples 3默认值 3,上面 LRU 和最小 TTL 策略并非严谨的策略,而是大约估算的方式,因此可以选择取样值以便检查29 appendonly no默认情况下,redis 会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁。

相关文档
最新文档