Redis资料参考_配置系统参数讲解

一.redis下载和翻译

1.下载

    github下载redis,linux版本 或者windows版本,本文以winodws版本为例

2.redis-windows版本结构图

3.翻译和查看redis.windows.conf配置

参数解释
bind 127.0.0.1

默认情况下,如果没有指定“绑定”配置指令,Redis侦听服务器上所有可用网络接口的连接。

可以使用“绑定”配置指令只监听一个或多个选择的接口,后面跟着一个或多个IP地址。

实例:

绑定192.168.1.100 10.0.0.1

绑定127.0.0.1::1

~~WARNING~~如果运行Redis的计算机直接暴露在互联网上,那么绑定到所有接口是危险的,并且会将实例暴露给互联网上的每个人。

因此,在默认情况下,我们取消注释以下绑定指令,这将迫使Redis只侦听IPv4回送接口地址(这意味着Redis将只能接受来自运行在其正在运行的同一台计算机上的客户端的连接)。

如果你确信你想要你的立场去列出所有的界面,只是评论下面的线路。

protected-mode yes

受保护模式是一个安全保护层,以避免访问和利用Internet上打开的Redis实例。

当保护模式打开时,如果:

1)服务器没有使用“绑定”指令显式地绑定到一组地址。

2)没有配置密码。

服务器仅接受来自从IPv4和IPv6回送地址127.0.0.1和::1连接的客户端的连接,以及来自Unix域套接字的连接。

默认情况下启用受保护模式。

只有当您确定希望来自其他主机的客户机连接到Redis时,即使没有配置身份验证,也不应该使用“绑定”指令显式列出特定的接口集,才应该禁用它。

port 6379

接受指定端口上的连接,默认值为6379(IANA 815344)。

如果端口0被指定,Redis将不会侦听TCP套接字。

tcp-backlog 511

TCP listen()backlog。

在高请求每秒环境中,您需要高积压,以避免客户机连接速度慢的问题。

注意,Linux内核将静默地将其截断为/proc/sys/net/core/somaxconn的值,因此确保同时提高somaxconn和tcp_max_syn_backlog的值,以便获得期望的效果。

timeout 0

UNIX套接字。

指定用于侦听传入连接的Unix套接字的路径。没有缺省值,因此当未指定时,Redis将不会侦听unix套接字。

unixsocket/tmp/redis.sock

unixsocketperm 700

在客户机空闲N秒后关闭连接(禁用0)

tcp-keepalive 0

TCP保持活力。

如果非零,则使用SO_KEEPALIVE在没有通信的情况下向客户端发送TCP ACK。

这之所以有用,有两个原因:

1)检测死对等体。

2)从中间网络设备的角度考虑网络连接的活跃性。在Linux上,指定的值(以秒为单位)是用于发送ACK的期间。

注意,要关闭连接,需要两倍的时间。对于其他内核,周期取决于内核配置。这个选项的合理值是60秒。

pidfile /var/run/redis.pid

默认情况下,Redis不作为守护进程运行。如果需要,使用“是”。注意,Redis在被守护时将在/var/run/redis.pid中写入一个pid文件。不支持Windows守护进程 如果从upstart或systemd运行Redis,Redis可以与您的 监督树。选项:监督无监督互动 通过将Redis置入SIGSTOP模式来发出有监督的启动信号有监督的系统-通过写READY=1到$NOTIFY_SOCKET的信号系统 基于UPSTART_JOB或NOTIFY_SOCKET环境变量 注意:这些监控方法只发出“过程就绪”的信号。

它们不能将持续活动的ping返回给上司。不支持窗口如果指定了pid文件,则Redis将其写入启动时指定的位置

并在出口处拆卸。当服务器运行非守护进程时,如果没有在配置中指定。当服务器被守护进程化时,pid文件

即使没有指定,也会使用,默认为“/var/run/redis.pid”。创建pid文件是最好的方法:如果Redis不能创建它

没有坏事,服务器将正常启动和运行。不支持Windowspidfile/var/run/redis.pid

loglevel notice

指定服务器详细级别。

这可以是:调试(许多信息,对于开发/测试很有用)冗长(许多很少有用的信息,但不像调试级别那样混乱)

注意(稍微冗长,您在生产中可能需要什么)警告(只记录非常重要的/关键的消息)

logfile ""

指定日志文件名。“stdout”也可以用于强制

Redis以登录标准输出。

syslog-enabled no

要启用到Windows EventLog的日志记录,只需将“syslog-enabled”设置为

是的,还可以根据需要更新其他syslog参数。如果Redis作为Windows服务安装和启动,则这将自动启用。

