Redis学习笔记(四)——redis配置文件详解

Redis

四、配置文件

1、基础使用

  1. 如果在Linux下直接安装redis,最好将redis.conf拷贝出来使用。使用docker需要挂载目录。

  2. 单位:

    • 1k = 1000bytes
    • 1kb = 1024bytes
    • 大小写不敏感
    • 只支持bytes,不支持bit
  3. include: 可以通过includes包含,redis.conf作为总管理,包含其他配置文件。

2、常用配置

  • daemonize:

    • 默认是no

    • redis采用的是单进程多线程的模式。

    • daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。

    • daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。

    • 如果在Redis装在docker镜像中,并且使用docker update redis --restart=always 设置redis镜像自动启动,则daemonize不能设置为yes。

  • pidfile:指定进程管道pid文件,默认/var/run/redis.pid

  • port:指定端口,默认6379

  • tcp-backlog:

    • 默认511

    • tcp-backlog设置tcp的backlog,backlog是一个连接队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列。在高并发环境下需要一个高backlog值来避免慢客户端连接问题。

    • 注意:Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_max_syn_backlog两个值来达到想要的效果

  • timeout:客户端空闲多少秒后关闭连接,默认0,不关闭。

  • bind:

    • 绑定本机的IP地址,即本机的网卡对应的IP地址,每一个网卡都有一个IP地址。 指定了bind,则说明只允许来自指定网卡的Redis请求。如果没有指定,就说明可以接受来自任意一个网卡的Redis请求。 查看本地的网卡对应的IP地址:使用ifconfig命令。
    • bind 127.0.0.1,只有本机可以连接,而其他不可以连接。lo网卡(对应127.0.0.1IP地址)是一个回环地址,也就是只有本地才能访问到这个回环地址,而其他的计算机也只能访问他们自己的回环地址。那么来自这个lo网卡的计算机只有本机,所以只有本机可以访问,而其他计算机不能访问。
  • tcp-keepalive: 集群中使用,单位为秒,如果设置为0,则不会进行Keepalive检测,建议设置成60 。默认0

  • loglevel:日志级别,默认notice。四个日志级别:debug、verbose、notice、warning。从左到右级别越来越高,打印的信息越来越少。

  • logfile:日志名字,默认为空

  • syslog-enabled:系统日志,默认是关

  • syslog-ident:系统日志以redis开头

  • syslog-facility:输出日志的设备。可以是user或LOCAL0-LOCAL7,默认是LOCAL0

  • databases:默认16个库,可以配置更多的库。‘

3、安全设置

  1. 使用命令的方式设置密码:config set requirepass “密码”,设置密码后再次使用redis命令需要先授权,授权命令:auth “密码”。
  2. 取消密码命令:config set requirepass “”

4、Limits限制配置

  1. maxclients

    • 默认10000

    • 设置redis同时可以与多少个客户端进行连接。

    • 当你无法设置进程文件句柄限制时,redis会设置为当前的文件句柄限制值减去32,因为redis会为自身内部处理逻辑留一些句柄出来。如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”以作回应。

  2. maxmemory

    • 设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。
    • 如果redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。但是对于无内存申请的指令,仍然会正常响应,比如GET等。
    • 如果你的redis是主redis(说明你的redis有从redis),那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的情况下,才不用考虑这个因素 。
  3. maxmemory-policy

    • volatile-lru:使用LRU(最近最少使用)算法移除key,只对设置了过期时间的键
    • allkeys-lru:使用LRU算法移除key
    • volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键
    • allkeys-random:移除随机的key
    • volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key。
    • noeviction:不进行移除(默认配置)。针对写操作,只是返回错误信息。
  4. maxmemory-samples

    • 设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以可以设置样本的大小,redis默认会检查这么多个key并选择其中LRU的那个
    • 默认值5

5、RDB及AOF配置

见本系列第五章

你可能感兴趣的:(数据库,redis)