一、redis的配置文件
常用的23个配置
###################### 通用配置部分 ###################################
1、将其它的redis配置文件包含到当前redis配置文件中来。例如可以在同一主机上多个Redis实例的配置文件中引入同一份公共配置文件。
include /path/to/localredis.conf
2、让redis以守护进程的方式运行,默认为no。
daemonize yes
3、指定一个文件路径,来保存redis的进程id。
pidfile /var/run/redis.pid
4、指定Redis监听端口,默认端口为6379
port 6379
5、设置与哪些ip进行绑定,绑定后就只允许绑定的ip连接当前redis服务。
bind 127.0.0.1
6、当客户端闲置多少秒后,服务端会断开连接,如果指定为0,表示服务端不会主动断开连接
timeout 300
7、指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel verbose
8、指定日志文件的位置。空字符串的话,日志会打印到标准输出设备。后台运行的redis标准输出是/dev/null
logfile /opt/redis/log/redis-6379.log
9、设置redis数据库的数量。默认使用0号库。
databases 16
10、设置同一时间最大客户端连接数,默认无限制。Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。
maxclients 10000
###################### RDB持久化相关 ################################
1、指定RDB的持久化策略,满足某一个策略后就将数据同步到数据文件。持久化频率一般按照从大到小的顺序配置。
save 900 1
save 300 10
save 60 10000
分别表示900秒(15分钟)内有1个改动,300秒(5分钟)内有10个改动或者60秒内有10000个改动。
2、指定RDB文件的数据是否压缩后再存储到磁盘,默认为yes。Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes
3、指定RDB文件名,默认值为dump.rdb
dbfilename dump.rdb
4、指定redis的工作目录(用于保存redis的持久化文件,和进行数据恢复时查找数据文件位置)
dir /opt/redis/workspace
###################### aof持久化相关 ###################################
1、是否开启aof持久化功能。默认为no
appendonly yes
2、指定aof的文件名,默认为appendonly.aof
appendfilename appendonly.aof
3、指定aof的持久化策略,共有3个可选值:
no:表示等操作系统进行数据缓存同步到磁盘(快)
always:表示每次更新操作后自动调用fsync()将数据写到磁盘(慢,安全)
everysec:表示每秒同步一次(折中,默认值)
appendfsync everysec
###################### 主从复制相关 #################################
1、主从复制时设置master的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
slaveof host port
2.、主从复制时,slave服务连接master的密码(如果master设置了连接密码)
masterauth
###################### redis安全相关 #################################
1、设置Redis连接密码,通过auth 命令提供密码,默认关闭
requirepass password
###################### 内存配置相关 ###################################
1.、指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区
maxmemory 2GB
###################### 慢查询日志相关 #################################
1、设置慢查询日志的阈值(单位微妙,1秒=1000毫秒,1毫秒=1000微妙),当命令的执行时间超过该阈值后,该命令就会被记录到慢查询日志中。0 表示会记录所有命令,小于0的数表示不会记录任何命令。
slowlog-log-slower-than 10000
2、慢查询日志队列的最大长度,超过该长度后,最先入队的命令会被弹出队列。
slowlog-max-len 2000
详细的配置文件解析请移步:
https://blog.csdn.net/suprezheng/article/details/90679790
二、redis的数据管理策略
1、过期数据的删除策略
背景:redis中过期的数据不会被立即删除,而是会保留一段时间再删除。此时若过期的数据太多了就大量暂用了内存,那我们应该怎么删除这些过期的数据呢?这就涉及到了redis的数据删除策略。redis提供了三种删除过期数据的策略:
删除的目标:达到redis在内存和cpu之间使用资源的一种平衡。
1)定时删除:用CPU换内存
设置一个自增的定时器,当key的过期时间和定时器的时间一致时,就删除该key。
2)惰性删除:用内存换CPU
过期了先不删除,当下次有人对该key进行操作时,先检查是否过期,若过期了再删除。
3)轮询删除:CPU和内存相对均衡的方案
对redis的DB进行轮询,挨个轮询每秒一个,根据配置文件中的要扫描的key的数量,随机返回该数量的key,检查过期并删除。
若要删除的占返回的key的数量 >25%,则下一秒再次轮询该数据库。
若删除的占返回的key的数量 < 25%,则轮询下一个数据库。
redis使用的是惰性删除和轮询删除两种。
2、未过期数据的逐出策略
背景:当redis存储的数据量超过了redis设置的最大内存使用限制,redis就会报oom异常(out of memory ),此时就无法再往redis中存放数据了,为了保持redis的高可用特性,我们要对redis中的数据进行一定量的逐出操作。那么要对redis中的哪些数据进行逐出操作呢?这是这就涉及到了redis的数据逐出策略。
相关配置:
1)maxmemory 0 #配置redis的最大内存使用限制,0表示不限制
2)maxmemory-samples 3000 #每次要逐出数据的个数
3)maxmemory-policy volatile-lru #配置数据逐出策略为volatile-lru
redis的数据逐出策略(8种)
分成三组:
1、第一组:针对设置了过期时间的数据,从这里面应用如下的逐出算法。(最近一段时间指的是新的数据要被添加时之前的一段时间)
- volatile-lru:(least recently used)最近一段时间内最久未被使用的数据,针对的是时间,最长时间未被使用。
- volatile-lrf:(least frequently used)最近一段时间内使用次数/频率最少的数据,针对的是使用频率小少(在ehcache中对应的是hitCount的值)。
- volatile-ttl:(time to live)快要过期的数据,即过期时间所剩不多的。
- volatile-random:从设置了过期时间的数据中随机挑选删除。
2、第二组:针对整个redis中的所有数据
- allkeys-lru:和上面的lru策略一样,只不过是针对所有数据。
- allkeys-lfu:和上面的lfu策略一样,只不过是针对所有数据。
- allkeys-random:随机挑选删除。
3、第三组:不设置逐出策略,超过最大内存限制后直接报oom
- no-enviction:不逐出数据,redis4.0默认策略。
上一篇:3、redis内置的小功能
下一篇:5、redis的数据持久化