Redis 的配置文件一般在 /opt/redis-6.x.x/redis.conf 中。
Redis 配置文件结构
redis.conf 被分成了多个部分,每部分都用 ###
分割开。
Units 单位
配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit。
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
INCLUDES 包含
可以引入其他配置文件,这样方便把公共配置放到一起。
# include /path/to/local.conf
# include /path/to/other.conf
NETWORK 网络
默认情况bind 为 127.0.0.1,此时只能接受本机的访问请求。
不写的情况下,无限制接受任何ip地址的访问。
如果开启了protected-mode,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的响应。
# bind 192.168.1.100 10.0.0.1 # listens on two specific IPv4 addresses
# bind 127.0.0.1 ::1 # listens on loopback IPv4 and IPv6
# bind * -::* # like the default, all available interfaces
默认绑定的IP为 本机
bind 127.0.0.1 -::1
默认开启保护模式
protected-mode yes
默认绑定的端口号为 6379
port 6379
一个空闲的客户端维持多少秒会关闭,0表示关闭该功能,即永不关闭。
timeout 0
对访问客户端的一种心跳检测,每个n秒检测一次。如果设置为0,则不会进行Keepalive检测。
tcp-keepalive 300
GENERAL 通用
通用的一些配置项。
是否为后台守护进程,默认为 no,这样在关闭启动命令窗口后,Redis 就停止了,一般建议改为 yes。
daemonize no
指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为notice
loglevel notice
日志文件名称
logfile ""
设定库的数量 默认16,默认数据库为0,可以使用SELECT <dbid>命令,连接上指定id数据库。
databases 16
SECURITY 安全
主要是配置 redis 的密码。
设置 redis 的密码
# requirepass foobared
在命令中设置密码,只是临时的。重启redis服务器,密码就还原了。
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> config set requirepass 333
OK
设置完成后,在另一个控制台:
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 333
OK
127.0.0.1:6379> ping
PONG
MEMORY MANAGEMENT 内存管理
建议设置最大占用内存 maxmemory,否则,将内存占满,造成服务器宕机。
设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。
# maxmemory <bytes>
内存过期策略:
# volatile-lru -> Evict using approximated LRU, only keys with an expire set.
# allkeys-lru -> Evict any key using approximated LRU.
# volatile-lfu -> Evict using approximated LFU, only keys with an expire set.
# allkeys-lfu -> Evict any key using approximated LFU.
# volatile-random -> Remove a random key having 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.
- volatile-lru:使用LRU算法移除key,只对设置了过期时间的键;(最近最少使用)
- allkeys-lru:在所有集合key中,使用LRU算法移除key
- volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键
- allkeys-random:在所有集合key中,移除随机的key
- volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key
- noeviction:不进行移除。针对写操作,只是返回错误信息
SNAPSHOTTING 持久化
持久化在配置在专门章节。