【数据库】redis 配置文件与发布订阅

目录

 配置文件

一,Units

二, INCLUDE

三,NETWORK

1, bind

2, tcp-backlog

3,timeout

4, tcp-keepalive

四,GENERAL

1,daemonize

2, pidfile

3,loglevel

4, logfile

5, databases

五,SECURITY

1,设置密码

六, CLIENTS

1, maxclients

2, maxmemory

3, maxmemory-policy

4,maxmemory-samples

 发布和订阅

1, 简介

2,常用命令

3, 示例演示


 配置文件

下面我们介绍 Redis 配置文件(redis.conf 文件)中有哪些配置项及它们的作用。

 

1,在根目录下面查找名为redis.conf的文件

find / -name redis.conf

2,切换到/etc/redis/

cd /etc/redis/

3,查看此目录下所有文件

ll

4,对redis.conf文件进行备份,注意所属者与所属组与原文件保持一致

cp -a redis.conf redis.conf.backup

使用命令ll再次查看,备份成功

5,编辑redis.conf文件

Vim redis.conf

(1)查看行号

:set nu

(2)取消行号

:set nonu  

(3)搜索关键字 bind(回车键后输入n,即可在关键字之间跳转)

/bind

(4)vim里面不能模糊匹配,在命令行用grep命令模糊匹配

-I  不区分大小写;.表示任意字符;*把前一项重复任意0次或n次

在redis.conf文件中使用grep命令模糊查找re..pass的行

grep re.*pass redis.conf

一,Units

配置大小单位,开头定义了一些基本的内存度量单位,只支持 bytes,不支持 bit。大小写不敏感。例如1k表示1000bytes,1kb表示1024bytes。

跳到行首:gg  或者  :1

 

 

二, INCLUDE

类似 JSP 程序中的 include,多实例的情况可以把公用的配置文件提取出来。

也就是说redis是支持包含其他文件的,可以将redis.conf当做一个父文件,包含子文件。

 

搜索include

/include

 

 

 

三,NETWORK

1, bind

默认情况下 bind=127.0.0.1 只能通过127.0.0.1接收请求。在不写的情况下,用户可以通过访问服务器的任意一张网卡访问redis服务器。

 

注意:如果开启了protected-mode,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的响应。

本机访问保护模式默认值:yes

该服务默认端口号: 6379

bind没有写,密码没有设置,只能通过127访问,接受本机的响应

1,如果删掉bind=127.0.0.1 -::1以及bind 0.0.0.0

2,查找以bind开头的行,并没有找到

grep ^bind redis.conf

3,重启redis服务

systemctl restart redis

4,查看关于redis的进程

ps -ef | grep redis

5,查看进程的监听情况

ps -ef | grep redis

6,此时,连接失败

7,连接redis服务器,连接失败

redis-cli -h 192.168.206.128

方法一:添加bind

(1)在文件redis.conf中添加bind=0.0.0.0

(2)重启redis服务

systemctl restart redis

(3)重新连接,连接成功

redis-cli -h 192.168.206.128

(4)连接成功

(5)查看进程

 ps -ef | grep redis

(6)查看监听的端口号

ss -lntup | grep redis

方法二:设置密码

(1)打开文件redis.conf添加密码

requirepass 123456

(2)重启redis服务

systemctl restart redis

(3)重新连接,输入密码

 redis-cli -h 192.168.206.128

 ping

 auth 123456

 也可以直接加-a选项加上密码,后面就不用auth指定密码

redis-cli -h 192.168.206.128 -a 123456

(4)输入密码123456连接

2, tcp-backlog

设置 tcp 的 backlog,backlog 其实是一个连接队列,backlog队列为已经完成三次握手队列的长度。

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

注意:

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

 

 

 

3,timeout

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

 

 

4, tcp-keepalive

对访问客户端的一种心跳检测,每 n 秒检测一次。

单位为秒,如果设置为0,则不会进行 Keepalive 检测,建议设置成 60。

 

 

 

 

四,GENERAL

1,daemonize

是否为后台进程,即守护进程,用于后台启动,设置为yes。

 

 

 

2, pidfile

存放pid文件的位置,每个实例会产生一个不同的pid文件。

 

 

(1)查看redisrun目录是否有写的权限,结果没有权限

