Redis——学习之路三(初识redis config配置)
我们先看看config 默认情况下系统是怎么配置的。在命令行中输入 config get *(如图)
默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息。
我们就从上到下来理解一下这些配置信息中的某些配置:
1.dbfilename是本地持久化存储数据库文件名,默认为dump.rdb。我可以在安装目录文件夹下找到这个文件。
2.requirepass是密码,即连接服务器的密码,默认为空。下面我来设置一个密码然后用带密码的命令连接一遍。
3.msterauth设置连接mster服务的密码(主从服务器的主服务器)。
4.logfile日记记录的地址及文件名称。
5.maxmemory 设置最大内存
6.timeout一个客户端闲置多少秒后关闭,默认是0,代表禁止,永不关闭
7.auto-aof-rewrite-percentage AOF重写文件的百分比,如果是100表示整个文件重写,如果是0表示禁用AOF自动重写特性
8.auto-aof-rewrite-min-size 当前AOF文件大于多少是开始重写AOF文件
9.hash-max-zipmap-entries 512 配置字段最多512个。
10.hash-max-zipmap-value 64 配置value最大为64字节。
11.list-max-ziplist-entries 512 配置list最大长度512个
12.list-max-ziplist-value 64 配置list的value最大长度64字节
13.set-max-intset-entries 512 配置set最大长度512个
14.zset-max-ziplist-entries 128 配置zset最大长度512个
15.zset-max-ziplist-value 64 配置zset的value最大长度64字节
16.slowlog-log-slower-than 10000 配置这个告诉redis当一个命令执行超过多少时会被记录,单位是微秒。被记录的命令我们可以通过查看slowlog get 100(number) 查看
17.slowlog-max-len 128 设置日记记录的条数
18.port 6379 端口号为6379
19.databases 16 当前redis服务器有16个数据库
20.repl-ping-slave-period 10 salve根据时间间隔向master发送ping请求,默认是10秒。
21.repl-timeout 60 设置同步的超时时间 默认60秒
22.repl-backlog-size 1mb 设置数据备份的backlog大小,当一个slave在一段时间断开连接时记录salve数据的缓冲,当它重新连接时,不必同步全部数据。
23.repl-backlog-ttl 3600 当slave在一段时间断开后多少时间我们释放backlog中的数据。
24.maxclients 10000 最大同时连接的客户端数量
25.slave-priority 100 slave优先级,如果master不再正常工作了,哨兵将用它来选择一个slave提升为master。数字越小 优先级越高,但是数字为0时这个slave永远不会提升为master。
26.min-slaves-to-write N与min-slaves-max-lag M是一起设置的。表示如果master少于N个延迟小于等于M秒的已连接slave,就可以停止接收写操作。
27.slave-server-stale-date yes 当一个slave失去可master的连接时,或者正在进行同步中,我们设置slave-server-stale-date为yes表示slave会继续响应客户端请求,可能是正常数据,也可能是还没有获取值的空数据。如果我们设置slave-server-stale-date为no表示slave会"正在从matser同步(SYNC with master in prograess)"
28.slave-read-only yes 设置你的slave服务是否为只读
29.stop-write-on-bgsave-error yes 如果开启RDB并且最新的后台保存失败,将禁止用户对redis进行写的操作,提示用户保存失败了
30.daemonize no 默认在window下不支持这个配置,在linux下可以。表示默认redis不会作为守护进程运行。如果配置为yes就是守护进程,如果设置为守护进程就需要了解这个配置pidfile /var/run/redis.pid 配置守护进程的位置。
31.rdbcompression yes当导出rdb文件时是否用LZF压缩字符串对象。默认是yes,因为它几乎在任何情况下都是不错的,但是如果我们想节省CPU的话可以设置no,但是如果你有压缩了数据文件就会更大了。
32.rdbchecksum yes 是否添加一个校验放在文件最后,多消耗10%的性能。所有我们可以关掉它来提高性能。
33.aof-rewrite-incremental-fsnc yes 当一个子进程重写AOF文件时,如果启用,则文件每生成32M数据会被同步。为了增量式的写入硬盘并且避免大的延迟高峰这个指令是非常有用的。
34.dir 数据库工作的目录。
35.maxmemmory-policy volatile-lru 内存达到上线删除key的策略
# volatile-lru -> 根据LRU算法生成的过期时间来删除。
# allkeys-lru -> 根据LRU算法删除任何key。
# volatile-random -> 根据过期设置来随机删除key。
# allkeys->random -> 无差别随机删。
# volatile-ttl -> 根据最近过期时间来删除(辅以TTL)
# noeviction -> 谁也不删,直接在写操作时返回错误。3
36.appendfsync everysec fsync() 系统调用告诉操作系统把数据写到磁盘上,而不是等更多的数据进入输出缓冲区。
# Redis支持三种不同的模式:
# no:不要立刻刷,只有在操作系统需要刷的时候再刷。比较快。
# always:每次写操作都立刻写入到aof文件。慢,但是最安全。
# everysec:每秒写一次。折中方案。
37.save 900 1 save 300 10 save 60 10000 把数据库存在磁盘上
# 会在指定秒数和数据变化次数之后把数据库写到磁盘上。
#
# 下面的例子将会进行把数据写入磁盘的操作:
# 900秒(15分钟)之后,且至少1次变更
# 300秒(5分钟)之后,且至少10次变更
# 60秒之后,且至少10000次变更
38.loglevel notice
# 指定服务器调试等级
# 可能值:
# debug (大量信息,对开发/测试有用)
# verbose (很多精简的有用信息,但是不像debug等级那么多)
# notice (适量的信息,基本上是你生产环境中需要的)
# warning (只有很重要/严重的信息会记录下来)
39.client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60.
# 客户端的输出缓冲区的限制,可用于强制断开那些因为某种原因从服务器读取数据的速度不够快的客户端,
# (一个常见的原因是一个发布/订阅客户端消费消息的速度无法赶上生产它们的速度)
#
# 可以对三种不同的客户端设置不同的限制:
# normal -> 正常客户端
# slave -> slave和 MONITOR 客户端
# pubsub -> 至少订阅了一个pubsub channel或pattern的客户端
40.slaveof 127.0.0.1 6379 指定master服务的地址端口
41.bind 默认情况下所有网络都不访问,如果设置了bind就可以控制访问的网络。
下一章我将学习一下redis如何配置主从服务,同时如何使用sentinel来自动处理master宕机的情况
下面是我前面写的redis学习记录
以上是自己个人学习的记录,如果有什么不对的地方请大家指正,欢迎评论!