syslog-ident redis在Windows应用程序日志中指定事件的源名称。
databases 16

设置数据库的数量。默认数据库是DB 0,可以选择

根据每个连接使用SELECT<dbid>的不同方法,其中

dbid是介于0和“数据库”-1之间的数字

save 900 1
save 300 10
save 60 10000

将DB保存在磁盘上:保存<秒><更改>如果给定秒数和给定时间都保存DB发生了许多针对DB的写操作。

在下面的示例中,行为将保存:在900秒(15分钟)之后,如果至少一个键改变 在300秒(5分钟)之后,如果至少10个键被改变  在60秒之后,如果至少10000键被改变   注意:通过注释掉所有“save”行,可以完全禁用保存。

还可以删除所有先前配置的保存  通过添加具有单个空字符串参数的保存指令来指向 类似于下面的示例:

默认情况下,如果启用了RDB快照,Redis将停止接受写操作

(至少一个保存点)和最新的后台保存失败。

这将使用户意识到(以困难的方式)数据不持久

在磁盘上正常,否则很可能没有人会注意到,还有一些

灾难将会发生。

如果后台保存过程再次开始工作,Redis将

自动允许再次写入。

stop-writes-on-bgsave-error yes

但是,如果您已经设置了对Redis服务器的适当监视 以及持久性,您可能希望禁用该特性,以便Redis

即使磁盘有问题,也要像往常一样工作,权限等等。

rdbcompression yes

在转储.rdb数据库时使用LZF压缩字符串对象?

对于默认值,设置为“是”,因为几乎总是胜利。

如果您想在保存子节点中保存一些CPU,请将其设置为“否”,但是

如果具有可压缩值或键,数据集可能更大。

rdbchecksum yes

由于RDB的版本5,所以在文件的末尾放置CRC64校验和。这使得格式更耐腐蚀,但性能更好在保存和加载RDB文件时,点击支付(大约10%),因此可以禁用它为了最大限度的表现。禁用校验和创建的RDB文件的校验和为零,该校验和告诉加载代码跳过检查。

dir ./

文件名在哪里转储DB dbfilename dump.rdb 工作目录。DB将写入此目录中,并指定文件名

以上使用“dbfilename”配置指令。仅追加文件也将在这个目录中创建。注意,这里必须指定一个目录,而不是文件名。

slaveof <masterip> <masterport>

主从复制。使用slaveof将Redis实例复制为另一个Redis服务器。要尽快了解Redis复制的一些事情。

1)Redis复制是异步的,但是可以将主服务器配置为如果看起来至少与写没有连接,则停止接受写操作

一定数量的奴隶。

2)Redis从机能够与如果复制链接丢失的相对少量时间。您可能需要配置复制待办事项列表的大小(参见下一个

(该文件的部分)根据您的需要具有合理的值。3)复制是自动的,不需要用户干预。后一

网络分区从机自动尝试重新连接到主机并与它们重新同步。

masterauth <master-password>

如果主机受密码保护(使用“requirepass”配置)下面的指令)可以告诉从机以前进行身份验证

启动复制同步过程,否则主进程将拒绝奴隶的要求。

slave-serve-stale-data yes

当从服务器失去与主服务器的连接时,或复制时 仍然在进行中,奴隶可以以两种不同的方式行动:

1)如果从服务器陈旧数据被设置为“是”(默认值),则从服务器将

仍然回复客户端请求,可能带有过期的数据,或者如果这是第一次同步,数据集可能只是空的。

2)如果从服务器陈旧数据被设置为“否”,则从服务器将以 对所有类型的命令的错误“SYNC with master in.”

但是INFO和奴隶。

slave-read-only yes

由于Redis 2.6默认情况下是只读的。

注意:只读从机不设计为暴露给不可信的客户端

在网上。它只是一个防止滥用实例的保护层。

默认情况下,所有管理命令仍然是只读从导出

比如CON.、DEBUG等等。在一定程度上你可以改进

使用“rename-command”隐藏所有

repl-diskless-sync no

无法继续复制的新从站和重新连接从站过程只是接收差异,需要做所谓的“满”

“同步”。RDB文件从主服务器传输到从服务器。传输可以以两种不同的方式发生:

1)磁盘支持的:Redis主机创建一个新的进程,该进程写入RDB

磁盘上的文件。稍后由父节点传输文件递增地处理给奴隶。

2)无磁盘:Redis主机创建一个直接写入RDB文件到从套接字,根本不接触磁盘。

使用磁盘支持的复制,在生成RDB文件时,会有更多的从文件