ll /run -d

 

(2)查看redisredis目录是否有写的权限,结果有权限

ll -d redis/

 

(3)将存放pid文件的位置路径改为/var/run/redis/redis_6379.pid 

 

(4)重启服务

systemctl restart redis

 

(5)切换到目录/var/run/redis查看所有文件会发现redis_6379.pid文件

 

(6)打开redis_6379.pid文件

cat redis_6379.pid

 

(7)查看进程,发现redispid2038

ps -ef | grep redis

 

 

 

3,loglevel

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

四个级别根据使用阶段来选择,生产环境选择 notice 或者warning。

warning级别最高

 

 记录的日志文件在/var/log/redis/redis.log

 

查看文件/var/log/redis/redis.logll /var/log/redis/redis.log

 

 

 

4, logfile

日志文件名称

 

 ,

5, databases

设定库的数量,默认16,默认数据库为0,可以使用 SELECT <dbid>命令在连接上指定数据库id。

 

 

 

五,SECURITY

1,设置密码

当设置好密码后(即把 requirepass foobared 注解解开),然后使用客户端连接服务器后,在执行 set 命令时,提示需要获取权限。

可以在命令中访问密码的查看、设置和取消。

 

 

(1)打开文件redis.conf添加密码

requirepass 123456

(2)重启redis服务

systemctl restart redis

(3)重新连接,输入密码

 redis-cli -h 192.168.206.128

 ping

 auth 123456

(4)也可以直接加-a选项加上密码,后面就不用auth指定密码

redis-cli -h 192.168.206.128 -a 123456

(5)也可以用下面的方法获取密码

config get requirepass

(6)也可以用下面的方法设置密码

config set requirepass 654321

(7)使用修改后的密码登录

redis-cli -h 192.168.206.128 -a 654321

注意:

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

永久设置,需要在配置文件中进行设置。

 

 

 

六, CLIENTS

1, maxclients

设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端。如果达到了此限制,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:只限于设置了 expire 的部分; 优先删除最近最少使用(less recently used ,LRU) 的 key。
  • allkeys-lru:所有key通用; 优先删除最近最少使用(less recently used ,LRU) 的 key。
  • volatile-random:只限于设置了 expire 的部分; 随机删除一部分 key。
  • allkeys-random:所有key通用; 随机删除一部分 key。
  • volatile-ttl:只限于设置了 expire 的部分; 优先删除剩余时间(time to live,TTL) 短的key。
  • noeviction:不删除策略。达到最大内存限制时, 如果需要更多内存, 直接返回错误信息。(默认值)

 

  

 

4,maxmemory-samples

redis中并不会准确的删除所有键中最近最少使用的键,而是随机抽取maxmeory-samples个键,删除这个样本中最近最少使用的键。

maxmemory-samples用于设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小,redis默认会检查这么多个key并选择其中最少使用或者存活时间最短的那个。

一般设置3到7的数字,数值越小样本越不准确,但性能消耗越小。

 

 

 

 发布和订阅

1, 简介

Redis提供了基于“发布/订阅”模式的消息机制。此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel) 发布消息,订阅该频道的每个客户端都可以收到该消息。

Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 ,以及订阅这个频道的三个客户端 —— client1 、client2 和 client3 之间的关系:

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:

2,常用命令

序号

命令语法

描述

1

PSUBSCRIBE pattern [pattern ...]

订阅一个或多个符合给定模式的频道

2

PUBSUB subcommand [argument [argument ...]]

查看订阅与发布系统状态,例如:PUBSUB channels

3

PUBLISH channel message

将信息发送到指定的频道

4

PUNSUBSCRIBE [pattern [pattern ...]]

退订所有给定模式的频道

5

SUBSCRIBE channel [channel ...]

订阅给定的一个或多个频道的信息

6

UNSUBSCRIBE [channel [channel ...]]

退订给定的频道

3, 示例演示

以下实例演示了发布订阅是如何工作的。

(1)创建了订阅频道名为 redisChat:

subscribe redischat

 

(2)现在,我们先重新开启1个 redis 客户端,然后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。

 publish redischat "send message"

然后切换到前一个客户端,就可以看到如下信息:

在第二个端口再次发布hello world

publish redischat "hello world"

在前一个端口查看订阅信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值