Redis相关知识梳理——配置信息

140 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

reids配置

通用配置

  1. 容量单位大小写不敏感

  2. 通过inclue可以将多个配置文件读取进来

  3. bind绑定ip

  4. port指定端口

  5. daemonize设置是否以守护进程的方式运行

  6. pidfile如果时守护进程方式运行就需要设置pidfile(/var/run/redis_6379.pid),启动时生产,退出时删除

  7. 日志级别loglevel

     # debug (a lot of information, useful for development/testing)
     # verbose (many rarely useful info, but not a mess like the debug level)
     # notice (moderately verbose, what you want in production probably)
     # warning (only very important / critical messages are logged)
    
    
    
  8. 日志文件logfile,默认为空表示不生成日志文件,如果不设置,以守护程序启动,日志文件会输出到/dev/null

  9. databases 数据库数量,默认16个

  10. always-show-logo yes;是否显示logo

快照

持久化:在规定时间内,执行多少次操作,则会持久化到文件 .rdb .aof

1.save

save 900 1  #如果900秒内如果一个key进行了修改,则进行持久化
save 300 10 #300秒内10个key进行了修改,进行持久化
save 60 10000


#在持久化失败时是否继续运行
stop-writes-on-bgsave-error yes
#是否压缩rdb文件
rdbcompression yes
#持久化时是否检查rdb文件
rdbchecksum yes
#rdb文件名称
dbfilename dump.rdb
#rdb文件目录
dir ./

REPLICATION 主从复制

SECURITY

requirepass psw #设置密码
rename-command #重命名命令名称,在共享环境下重命名一些危险的命令,重命名为''则可以禁用一些命令

CLIENTS限制

 maxclients 10000 #现在最多允许10000(默认值)个客户端同时连接

MEMORY MANAGEMENT 内存管理

maxmemory <bytes>  #设置一个内存的限定字节数。当达到限制大小,redis会尝试移除keys。
maxmemory-policy noeviction#内存满后的移除策略
# volatile-lru -> 在过期集合中采用lru策略进行移除
# allkeys-lru -> 所有的key集合中采用lru策略移除
# volatile-lfu -> 设有过期时间的key集合中采用lfu策略移除
# allkeys-lfu -> 所有的key集合中采用lfu策略移除
# volatile-random -> 在设有过期时间的key集合中随机移除
# allkeys-random -> 所有key集合中随机移除
# volatile-ttl -> 移除最近过期的key
# noeviction -> 不做任何处理,仅在写操作时返回一个错误信息
 maxmemory-samples 5 #移除时并非全量进行lru,会取用部分样本进行算法计算,该配置设置样本数大小。
 replica-ignore-maxmemory yes #副本是否忽略内存管理配置(redis 5开始,副本将忽略该配置)

LRU是最近最少使用页面置换算法,淘汰最长时间未被使用的页面;而LFU是最近最不常用页面置换算法,淘汰一定时期内被访问次数最少的页。LRU关键是看页面最后一次被使用到发生调度的时间长短;而LFU关键是看一定时间段内页面被使用的频率

样本数默认值为5会产生足够好的结果。10非常接近真正的LRU,但需要更多的CPU。3更快,但不是很准确。

APPEND ONLY MODE(AOF模式)

appendonly no #默认不开启,默认使用rdb方式持久化,在大部分情况下rdb完全够用。
appendfilename "appendonly.aof"#持久化的文件名字
# appendfsync always  #每次修改都会同步,消耗性能
appendfsync everysec # 每秒执行一次同步,可能会丢失这1s的数据
# appendfsync no     #关闭同步

Redis持久

redis是内存数据库,所以必须持久化才能保存数据状态。

持久化有两种方式:rdb和AOF;

rdb

rdb保存的文件时dump.rdb,rdb是快照。

rdb持久化触发机制:

  1. save规则满足;
  2. 执行flushall命令;
  3. 退出redis也会产生rdb文件。

AOF

将所有的命令以日志的形式将所有的写操作记录下来,在启动的时候重新执行写操作。

默认时不开启的,需要手动开启。

保存的文件是appendonly.aof。

如果aof文件被意外篡改了,用redis-check-rdb工具进行修复。修复方式就是把错误的日志命令移除!!!!