只要当前子文件生成,就可以对RDB文件进行排队和服务RDB文件完成其工作。使用无盘复制代替一次

转移开始,到达的新奴隶将排队,新的转移在当前终止时启动。

当使用无盘复制时,主服务器将等待可配置的在开始转移之前的时间(以秒为单位),希望有多个奴隶

将到达,并且传输可以并行。

repl-diskless-sync-delay 5

当启用无盘复制时,可以配置延迟

服务器等待以生成通过套接字传输RDB的子节点

奴隶们。

这很重要,因为一旦传输开始,就不可能提供服务

新的从机到达,这将为下一次RDB传输排队,因此服务器

为了让更多的奴隶到达而等待一个延迟。

延迟以秒为单位指定,默认为5秒。禁用

它完全设置为0秒,并且传输将尽快开始。

repl-ping-slave-period 10

从服务器以预定义的间隔向服务器发送PING。有可能改变带有repl ping_slave_.选项的间隔。默认值为10 秒。

repl-timeout 60

以下选项将复制超时设置为:1)从属的角度,SYNC中的批量传输I/O。

2)从从属的角度(数据、ping)主超时。3)从主控者的角度来看,从属超时(REPLCONF ACK Pings)。

确保此值大于值非常重要为repl-ping-slave-.指定,否则将检测到超时每次主从之间流量都很低。

repl-disable-tcp-nodelay no

在SYNC之后禁用从套接字上的TCP_NODELAY?如果您选择“是”,Redis将使用较少数量的TCP数据包,并且

用于向从机发送数据的带宽更少。但是,这可能会增加从机端显示的数据最多40毫秒

使用默认配置的Linux内核。如果选择“否”,则数据出现在从机端的延迟将

减少了,但是更多的带宽将用于复制。默认情况下,我们优化低延迟,但是在非常高的流量条件下

或者当主人和奴隶离我们很远时,把这个变成“是”也许是个好主意。

repl-backlog-size 1mb

设置复制待办事项列表大小。积压是累积的缓冲区。当从设备断开连接一段时间时,从设备数据,以便当从设备断开连接时想要重新连接,通常不需要完全重新同步,而是部分重新同步重新同步就足够了,只需传递从节点遗漏的部分数据断开的。复制待办事项列表越大,从属程序的时间就越长断开连接,以后能够执行部分重新同步。

只有在至少连接了从机之后,才分配待办事项。

repl-backlog-ttl 3600

在主机一段时间不再连接从机之后,积压将被释放。以下选项配置以下秒数需要从最后一个从属断开连接时开始,为待释放的积压缓冲区。值0表示永远不释放待办事项列表。

slave-priority 100

从属优先级是Redis在INFO输出中发布的整数。Redis Sentinel使用它来选择要升级为

如果主控程序不再正常工作,则主控程序。优先级较低的从属被认为更适合晋升,所以

例如,如果有三个优先权为10、100、25的奴隶,哨兵将选择优先级为10的,这是最低的。

然而,一个特殊的优先级0标记从服务器不能执行主角色,因此优先级为0的从机将永远不会被

雷迪斯哨兵升职。默认情况下,优先级为100。

min-slaves-to-write 3//min-slaves-max-lag 10

如果连接N个从站,滞后小于或等于M秒。N个奴隶需要处于“在线”状态。秒的滞后,必须是<=指定值,计算如下

从奴隶接收的最后一个ping,通常每秒发送一次。此选项不能保证N个副本将接受写入,但是

将限制丢失写入的曝光窗口,以防没有足够的奴隶是可用的,以指定的秒数。例如,要求至少3个具有滞后<=10秒的奴隶使用:

requirepass foobared

要求客户端在处理任何其他文件之前发出AUTH<PASSWORD>。命令。这在您不信任的环境中可能有用。

其他具有访问运行redis-server的主机的权限。对于向后兼容性,这应该保留注释,因为大多数都是

人们不需要auth(例如,他们运行自己的服务器)。警告:因为Redis非常快,所以外部用户可以尝试使用

一个好的盒子每秒150k的密码。这意味着你应该使用非常强的密码,否则很容易破解。

rename-command CONFIG ""

命令重命名。可以在共享中更改危险命令的名称环境。例如,CONFIG命令可以重命名为某物很难猜测,这样它仍然可用于内部使用的工具但不适用于一般客户。例子:

重命名命令CON图5b840fc02d5240429941cc15f59e41cb7be6c52

还可以通过将命令重命名为空字符串:

maxclients 10000

请注意,更改登录到AOF文件或传输到从机可能会导致问题。限制同时设置连接的客户端的最大数量。默认情况下

