03-Redis配置文件和发布订阅

1.Redis配置文件

1.1.Units

  • 配置大小单位,开头定义了一些基本的度量单位,只支持Bytest,不支持bit大小写不敏感。
    在这里插入图片描述

1.2.INCLUDES

  • 包含其他公共的配置文件部分。
    在这里插入图片描述

1.3.网络相关配置

  • bind 127.0.0.1 -::1

    默认情况下bind=127.0.01只能接受本机的访问请求,不写的情况下,无限制接受任何ip地址的访问。

    将其注释掉。这个在开发环境中,服务器是需要远程访问的,所以此处要写应用服务器的地址。
    在这里插入图片描述

  • protected-mode yes

    开启保护模式,如果开启了保护模式,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的响应。

    所以这个在开发环境中要改成protected-mode no
    在这里插入图片描述

  • port 6379:端口

  • tcp-backlog 511

    设置tcp的backlog,backlog其实是一个连接队列,backlog队列综合等于未完成三次握手的队列+已经完成三次握手的队列。

    在高并发环境下你需要一个高backlog值来避免客户端连接问题。

    注意Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值(128),所以需要确认增大/proc/sys/net/core/somaxconn和/proc/sys/net/ipv4/tcp_max_syn_backlog(128)两个值来达到想要的效果。
    在这里插入图片描述

  • timeout:一个空闲的客户端维持多少秒会关闭,0表示关闭该功能,即永不关闭。

  • tcp-keepalive 300

    对访问客户端的一种心跳检测,每隔300s检测一次。如果该客户端已经断开,那么服务器也会释放连接。如果设置为0,则不会进行keepalive 心跳检测,建议设置成60.
    在这里插入图片描述

1.4.GENERAL通用

  • daemonize yes

    是否设置为后台进程,设置为yes,设置成守护进程后台启动。
    在这里插入图片描述

  • pidfile /var/run/redis_6379.pid

    设置存放进程号pid的路径位置,每个redis进程实例都会产生一个随机的pid号,都对应一个不同的pid文件。
    在这里插入图片描述

  • loglevel notice

    指定日志记录级别,Redis总共支持四个级别的日志:debug、verbose、notice、warning,默认是notice。

    四个级别根据使用阶段来选择,生产环境选择notice或者warning。
    在这里插入图片描述

  • logfile

    设置日志的输出文件路径。
    在这里插入图片描述

  • databases 16

    设置数据库的数量,默认是16,默认数据库为0.
    在这里插入图片描述

1.5.SECURITY安全

  • requirepass foobared:默认是没有密码的可以直接访问
    在这里插入图片描述

  • 设置密码:临时设置

    在命令行中设置密码,只是临时的,重启redis服务器,密码就还原了。

在这里插入图片描述

  • 永久设置密码:需要在配置文件中进行设置。

1.6.CLIENTS客户端

  • maxclients 10000

    设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端,如果达到了次限制,redis则会拒绝新的连接请求,并且同时向这些请求放发出“max number of clients reached”作为回应。
    在这里插入图片描述

1.7.MEMORY MANAGEMENT内存管理

  • maxmemory

    设置redis可以使用的内存量,一旦达到内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy指定。

    建议必须设置,否则将内存占满,造成服务器宕机。

    如果redis内存占满后,但是无法移除内存数据,或者无法根据maxmemory-policy指定的规则移除数据。那么对于需要申请内存的指令比如SET,LPUSh等会返回错误的信息。

    但是对于无内存申请的指令,仍然会正常响应,比如GET等。

    如果你的redis是主redis,说明你的redis有从redis,那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存。
    在这里插入图片描述

  • maxmemory-policy noeviction:内存满时的移除策略

    volatile-lru:使用LRU算法移除key,只对设置了过期时间的键;(最近最少使用)

    allkeys-lru:在所有集合key中,使用LRU算法移除key

    volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键

    allkeys-random:在所有集合key中,移除随机的key

    volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key

    noeviction:不进行移除。针对写操作,只是返回错误信息
    在这里插入图片描述

  • maxmemory-samples 5

    设置样本数量,LRU算法和最小TTL算法都是并非精确的算法,而是估算值,所以你可以设置样本的大小,redis会默认检查这么多个key并选择其中LRU(最近最少使用)的那个。一般设置3~7的数字,数值越小样本越不准确,但性能消耗越小。

在这里插入图片描述

1.8.目前需要改的配置

1.bind 127.0.0.1 -::1:注释掉
2.保护模式protected-mode:开发环境中要改成protected-mode no
3.持久化相关的配置,后续再讲。

2.发布和订阅

1.什么是发布和订阅

  • Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
  • Redis客户端可以订阅发布者的所有频道。

2.Redis的发布和订阅

  • 客户端可以订阅发布者的频道
    在这里插入图片描述

  • 当这个频道发布消息后,消息就会发送给订阅的客户端

    在这里插入图片描述
    3.命令行实现Redis的发布订阅

  • 1.再打开一个客户端:目前两个客户端

  • 在这里插入图片描述

  • 2.客户端1订阅channel1:SUBSCRIBE channel1

    当有人向channel1频道中发信息,客户端1都可以接收到。

在这里插入图片描述

  • 3.在客户单2中向channel1频道发消息:publish channel1 hello

在这里插入图片描述

  • 4.客户端1收到订阅的channel1中的消息:hello

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tttxxl/article/details/116042534