为了安全和性能考虑,生产环境必须要对配置文件进行自定义设置才可以使用。那么到底有哪些重要配置项,这些配置项该如何设置,这一篇我们一起来看看。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
配置项详解
配置文件比较长,可以采用less -mN redis.conf
来进行查看
下面是一些基本参数
- bind 127.0.0.1
用来绑定一个网卡地址,如果注释掉所有bind会默认绑定所有的网卡,这样会把redis暴露给整个互联网,非常危险。
- port 6379
绑定一个端口号
- timeout 0
客户端闲置多长时间关闭连接,如果设置为0则是关闭这一功能
- daemonize no
上一篇已经提到这个,用来将redis后台运行,默认是no,需要改为yes
- pidfile /var/run/redis_6379.pid
pid的写入文件
- loglevel notice
日志记录级别,从详细到粗略分别debug,verbose,notice,warning,默认是notice
- logfile “”
日志文件位置,空的字符串表示标准输出。如果以daemon方式运行redis又以标准输出方式记录log,那么日志会被写入/dev/null
- databases 16
redis支持多达16个数据库
下面的参数和本地持久化有关
- save
持久化到硬盘的规则设定,默认设定如下,表示900秒内1次key修改,或者300秒内10次key修改,或者60秒内10000次修改,都会进行持久化操作
save 900 1
save 300 10
save 60 10000
- rdbcompression yes
持久化为rdb的时候采用压缩模式,保持yes即可
- dbfilename dump.rdb
数据库本地存储的文件名,默认为dump.rdb
。
- dir ./
数据库本地存储的目录,默认为配置文件的相同目录
如果是按照上一篇的安装方法,存储目录在/usr/local/redis/
下面的参数和主从备份有关
- replicaof
如果配置了replica备份的话,本机redis为slave情况下配置master的地址
- masterauth
master端的密码
等后面讲主从复制的时候再详细讲这一部分的参数
下面的参数和安全性有关
- requirepass foobared
设置redis的访问密码,默认是没有设置密码的。设置密码后需要通过AUTH <password>
去进行验证。需要注意的是Redis 4以后不设置密码的话是无法访问的。同时,因为redis非常快,每秒钟可以响应150k次密码尝试,所以密码的复杂度要尽量高一些。
下面的参数和客户端连接有关
- maxclients 10000
客户端最大连接数,默认是10000。不过实际上的连接数还受到单进程能打开的最大文件数限制。
下面的参数和内存管理有关
- maxmemory
redis能使用的最大内存,需要根据实际物理机器的内存大小去设置。当达到最大内存后只能读不能写,并且key存在内存,value会存到swap中。
- maxmemory-policy noeviction
达到最大内存后的处理机制,一共有下面几种设置,其中allkeys-lru
是实际最常用的方式
volatile-lru -> 针对设定了超时时间的key采用LRU准则去删除key
allkeys-lru -> 针对所有key采用LRU准则去删除key
volatile-lfu -> 针对设定了超时时间的key采用LFU准则去删除key
allkeys-lfu -> 针对所有key采用LFU准则去删除key
volatile-random -> 针对设定了超时时间的key随机删除
allkeys-random -> 随机删除key
volatile-ttl -> 对马上要过期的key进行删除
noeviction -> 不删除任何key,返回错误
LRU - Least Recently Used
LFU - Least Frequently Used
下面的参数和append only模式有关
- appendonly no
因为并不是每次更新后都有持久化,所以肯定有部分数据只存在于内存中,在断电或者机器故障情况下会丢失。appendonly文件功能开启的话会在每次更新之后更新该文件,做为一个日志记录,提供更强的鲁棒性。默认是关闭的。
- appendfilename “appendonly.aof”
指定appendonly文件的文件名
- appendfsync everysec
指定appendonly文件的更新频率,如果不确定就保持每秒更新一次即可。
自定义配置
修改以下几个配置项,对单机运行Redis进行优化。
如果是按照上一篇来进行的安装,在如下目录编辑配置
[root@testmachine redis]# pwd
/usr/local/redis
[root@testmachine redis]# vim redis.conf
- daemonize yes
采用守护进程进行运行
- #bind 127.0.0.1
注释掉,允许外部链接来访问
- requirepass xiaofu
设置一个访问密码
修改完成后启动或者重启redis服务
[root@testmachine redis]# systemctl start redis
我在上一篇已经将redis设置为系统服务,所以这里直接用systemctl命令
然后在另一个terminal试着启动客户端访问一下
[root@testmachine bin]# ./redis-cli
127.0.0.1:6379>
还是很正常的连接了,但是查询key的话就会报错
[root@testmachine bin]# ./redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379>
所以不能用上一篇的方式来连接了,要采用下面的方法。如果是本机地址可以忽略-h
选项,如果是默认端口6379可以忽略-p
选项
redis-cli -h <hostname> -p <port> -a <password>
更多参数可以通过redis-cli --help来查看
重新启动客户端
[root@testmachine bin]# ./redis-cli -a xiaofu
发现可以查询key了
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
尝试以下赋值和查询也都正常
127.0.0.1:6379> set name xiaofu
OK
127.0.0.1:6379> get name
"xiaofu"
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379>
需要补充的是这些数据都还在内存中,如果这时候直接停掉redis服务这些数据是会丢失的。
总结
知道了如何启动和连接到redis还不够,还有一个很重要的技能就是如何关闭redis。如果不小心关闭了redis而数据还在内存中没有持久化,就会造成数据的丢失。下一篇我们一起来看如何正确关闭redis。