但是,如果Redis服务器不是,则此限制设置为10000个客户端能够配置进程文件限制以允许指定限制

允许的客户端的最大数量被设置为当前文件限制减32(因为Redis为内部使用保留了一些文件描述符)。

一旦达到限制,Redis将关闭发送的所有新连接错误“达到的最大客户端数量”。

persistence-available [(yes)|no]

如果将Redis用作只在内存中的高速缓存,则没有任何类型 持久性,然后是后台AOF/RDB使用的fork()机制

坚持是不必要的。作为优化,所有持久性都可以是在Windows版本的Redis中关闭。这将重定向堆

分配给系统堆分配器,并禁用否则会导致fork()操作:BGSAVE和BGREWRITEAOF。此标志不能与配置的任何其他标志组合AOF和RDB操作。

maxmemory <bytes>

不要使用超过指定字节量的内存。 当达到内存限制时,Redis将尝试删除键根据选择的驱逐策略(参见max.-policy)。如果Redis不能根据策略删除密钥,或者策略是设置为“noeviction”,Redis将开始用错误回复命令

这将使用更多的内存,如SET、LPUSH等,并将继续回复只读命令,如GET。

当使用Redis作为LRU缓存或设置时,此选项通常很有用实例的硬内存限制(使用“noeviction”策略)。

警告:如果您将从属附加到带有maxmemory的实例,减去给从机提供数据所需的输出缓冲区的大小

从使用的内存计数中,使网络问题/重新同步不触发删除键的循环,反过来,输出

从属缓冲区充满了触发删除的DEL键更多的键,等等,直到数据库完全清空。

简而言之……如果你有奴隶,建议你设置一个下限对maxmemory的限制,以便系统上有一些空闲RAM用于从机

输出缓冲区(但是如果策略是“noeviction”,则不需要这样做)。警告:不设置maxmemory将导致Redis以

如果达到堆限制,则内存不足异常。注意:由于Redis使用系统分页文件来分配堆内存,

Windows Task Manager或其他工具显示的工作集内存使用情况诸如ProcessExplorer之类的工具并不总是准确的。例如,对在RDB或AOF文件的后台保存之后,工作集值可能显著下降。为了检查使用的内存的正确数量

通过redis-server存储数据,使用INFO客户端命令。INFO命令只显示用于存储redis数据的内存,而不显示额外的内存Windows进程为其自身需求使用的内存。额外金额可以计算INFO命令未报告的内存减去Win

maxmemory-policy noeviction

MAXMEMORY策略:Redis将如何选择在maxmemory时删除什么 达到。您可以从五个行为中选择:volatile-lru->使用LRU算法删除带有过期集的密钥根据LRU算法删除任何密钥volatile-.->使用过期集删除随机密钥allkeys-.->删除随机密钥,任意密钥 volatile-ttl->用最近的过期时间删除密钥(小TTL)noeviction->根本不会过期,只是在写操作上返回一个错误 注意:对于上述策略中的任何一个,Redis在写时将返回一个错误 操作时,没有合适的钥匙进行驱逐。

在编写这些命令的日期是:set setnx setex append incr.rpush lpush rpushx lpushx linsert lset rpoplpush sadd 烧结矿 日产锌店 getset mset msetnx执行排序 默认值为:

maxmemory-samples 5

LRU算法和最小TTL算法不是精确算法,而是近似算法。算法(为了节省内存),因此可以针对速度或 准确性。对于默认值,Redis将检查五个键并选择一个 最近使用得较少,可以使用以下方法更改示例大小 配置指令。默认值为5会产生足够好的结果。十分接近真正的LRU,但是要多花一点CPU。3很快,但不是很准确。

appendonly no

默认情况下,Redis在磁盘上异步转储数据集。这种模式是在很多应用程序中都足够好,但是Redis进程有一个问题

断电可能导致几分钟的写丢失(取决于配置的保存点)。Append Only File是另一种持久性模式,它提供更好的耐久性。例如,使用默认数据fsync策略(参见后面的配置文件)Redis可能仅损失在戏剧性的事件,比如服务器断电,或者如果某件事情发生单次写入Redis进程本身出现错误,但操作系统是仍然正确运行。AOF和RDB持久性可以同时启用,没有问题。如果在启动时启用了AOF,Redis将加载AOF,即文件具有更好的耐久性保证。有关更多信息,请查看http://redis.io/./persistence。

appendfilename "appendonly.aof"

仅追加文件的名称(默认情况下:“append only.aof”)

附加文件名“appendonly.aof”

