Redis 相关配置,主要是对redis.conf 的讲解
[root@hadoop102 ~]# cd /myredis/
[root@hadoop102 myredis]# vim redis.conf
1、计量单位说明
大小写不敏感
2、include
把外面的配置文件,引入到里面来,有什么好处?? 解耦
类似jsp中的include,多实例的情况可以把公用的配置文件提取出来
3、 ip地址的绑定(bind)
(1)默认情况bind=127.0.0.1只能接受本机的访问请求
(2)不写的情况下,无限制接受任何ip地址的访问,需要关闭保护模式来配合
(3)生产环境肯定要写你应用服务器的地址
(4)如果开启了protected-mode,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的相应
注意:如果ip给注释掉后,又没有设置密码,需要把protected-mode 保护模式设置为no,关闭模式
4、tcp-backlog
(1)可以理解是一个请求到达后至到接受进程处理前的队列
(2)backlog队列,相当于两个队列,一个是握手队列,一个是等待执行的队列
(3)高并发环境tcp-backlog 设置值,跟超时时限内的Redis吞吐量决定
注意:轻易不改,因为还需要该系统之类…
5、timeout
一个空闲的客户端维持多少秒会关闭,0为永不关闭。
注意:生产环境基本设置为60秒
6、TCP keepalive
对访问客户端的一种心跳检测,每个n秒检测一次,检查所有连接我的客户端是否活着
官方推荐设为60秒。
7、daemonize
是否为后台进程
daemonize yes
注意 基本都是设置为后台启动
8、pidfile
存放pid文件的位置,每个实例会产生一个不同的pid文件
进程号,存在一个文件里
9、log level
java 日志级别有
trace、debug、info、error、warn、fatal
日志为什么要分级别呢?
不同的场景,不同情况下,我对日志打出的密度是有不同的需求
redis分四个级别
四个级别根据使用阶段来选择,生产环境选择notice 或者warning
10 、logfile
日志文件名称
logfile ""
注意:空着表示不输出,要是看日志可以设置路径和文件名
11、database
设定数据库的数量 默认16,也可以调多点
生产上基本0号库就ok了
12、security 安全
设置密码 123123
[root@hadoop102 myredis]# vim redis.conf
requirepass 123123
// 修改配置文件,需要重启
[root@hadoop102 myredis]# redis-cli shutdown
[root@hadoop102 myredis]# redis-server /myredis/redis.conf
[root@hadoop102 myredis]# redis-cli
//设置密码后,需要通过auth + 密码 来获取权限
127.0.0.1:6379> auth 123123
OK
(1)在命令行中设置密码,通过 config get * 命令 查看可以在线修改的参数
127.0.0.1:6379> config get *
1) "dbfilename"
2) "dump.rdb"
3) "requirepass"
4) ""
5) "masterauth"
6) ""
133) "unixsocketperm"
134) "0"
135) "slaveof"
136) ""
137) "notify-keyspace-events"
138) ""
139) "bind"
140) "127.0.0.1"
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> config set requirepass "123123"
OK
127.0.0.1:6379> get k1
(error) NOAUTH Authentication required.
//设置密码后,需要通过auth + 密码 来获取权限
127.0.0.1:6379> auth 123123
OK
127.0.0.1:6379> get k1
(nil)
127.0.0.1:6379>
(2)配置文件设置密码
requirepass 123123
127.0.0.1:6379> AUTH 123123
注:AUTH 是设置密码后,获取权限的意思
13、maxclient
最大客户端连接数
Maxclient 10000
注:默认是一万个,基本不修改,太大了,redis可能会扛不动
14、maxmemory
(1)设置Redis可以使用的内存量。一旦到达内存使用上限,Redis将会试图,移除内部数据,移除规则可以通过maxmemory-policy来指定。
(2)如果Redis无法根据移除规则来移除内存中的数据,或者设置了"不允许移除",那么Redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。
注: 设置"不允许移除"不好,容易导致雪崩效应
15、Maxmemory-policy
默认
[root@hadoop102 myredis]# vim redis.conf
Maxmemory-policy noeviction
(1)volatile-lru:使用LRU算法移除key,只对设置了过期时间的键
(2)allkeys-lru:使用LRU算法移除key
(3)volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键
(4)allkeys-random:移除随机的key
(5)volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key
(6)noeviction:不进行移除。针对写操作,只是返回错误信息
16、Maxmemory-samples 样本
从内存移除数据的时候,本来资源就紧张,不会把全部数据,按照规则都算一遍,这样将消耗大量的性能,按照抽取样本的方式,样本不要太大,否则性能消耗大,也不要太小
(1)设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小。
(2)一般设置3到7的数字,数值越小样本越不准确,但是性能消耗也越小。