Redis系统学习之配置文件解读(非常全)
Redis配置详解
单位(设置大小写不明感
# 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.默认忽略大小写
包含其他配置文件
# 和Spring的包含是一样的,可以多配置文件,通过主配置文件包含进来
# include .\path\to\local.conf
# include c:\path\to\other.conf
网络配置
配置允许访问的IP
# Examples: # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 bind 127.0.0.1 可以配置多个指定IP通过空格分开,也可以配置*通配符
保护模式(在没有开启bing Ip或设置密码之前,需要开启保护模式防止直接暴露到外网)
protected-mode yes
端口号配置(默认为6379)
port 6379
通用配置
守护进程
daemonize yes # windows没有这个配置,只有在Linux中有,默认是no,控制台执行,修改为yes后为后台执行
pidfile /var/run/redis_6379.pid #如果以守护进程方式运行,需要指定.pid文件,默认有不用管
日志级别
# Specify the server verbosity level. # This can be one of: # debug (a lot of information, useful for development/testing) 开发环境/测试环境 # verbose (many rarely useful info, but not a mess like the debug level) 和debug差不多 # notice (moderately verbose, what you want in production probably) 生产环境 # warning (only very important / critical messages are logged) 重大错误才打印 loglevel notice #默认为生产环境,不用动
日志文件位置
# Specify the log file name. Also the empty string can be used to force # Redis to log on the standard output. Note that if you use standard # output for logging but daemonize, logs will be sent to /dev/null logfile "" # 如果不是守护进程运行,默认在控制台打印,如果是守护进程运行,那么默认会存放到 /dev/null 中,可以在这里手动配置日志文件位置
数据库数量
# 可以设置数据库的数量,默认为16个. 默认采用数据库0, 可以通过select did切换 # 可以切换的数据库的did,范围为0-(数据库数量-1),因为是从0开始的 databases 16
启动时是否打印logo
always-show-logo yes #默认为打印,只有在控制台运行才可以看见,守护进程看不见,截图是windows的
快照配置(持久化配置)
redis是内存数据库,断电就会没有了,所以就会需要有持久化配置
保存数据库到磁盘
# save <seconds> <changes> 配置方式 # 含义 保存 秒数 改变 # 也就是说在多少秒之后,有多少key发生改变,执行保存到磁盘 # 可以根据生产环境的并发数配置 # 默认配置: save 900 1 # 900 秒之后有至少有一个key发生变化,就保存到磁盘,执行一次持久化 save 300 10 # 300 秒后至少有10个key发生变化,才保存到磁盘,执行一次持久化 save 60 10000 # 60 秒之后至少有10000个key发生变化,才保存到磁盘,执行一次持久化
持久化报错是否允许redis继续写入
stop-writes-on-bgsave-error yes #默认是允许的,在持久化失败之后也允许继续写入,如果希望再持久化失败后,停止redis的写入,那么可以修改为no
rdb持久化数据是否压缩
rdbcompression yes #默认也是开启压缩的,压缩就会耗费CPU的资源,不压缩就会耗费磁盘的内存和IO的性能
rdb持久化数据时是否校验
#由于RDB版本5,CRC64校验和放在文件的末尾。 #这使格式更能抵抗损坏,但在保存和加载RDB文件时,性能会受到影响(约10%),因此可以禁用它以获得最大性能。 #在禁用校验和的情况下创建的RDB文件的校验和为零,这将告诉加载代码跳过检查。 rdbchecksum yes #默认开启rdb持久化校验,看场景,如果对持久化数据要求比较严格,那么开启检查是比较好的选择,如果对于性能要求比较高,数据要求不是很严格,那么可以关闭检查,用于提高持久化的性能
rdb持久化文件名称和位置
dbfilename dump.rdb #配置rdb持久化文件的名称,默认为dump.rdb 注意:只能配置名字
dir ./ #配置rdb持久化文件的位置,默认是当前路径 注意:只能配置路劲
主从复制(不在这里写,看下面的主从复制)
安全
密码设置
#要求客户端在处理任何其他命令之前发出AUTH<PASSWORD>。在您不信任其他人可以访问运行redis服务器的主机的环境中,这可能很有用。
#为了向后兼容性和大多数人不需要auth(例如,他们运行自己的服务器),这应该被注释掉。
#警告:由于Redis速度非常快,外部用户可以在一个好的盒子上每秒尝试多达150k个密码。这意味着你应该使用一个非常强大的密码,否则它将很容易被打破。
# requirepass foobared # 密码默认是关闭的 可以通过删除前面的井号来开启密码,密码默认是foobared,建议修改为自己的密码,并且保证密码强度
除了配置文件设置密码,也可以通过命令设置密码,但是一般不使用,都会在redis启动之前设置好
127.0.0.1:6379> config get requirepass #获取密码,默认为空 1) "requirepass" 2) "" 127.0.0.1:6379> config set requirepass 123456 #设置密码 OK 127.0.0.1:6379> ping #尝试连接,发现提示没有认证 (error) NOAUTH Authentication required. 127.0.0.1:6379> get name #尝试操作也提示没有认证 (error) NOAUTH Authentication required. 127.0.0.1:6379> auth 123456 #认证 OK 127.0.0.1:6379> ping #认证后再次尝试 就可以了 PONG 127.0.0.1:6379>
客户端配置
最大连接数配置
#设置同时连接的最大客户端数。默认情况下,此限制设置为10000个客户端,但是如果Redis服务器无法配置进程文件限制以允许指定的限制,则允许的最大客户端数将设置为当前文件限制减去32(因为Redis保留了一些文件描述符供内部使用)。
#一旦达到限制,Redis将关闭所有新连接,并发送一个错误“max number of clients reached(达到最大用户数上限)”。
#
# maxclients 10000 #默认是10000,如果需要修改,可以删除掉前面的井号,并指定一个合适的数量
内存配置
最大内存配置
# 默认是关闭的,如果不设置maxmemory或者设置为0,64位系统不限制内存,32位系统最多使用3GB内存
# maxmemory是bytes字节类型,注意转换。
# 一般推荐Redis设置内存为最大物理内存的四分之三
# 一般设置最大内存之后,还会设置,内存的淘汰策略,就是内存达到上限之后的处理方式
# maxmemory <bytes>
淘汰策略
- LRU
- LRU(Least Recently Used)最近最少使用。优先淘汰最近未被使用的数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
- LFU
- Least Frequently Used,使用频率最少的(最不经常使用的),优先淘汰最近使用的少的数据,其核心思想是“如果一个数据在最近一段时间很少被访问到,那么将来被访问的可能性也很小”。
- LRU和LFU的区别
- 如果一条数据仅仅是突然被访问(有可能后续将不再访问),在 LRU 算法下,此数据将被定义为热数据,最晚被淘汰。但实际生产环境下,我们很多时候需要计算的是一段时间下key的访问频率,淘汰此时间段内的冷数据。
- LFU 算法相比 LRU,在某些情况下可以提升 数据命中率,使用频率更多的数据将更容易被保留。
- 大概知道这些就可以了,因为在项目上线中,如果是大公司,那么这些不用你担心,如果是小公司,估计也用不到
APPEND ONLY (AOF配置)
##############################仅附加模式############################### #默认情况下,Redis将数据集异步转储到磁盘上。这种模式在许多应用程序中已经足够好了,但是Redis进程出现问题或断电可能会导致几分钟的写丢失(取决于配置的保存点)。 # 默认是RDB #AOF文件是一种可选的持久性模式,它提供了更好的持久性。例如,如果使用默认的数据fsync策略(见后面的配置文件),Redis可能会在服务器断电之类的戏剧性事件中丢失一秒钟的写操作,或者如果Redis进程本身发生错误,但操作系统仍然正常运行,则会丢失一次写操作。 #AOF和RDB持久性可以同时启用而不会出现问题。如果启动时启用了AOF,Redis将加载AOF,即具有更好持久性保证的文件。 # 默认AOF,是关闭的,因为几乎大部分的情况下RDB是完全够用的 appendonly no # 文件的名字 默认为 apendonly.aof appendfilename "appendonly.aof" #Redis支持三种不同的模式: # no:不同步,只要让操作系统在需要时刷新数据即可。更快。 # always:每次操作都同步。慢,最安全。 # everysec:每秒只同步一次。妥协。 #默认值是“everysec”,因为这通常是速度和数据安全之间的正确折衷。这取决于您是否可以将其放宽到“no”,以便操作系统在需要时刷新输出缓冲区,从而获得更好的性能
(但是如果您能够接受有些数据丢失会考虑使用默认的持久化模式(快照),或者相反,使用“总是”,这非常慢,但比快照更安全 #如果不确定,请使用“everysec”。 # appendfsync always #每次操作都同步,消耗性能,但是安全 appendfsync everysec #每秒同步一次,但是很可能丢失这一秒的数据,折中 # appendfsync no #不执行,让操作系统处理,快,但是安全比较低
作者:彼岸舞
时间:2021\05\05
内容关于:Redis
本文属于作者原创,未经允许,禁止转发