Redis的配置文件redis.conf详解
Redis的配置文件位于redis的安装目录下,一般不要直接操作出厂设置的配置文件,需要对其进行备份。# Redis的配置文件样例:
# Redis configuration file example.#
# 请注意,为了读取到配置文件,Redis必须文件路径作为第一个参数来启动:
#
# ./redis-server /path/to/redis.conf
# 关于单位的一些注意事项:
# 对大小写不敏感
# Note on units: when memory size is needed, it is possible to specify
# it in the usual form of 1k 5GB 4M and so forth:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# units are case insensitive so 1GB 1Gb 1gB are all the same.
1.INCLUDE部分:
################################## INCLUDES ################################### # 在配置多个服务器时很有用,比如,多个服务器的很多个配置项是相同的,但是少部分配
# 置又要不相同,例如:bind等配置,这时可以将相同的配置抽取出来,作为一个单独文件.
# 其他配置项根据不同的服务器做不同的配置,最后通过include引用;如果include放在文件
# 的开头,那么redis.conf的配置会覆盖引入文件中的配置,所以如果想要使用引入文件中的配置
# 可以将include放在最后
# include /path/to/local.conf
# include /path/to/other.conf
2.MODULES部分:
################################## MODULES ##################################### # Load modules at startup. If the server is not able to load modules
# it will abort. It is possible to use multiple loadmodule directives.
#
# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so
NETWORK部分:
################################## NETWORK ######################################
# 默认情况下,如果未指定“ bind”配置指令,则Redis监听服务器上所有可用网络接口的连接。
# 可以使用“ bind”配置指令侦听一个或多个选定接口,然后侦听一个 或更多IP地址
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ WARNING ~~~
# 如果运行Redis的电脑直接暴露在互联网中,那么就会将实例暴露给所有人,这是很危险的。
# 指定 redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求
bind 127.0.0.1 # Protected mode is a layer of security protection, in order to avoid that
# Redis instances left open on the internet are accessed and exploited.
#
# 当开启保护模式时,即使没有绑定任何IP,也没有配置密码,Redis仍然只接受本机的访问
#
# The server only accepts connections from clients connecting from the
# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain
# sockets.
#
# By default protected mode is enabled. You should disable it only if
# you are sure you want clients from other hosts to connect to Redis
# even if no authentication is configured, nor a specific set of interfaces
# are explicitly listed using the "bind" directive.
protected-mode yes # 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
# 配置unix socket来让redis支持监听本地连接。
# unixsocket /var/run/redis/redis.sock
# 配置unix socket使用文件的权限
# unixsocketperm 700 # 此参数为设置客户端空闲超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,不能小于0。
timeout 0
# tcp keepalive参数。如果设置不为0,就使用配置的SO_KEEPALIVE值,使用keepalive有两个好处:检测挂掉的对端。降低中间设备出问题而
# 导致网络看似连接却已经与对端端口的问题。
# 在Linux内核中,设置了keepalive,redis会定时给对端发送ack。检测到对端关闭需要两倍的设置值。
# 此选项的合理值是300秒,这是从Redis 3.2.1开始的新Redis默认值
tcp-keepalive 300
GENERAL部分:
################################# GENERAL #####################################
# 默认情况下,Redis不会作为守护程序运行。 如果需要,请使用“yes”。
# 请注意,Redis守护进程将在/var/run/redis.pid中写入一个pid文件
daemonize yes
# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
# supervised no - no supervision interaction
# supervised upstart - signal upstart by putting Redis into SIGSTOP mode
# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
# supervised auto - detect upstart or systemd method based on
# UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
# They do not enable continuous liveness pings back to your supervisor.
supervised no
# 进程管道id文件,如果指定了pid文件,则Redis会在启动时将其写入指定位置,然后在退出时将其删除。
# 当服务器在非守护进程下运行时,如果没有pid文件,则不会创建在配置中指定。
# 当服务器是后台进程时,pidfile是不被指定也会被使用,默认为/var/run/redis.pid
# 如果Redis无法创建它,则不会发生任何不良情况,服务器将正常启动并运行。
pidfile /var/run/redis_6379.pid # 日志级别:
# debug (开发/测试阶段)
# verbose (有用信息比较少,但不会像debug这么混乱)
# notice (中等冗长,您可能想在生产中使用)
# warning (用于生产环境)
loglevel notice # 用于指定记录日志的文件,空字符串的话,日志会打印到标准输出设备中。后台运行的redis的标准输出是/dev/null
logfile "" # 是否打开记录syslog的功能
# syslog-enabled no # syslog的标识符
# syslog-ident redis # 指定syslog的设备,值可以是user或者是local0-local7
# syslog-facility local0 # 数据库的数量,默认使用的是数据库0,可以使用select命令来切换数据库
databases 16 # By default Redis shows an ASCII art logo only when started to log to the
# standard output and if the standard output is a TTY. Basically this means
# that normally a logo is displayed only in interactive sessions.
#
# However it is possible to force the pre-4.0 behavior and always show a
# ASCII art logo in startup logs by setting the following option to yes.
always-show-logo yes
SNAPSHOTTING部分(Redis持久化之rdb):
################################ SNAPSHOTTING ################################
# Redis的持久化
# Save the DB on disk:
# 保存格式:
# save <seconds> <changes>
#
# 如果同时发生了给定的秒数和给定的针对数据库的写操作,那么就会保存到数据库。
#
# 在下面的实例中就会出现持久化:
# 在900s(15min)后,至少有1个键值发生变化
# 在300s(5min)后,至少修改了10个键值发生了变化
# 在60s(1min)后,至少修改了10000个键值发生了变化
#
# 注意:你可以注释掉所有的save命令来禁用save
#
# 也可以通过配置带有单个空字符串参数的save命令来删除所有先前配置的save指令
# 如下所示:
#
# save "" save 900 1
save 300 10
save 60 10000 # 默认情况下,如果启用rdb快照保存失败,那么Redis将停止接受写入
# 这就会使用户能够意识到数据不能正确地持久化存储在磁盘上,否则很可能会没人注意到并发生一些灾难
# 如果后台保存过程将再次开始工作,那么Redis就会自动允许再次写入
# 当rdb出现问题时,是否依然继续进行工作,yes:不能进行工作,no:可以进行工作
# 如果配成no的话,表示你不在乎数据的不一致或者有别的办法来控制或者维护
stop-writes-on-bgsave-error yes # 对于存储到磁盘中的快照,你可以设置是和否进行压缩存储。如果是的话,Redis会使用LZF压缩算法进行压缩,
# 如果不想消耗CPU来进行压缩的话,可以关闭此功能。其实影响不大。
rdbcompression yes # 在存储和加载rdb文件的时候是否使用CRC64校验和来进行校验,如果开启,将消耗一定的性能,保持默认设置即可。
# 在禁用校验和的情况下创建rdb文件,校验和为0,这将指示加载代码跳过校验。
rdbchecksum yes # rdb的文件的名称
dbfilename dump.rdb # 工作目录:
# 在哪个目录下启动Redis,那么这个路径就是工作目录,那么redis的日志就是生成在这个目录下
# 数据目录,数据库的写入就是在这个目录下。aof和rdb文件也会写入这个文件夹中。
# 请注意,您必须在此指定路径而不是文件名。
# 可以使用config get dir命令来获取工作目录。
dir ./
如何触发RDB快照:
1.配置文件中的默认快照设置(冷拷贝之后重新使用 copy dump.rdb dump_new.rdb,最好主机和备份机是两台服务器)
2.命令save和bgsave都可以立即生成dump.rdb文件然后之前的旧的rdb文件
save:save只管保存,即当之前save命令的时候,就无法存储数据了
bgsave:Redis会在后台异步进行快照操作。
执行flushall命令也会立即生成dump.rdb文件但是此文件为空。
如何恢复Redis中的数据:
将备份文件复制到Redis的暗安装目录下,然后重新启动服务。
RDB的优势:
适合大数据内容的存储和恢复
相较于AOF,RDB更适合大数据集的恢复
RDB的劣势:
容易丢失最后一次数据的快照
在fork一个子进程的时候,接下来的工作全部由子进程来操作,父进程不进行任何IO操作,所以内存中的数据被克隆了一份,内存的膨胀需要考虑。
如何停止:
动态停止所有保存rdb保存规则的方法:redis-cli config save ""
SECUTITY部分:
################################## SECURITY ################################### #
# 需要用户在执行任何命令之前先输入AUTH<PASSWORD>
#
# 为了保持向后兼容,应该注释掉该命令,因为大部分的用户也不要认证。
#
# 警告:在使用requirepass的时候,由于redis实在是太快了,所以因为设置一个更加安全的密码
#
# requirepass foobared # 命令重命名。
# 可以在共享环境中更改危险命令的名称。 例如,可以将CONFIG命令重命名为一些难以猜测的名称,以便它仍可用于内部使用的工具,但不适用于一般客户。
# 例如:
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#
# 通过将命令重命名为空字符串也可以完全取消该命令:
# rename-command CONFIG ""
#
# 请注意,更改登录到AOF文件或传输到副本的命令的名称可能会导致问题。
secutity部分是全部被注释掉的,所以Redis默认是不需要输入密码的,因为Redis是在Linux环境下的服务器中运行,那么安全要求肯定是很高的。
Clients部分:
################################### CLIENTS #################################### # 设置同时连接的最大客户端数量。默认情况下,此限制设置为10000个客户端连接,
# 但是,如果Redis服务器无法配置进程文件限制以允许指定的限制,则允许的最大客户端数将设置为当前文件限制减去32(因为Redis保留了 内部使用的文件描述符很少)
# 一旦达到限制,Redis将关闭所有新连接,并发送错误消息“已达到最大客户端数”。
# maxclients 10000
内存管理MEMORY MANAGEMENT部分:
############################## MEMORY MANAGEMENT ################################
# 设置能连上redis的最大客户端连接数量。默认是10000个客户端连接。由于redis不区分连接是客户端连接还是内部打开文件或者和slave连接等,所以maxclients最小建议设置到 # 32。如果超过了maxclients,redis会给新的连接发送’max number of clients reached’,并关闭连接。
# 当达到内存限制时,Redis将尝试根据所选的逐出策略(请参见maxmemory-policy)删除key。
# 当Redis无法根据策略删除key时,或者如果策略被设置为“noeviction”时,Redis会对set、push这些指令返回错误消息,而对get之类的指定继续回复
# 当将Redis用作LRU或LFU缓存,或为实例设置硬盘限制(使用“ noeviction”策略)时,此选项通常很有用。
# 注意slave的输出缓冲区是不计算在maxmemory内的。所以为了防止主机内存使用完,建议设置的maxmemory需要更小一些。
# maxmemory <bytes> # MAXMEMORY POLICY: 当内存容量超过设置的maxmemory后的处理策略:
#
# volatile-lru -> 利用LRU算法移除设置过过期时间的key
# allkeys-lru -> Evict any key using approximated LRU.
# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
# allkeys-lfu -> Evict any key using approximated LFU.
# volatile-random -> 随机移除设置过过期时间的key。
# allkeys-random -> Remove a random key, any key.
# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
# noeviction -> Don't evict anything, just return an error on write operations.
#
# LRU means Least Recently Used
# LFU means Least Frequently Used
#
# Both LRU, LFU and volatile-ttl are implemented using approximated
# randomized algorithms.
#
# Note: with any of the above policies, Redis will return an error on write
# operations, when there are no suitable keys for eviction.
#
# At the date of writing these commands are: set setnx setex append
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
# getset mset msetnx exec sort
#
# The default is:
#
# maxmemory-policy noeviction # LRU, LFU and minimal TTL algorithms are not precise algorithms but approximated
# algorithms (in order to save memory), so you can tune it for speed or
# accuracy. For default Redis will check five keys and pick the one that was
# used less recently, you can change the sample size using the following
# configuration directive.
#
# The default of 5 produces good enough results. 10 Approximates very closely
# true LRU but costs more CPU. 3 is faster but not very accurate.
#
# maxmemory-samples 5 # Starting from Redis 5, by default a replica will ignore its maxmemory setting
# (unless it is promoted to master after a failover or manually). It means
# that the eviction of keys will be just handled by the master, sending the
# DEL commands to the replica as keys evict in the master side.
#
# This behavior ensures that masters and replicas stay consistent, and is usually
# what you want, however if your replica is writable, or you want the replica to have
# a different memory setting, and you are sure all the writes performed to the
# replica are idempotent, then you may change this default (but be sure to understand
# what you are doing).
#
# Note that since the replica by default does not evict, it may end using more
# memory than the one set via maxmemory (there are certain buffers that may
# be larger on the replica, or data structures may sometimes take more memory and so
# forth). So make sure you monitor your replicas and make sure they have enough
# memory to never hit a real out-of-memory condition before the master hits
# the configured maxmemory setting.
#
# replica-ignore-maxmemory yes
APPEND ONLY MODE(Redis持久化之aof)
############################## APPEND ONLY MODE ############################### # 默认情况下,redis异步将数据写入磁盘中。此模式在许多应用中已经足够好了,但是redis进程问题或者电源中断可能会导致
# 几分钟的写入丢失(取决于配置的保存点) # 可以同时启用aof和rdb,并且redis先加载aof
# aof是默认关闭的,需要手动开启 appendonly no # aof文件的名称为appendonly.aof appendfilename "appendonly.aof" # Redis支持三种模式:
# appendfsync always: 持续持久化,每次数据发生变更就会记录到磁盘中,数据完整性较好但性能较差
# appendfsync everysec: 出厂默认推荐,每秒记录一次,如果一秒内出现宕机,有数据丢失
# appendfsync no :从不同步
# 如果不确定,就是用默认出厂推荐everysec
# appendfsync always
appendfsync everysec
# appendfsync no # 重写数据的时候能否使用appendfsync对aof文件进行数据的追加。
# 默认使用no,保证数据的一致性。 no-appendfsync-on-rewrite no # 自动重写aof文件
# 当AOF文件大小增加指定百分比时,Redis会自动调用BGREWRITEAOF 进行重写
#
# 触发机制:Redis会记住最近一次重写后文件的大小(如果自重新启动以来,没有发生过重写,那么就是用启动时aof文件的大小)
# 将当前文件的大小和之间记录的文件的大小进行比较,如果超过了指定的百分比就会进行重写。另外,需要指定文件的最小大小,即使超过了指定的百分比,但是没有超过最小的文件大小,也是不会重写的。
# 这对于重写aof文件非常有用。
# 100%就是一倍 auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb #
# If aof-load-truncated is set to yes, a truncated AOF file is loaded and
# the Redis server starts emitting a log to inform the user of the event.
# Otherwise if the option is set to no, the server aborts with an error
# and refuses to start. When the option is set to no, the user requires
# to fix the AOF file using the "redis-check-aof" utility before to restart
# the server.
#
# Note that if the AOF file will be found to be corrupted in the middle
# the server will still exit with an error. This option only applies when
# Redis will try to read more data from the AOF file but not enough bytes
# will be found.
aof-load-truncated yes # When rewriting the AOF file, Redis is able to use an RDB preamble in the
# AOF file for faster rewrites and recoveries. When this option is turned
# on the rewritten AOF file is composed of two different stanzas:
#
# [RDB file][AOF tail]
#
# When loading Redis recognizes that the AOF file starts with the "REDIS"
# string and loads the prefixed RDB file, and continues loading the AOF
# tail.
aof-use-rdb-preamble yes
相同数据集的数据要远大于rdb文件,恢复速度较慢,所以导致aof的运行效率较慢。
AOF总结:
1.RDB持久化方式能够在指定的时间间隔内对数据进行快照存储
2.AOF持久化操作记录每次对数据的写的操作,当服务器重启的时候就会重新执行这些命令来恢复原始的数据。AOF命令还能以Redis追加协议追加保存每次写的操作到文件的末尾。
3.当两种持久化方式都出现的时候,先加载aof文件恢复原始数据。因为AOF文件保存的数据要比RDB文件来的完整。建议不要只使用AOF
4.性能推荐:
因为RDB只用作后备用途,建议只在Slave上保存RDB文件,而且只要15分钟备份一次就够了。只保留save 900 1这条命令就够了。
如果Enable AOF,好处是在最坏的情况下不会丢失超过两秒的数据,启动脚本比较简单,只要load自己的aof文件就行了。代价一是带来了持续的IO,二是AOF rewrite的最后将rewrite过程中产生的新数据写入到新文件中造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小是64M,太小了,可以设置到5G以上。默认超过原大小的100%时就会触发重写机制。
如果不Enable AOF,只靠Master-slave Replication实现高可用性也可以。能省掉一大笔IO也减少了rewrite时带来的系统波动。代价是如果Master Slave同时倒掉,会丢失十几分钟的数据;载入脚本也要比较Master和Slave的RDB文件,加载较新的那个。
Redis的配置文件redis.conf详解的更多相关文章
- yum的配置文件yum.conf详解
说明:经过网上抄袭和自己的总结加实验,非常详细,可留作参考. yum的配置一般有两种方式: 一种是直接配置/etc目录下的yum.conf文件, 另外一种是在/etc/yum.repos.d目录下 ...
- Redis高可用方案哨兵机制------ 配置文件sentinel.conf详解
Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis的主从结构时,如果主节点挂掉,这时是不能自动进行主备切换和通知客户端主节点下线的. Redis-Sentinel机制主要用三 ...
- 004-mac上安装以及Nginx 配置文件nginx.conf详解
1.mac上nginx安装 安装brew:go-001-环境部署,IDEA插件 安装nginx: brew search nginx brew install nginx 当然也可以编译安装 安装完以 ...
- Juno 版 Keystone 主配置文件 keystone.conf 详解
本文全面解读Icehouse发行版keystone的配置文件keystone.conf,由于从keystone提供的服务或依赖的基础设施角度入手,因此[DEFAULT]部分可能被拆分到很多子块中. 关 ...
- Nginx 配置文件 nginx.conf 详解
Nginx的配置文件nginx.conf配置详解如下: user nginx nginx; #Nginx用户及组:用户 组.window下不指定 worker_processes 8; #工作进程:数 ...
- Nginx安装及配置文件nginx.conf详解
1.安装Nginx 在安装Nginx之前,需确保系统已经安装了gcc. openssl-devel. pcre-devel和zlib-devel软件库. 下面是Nginx安装过程: wget http ...
- Nginx安装与配置文件nginx.conf详解
引用“http://ixdba.blog.51cto.com/2895551/790611” 1.安装Nginx在安装Nginx之前,需确保系统已经安装了gcc. openssl-devel. pcr ...
- 配置文件keepalived.conf详解
keepalived.conf 一个功能比较完整的keepalived 的配置文件,其配置文件keepalived.conf 可以包含三个文本块:全局定义块.VRRP 实例定义块及虚拟服务 ...
- redis哨兵机制--配置文件sentinel.conf详解
转载自 https://blog.csdn.net/u012441222/article/details/80751390 Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis ...
- Apache主配置文件httpd.conf 详解
Apache的主配置文件:/etc/httpd/conf/httpd.conf 默认站点主目录:/var/www/html/ Apache服务器的配置信息全部存储在主配置文件/etc/httpd/co ...
随机推荐
- 编写Java程序_定义两个方法,实现奇数偶数的判断,并计算和(有参数有返回值方法)
需求说明: 定义两个方法,在控制台输入一个数字,这两个方法可以求出1到该数字之间所有偶数之和.奇数之和,并将对应结果和返回.在main方法中调用该方法,并在控制台打印出结果.(有参数有返回值方法) 运 ...
- 《MySQL数据操作与查询》- 综合项目 - 航空售票系统
Mysql & SqlServer综合项目需求 1.系统整体功能 系统需支持以下功能: 维护客户信息.航班信息和票务信息 支持客户按多种条件组合查询航班信息和票务信息 支持客户根据票务信息订购 ...
- 美和易思 · 「云农职互联网技术学院」HTML+CSS 做西普尼金表官网
假期作业,好久没碰了,代码写得很烂......写博客纯属记录! 源代码下载地址:https://download.csdn.net/download/weixin_44893902/12805555 ...
- vue3+TypeScript+vue-router使用
简单使用 创建项目 vue-cli创建 $npm install -g @vue/cli $vue --version @vue/cli 4.5.15 $vue create my-project 然 ...
- 最简短的 AC 自动机!
写在前面 仍然是写给自己的,看不懂别怪我. 最简短的 AC 自动机! AC 自动机用于多模匹配. 模式串被插入一个添加了一些转移边的 Trie 中.在匹配的时候,若失配,则使下一个字符跳到该节点的 f ...
- Typescript 字符串字面量类型
字符串字面类型定义的类型是固定的,在其使用时必须是其定义的其中一个字符串,否则会报错 当传入一个定义之外的字符串时,会报错字符串字面量类型.ts(13,20): error TS2345: Argum ...
- python3 f-string格式化字符串的高级用法
从Python 3.6开始,f-string是格式化字符串的一种很好的新方法.与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在Python 3.6之前,有两种将Python表 ...
- mysql 的 limit 与sql server 的 top n
1.东西学多了,难免会混淆 貌似没有错,但是mysql不支持 top n 语法 而是使用 limit n 或 limit n , m 2. top n 语法 是SQL server 的
- [Docker] 制作并运行 Nginx 镜像
环境 操作系统(cat /etc/redhat-release):CentOS Linux release 7.6.1810 (Core) Docker:18.09.6 文件 Dockerfile F ...
- js对cookie的操作:读、写、删
js读写cookie //JS操作cookies方法!//写cookiesfunction setCookie(name,value){var Days = 30;var exp = new Date ...