这是个人的学习笔记,主要学习资料如下:
- B站狂神说,Redis教程
目录
- 1、配置文件redis.cofig
- 1.1、命令修改配置项
- 1.2、配置项详解
- 通用配置
- 快照设置(RDB存储)
- RDB和AOF是什么
- 配置信息
- 快照设置(AOF存储)
- 主从复制设置
- 安全设置
- 客户端设置
1、配置文件redis.cofig
redis的配置文件就在安装目录下,redis.config
文件,我使用brew安装,默认安装目录是/usr/local/etc
。
1.1、命令修改配置项
- 查看配置项:启动以后,我们可以直接使用
config get key
的方式来查看配置项,例子如下,获得的配置项的值确实是我设置的,不是默认值。
- 动态设置配置项:
config set key value
。需要注意的一点是,修改配置项不会修改到原配置文件,只是修改『redis当前正在使用的配置信息』。
127.0.0.1:6379> config get save
1) "save"
2) "3600 1 300 100 60 10000"
127.0.0.1:6379> config set save "10 10"
OK
127.0.0.1:6379> config get save
1) "save"
2) "10 10"
1.2、配置项详解
- include多个配置文件:35行的位置,可以include其他路径的配置文件。
- 绑定的ip:69行。默认指定本机,意思是只接受来自本机的redis请求。如果我们想要接受外部的请求,那要用修改这项内容,其中会用到一些通配符。
如果这一项没有配置,那意味着本机的redis服务会接收所有的请求,相当于直接暴露给外部,这非常危险。
bind 127.0.0.1 ::1
- 绑定端口号:92行,默认监听6379端口号。
port 6379
- 安全模式:88行。默认是开启的,如果关闭了,那意味着redis服务端可以接受没有验证过的请求。
protected-mode yes
通用配置
- 设置redis服务为守护进程:136行。默认不是守护进程,如果设置为守护进程的话,会产生redis.pid文件。建议开启,这样redis服务就不会突然自己就结束。
daemonize no
- 指定redis.pid文件地址:158行。当redis被设置成守护进程时,系统会根据这个地址产生redis.pid文件。默认值是
/var/run/redis_6379.pid
。
这个文件即使生成失败,也不会影响redis服务的运行。 - 指定redis的日志级别:166行。可以指定redis的日志级别,可选的级别可看备注。默认的级别是
notice
。
# 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)
# notice (moderately verbose, what you want in production probably)
# warning (only very important / critical messages are logged)
loglevel notice
- 设置日志文件地址:171行。可以指定redis产生的日志的位置。默认值是空,这时redis会将日志信息输出到标准输出流之中。
logfile ""
- 数据库的个数:186行。默认16个
databases 16
- 是否显示logo:194行。这个logo指的是使用指令
redis-sever
启动redis服务时,打印出来的那个巨大盒子logo。
always-show-logo yes
快照设置(RDB存储)
RDB和AOF是什么
RDB是Redis Data Base
的缩写,AOF是Append Only File
的缩写。
配置信息
- 设置保存快照的时间规则:218行。保存规则是,累计有y条数据被改变,那在x秒后会持久化一次。语法是
sava x y
。可以同时设置多条规则。默认有三条规则,如代码所示。
save 900 1
save 300 10
save 60 10000
- 持久化发生错误时,是否继续工作:235行。默认情况下,只要发生持久化错误,redis就会停止服务(但不是完全停止,之后是有机会自动在开启服务的)。这算是一个强提醒,提醒开发者持久化失败。
如果持久化工作又重新开始,那redis又会开启服务(原注释是再次允许写入,Redis will automatically allow writes again,我理解成再次开启服务,待验证)。
stop-writes-on-bgsave-error yes
- 是否压缩持久化文件:241行。默认开启压缩,这会消耗一定的CPU资源。
rdbcompression yes
- 是否持久化文件校验:250行。校验持久化文件,让文件格式更好(反正就是表现更好)。但是会对性能有较大的消耗,注释文档说大概有10%的损耗。默认是开启校验的。
rdbchecksum yes
- 持久化文件的文件名:253行。默认是dump.rdb文件。
dbfilename dump.rdb
- 持久化文件保存路径:263行。注意是目录,不是文件。默认值是
/usr/local/var/db/redis/
。
dir /usr/local/var/db/redis/
快照设置(AOF存储)
- 设置快照模式:699行。默认是RDB模式。
appendonly no
- 设置存储文件名:703行。默认名是
appendonly.aof
。
appendfilename "appendonly.aof"
- 设置同步时间:729行。操作系统也有自己的策略去同步数据,我们无法控制操作系统的策略。这个选项是强制要求操作系统同步数据的时间。
# appendfsync always 一有修改,就同步一次
appendfsync everysec # 每秒同步一次
# appendfsync no 不同步,让操作系统想什么时候同步就什么时候同步
主从复制设置
安全设置
- 设置访问密码:507行。这条设置默认被注释掉,表示不需要密码就可访问redis服务。我们可以设置密码,语法是
requirepass password
(不知道为什么文档要写成foobared)
requirepass foobared
如果设置了密码,要先使用```auth password```先登录,之后才可以继续其它操作。
客户端设置
- 设置最大连接数:539行。默认支持最大10000个客户端连接redis服务。
maxclients 10000
- 设置redis可占用的最大内存:566行。单位是byte,有个默认大小,注释文档没写多少。
maxmemory <bytes>
- 内存不够时的处理策略:597行。有多个处理策略可选,详细可看注释,默认是noeviction,也就是什么都不管,直接抛出异常返回。
# volatile-lru -> Evict using approximated LRU among the keys with an expire set.
# 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 -> Remove a random key among the ones with an expire set.
# 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.
maxmemory-policy noeviction