appendfsync everysec

fsync()调用告诉操作系统在磁盘上实际写入数据而不是等待输出缓冲区中的更多数据。有些操作系统真的会刷新

磁盘上的数据,其他一些操作系统将尝试尽快完成。Redis支持三种不同的模式:不:不要fsync,只要让操作系统在需要的时候刷新数据。更快。总是:每次写到append only日志之后都进行fsync。最慢,最安全。每秒:每秒只同步一次。妥协。默认值是“每秒”,因为这通常是速度和数据安全。这取决于你是否能理解“否”允许操作系统在它想要更好的表演(但如果你能接受一些数据丢失考虑的是快照的默认持久性模式,或者相反,使用“总是”非常慢,但是比它安全一点每一秒。详情请参阅以下文章:http://antirez.com/post/redis-persistence-demyst..html

no-appendfsync-on-rewrite no

当AOF fsync策略设置为总是或每秒以及背景时保存过程(后台保存或AOF日志后台重写)在一些Linux配置中,对磁盘执行大量I/ORedis可能在fsync()调用上阻塞太长时间。注意,对于目前,甚至在不同的线程中执行fsync也会阻塞我们的同步写调用。为了减轻这个问题,可以使用以下选项这将防止fsync()在主进程中被调用,而BGSAVE或BGREWRITEAOF正在进行中。这意味着当另一个孩子在存钱时,Redis的耐用性是与“appendfsync none”相同。实际上,这意味着在最坏的情况下,可能损失多达30秒的日志记录(使用默认的Linux设置)。如果你有延迟问题,把这个变成“是”。否则,将其保留为从耐久性的角度来看,“不”是最安全的选择。

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

只追加文件的自动重写。Redis能够自动重写日志文件隐式调用当AOF日志大小按指定百分比增长时,使用BGREWRITEAOF。这是它的工作原理:Redis在最近的重写(如果重启之后没有发生重写,则使用启动时的AOF)。将此基本大小与当前大小进行比较。如果当前大小是大于指定百分比时,将触发重写。阿尔索

您需要为要重写的AOF文件指定最小大小,即使百分比增加,避免重写AOF文件也是有用的达到了,但仍然相当小。指定零的百分比以便禁用自动AOF重写特性。

aof-load-truncated yes

在Redis期间,可以发现AOF文件在末尾被截断启动过程,当AOF数据被加载回内存时。这可能发生在Redis正在运行的系统时。崩溃,特别是当安装ext4文件系统时没有使用data=ordered选项(但是,当Redis本身时,这不会发生

崩溃或中止,但操作系统仍然正常工作)。Redis在出现错误时可以退出,或者加载同样多的内容如果找到AOF文件,则尽可能使用数据(现在默认)并启动最后被截断。以下选项控制此行为。如果将aof-load-truncated设置为“是”,则加载一个截断的AOF文件,并且Redis服务器开始发出日志以向用户通知事件。否则,如果选项设置为否,服务器将因错误而中断拒绝开始。当选项设置为否时,用户需要在重新启动之前,使用“redis-check-aof”实用程序修复AOF文件服务器。注意,如果发现AOF文件在中间被破坏服务器仍然会带着错误退出。此选项仅适用于

Redis将尝试从AOF文件中读取更多数据,但字节不够将被发现。

lua-time-limit 5000

Lua脚本的最大执行时间为毫秒。如果达到最大执行时间,Redis将记录脚本为仍然在最大允许时间之后执行,并将开始用错误回答查询。当长时间运行的脚本超过最大执行时间时,仅SCRIPT KILL和SUTDOWNNOSAVE命令可用。第一个可以是用于停止尚未调用写命令的脚本。第二在写命令为脚本已经发出,但是用户不想等待脚本的结束。将其设置为0或负值,以便在没有警告的情况下无限制执行。

cluster-enabled yes

警告实验:然而,Redis集群被认为是稳定的代码为了将其标记为“成熟”,我们需要等待一个非常小的百分比 用于在生产环境中部署它的用户。 

cluster-config-file nodes-6379.conf

每个集群节点都有一个集群配置文件。这个文件不是打算用手工编辑。它由Redis节点创建和更新。每个Redis Cluster节点都需要不同的集群配置文件。确保在同一系统中运行的实例没有重叠的集群配置文件。

cluster-node-timeout 15000

集群节点超时是节点必须不可到达的毫秒量。认为它处于失效状态。大多数其他内部时间限制是节点超时的倍数。

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

END;

posted @ 2018-12-27 17:48  蜜獾互联网  阅读(0)  评论(0编辑  收藏  举报  来源