4、redis的配置文件与数据管理策略

一、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的数据持久化

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值