百度网站 v怎么怎做,网站开发平台目录,做门户网站需要学什么知识,兰州seo新站优化招商Redis 7 已经于2022年4月28号正式发布#xff0c;其中包括了将近50个新的命令#xff0c;增加了许多新的特性#xff0c;并且在整个Redis 6到Redis 7的开发过程中#xff0c;我也对Redis 的开源社区贡献了一些微薄的力量。在这篇文章中#xff0c;我来给大家介绍几个自己亲…Redis 7 已经于2022年4月28号正式发布其中包括了将近50个新的命令增加了许多新的特性并且在整个Redis 6到Redis 7的开发过程中我也对Redis 的开源社区贡献了一些微薄的力量。在这篇文章中我来给大家介绍几个自己亲身参与的几个Redis 7 功能并希望能够为Redis 8做出更多的贡献。
在这篇文章中我将介绍以下的内容
1. 在redis.conf 配置文件中新增加的参数cluster-port
2. 在sentinel.conf配置文件中新增加的参数master-reboot-down-after-period
3. 在sentinel中新增加的命令sentinel debug
4. 在集群中新增加的命令cluster addslotsrange 和cluster delslotsrange
5. 对info命令的增强
6. 修复sentinel更新密码的一个隐患
7. 增加了client list 命令的显示内容 在redis.conf配置文件中增加了一个新的参数cluster-port 用于为处于集群模式下的节点使用
我们知道当一个节点处于集群模式中它至少需要有2个TCP连接端口一个负责与客户端进行连接我们通常叫做命令端口例如6379而另外一个TCP的连接端口我们可以叫集群端口是负责当前节点与集群中其他节点进行故障检测配置更新等其他功能这个端口的数值在Redis 7之前都是命令端口10000. 这种设置方式就完全限制的客户端对集群端口的配置如果当前节点的这个端口值被其他服务所占用那么当前节点就会启动失败。
在Redis 7中我们增加了cluster-port这个参数可以允许客户自己定义集群端口给了客户更大的自由度使用格式是cluster-port 0。
如果客户在配置文件中将这个端口设置为0那么当前节点的集群端口依然等于命令端口10000如果客户将这个端口设置为大于0那么当前节点在启动时将会将集群端口设置为它的值。
在sentinel.conf配置文件中新增加了一个参数master-reboot-down-after-period
它的正确使用格式是SENTINEL master-reboot-down-after-period mymaster 0
下面来阐述一下增加这个参数的原因
在增加这个参数之前Sentinel节点是通过在sentinel.conf设置的down-after-milliseconds参数来向主节点备节点和其他sentinel节点发送PING请求来确认发送的目的节点是否正常工作。在sentinel.conf或者用户自定义的sentinel配置文件中如果down-after-milliseconds的设置大于或者等于1000那么sentinel发送频率是1秒如果down-after-milliseconds的设置小于1000那么sentinel节点发送PING请求的频率是down-after-milliseconds值(毫秒数)。
但是当主节点在非常短的时间内发生了重启例如0.01秒那么sentinel节点会收到一个”reboot”信号。在引入参数Master-reboot-down-after-period之前sentinel是不会发生主备切换的那么如果主节点有很大的数据要从RDB文件中读取到内存中这个时候主节点是处于LOADING状态是不能接受外部数据响应的会导致客户端认为主节点unavailable.
在Redis 7中如果用户在sentinel的配置文件中将master-reboot-down-after-period设置为大于0的数那么当sentinel检测到第一次收到的“reboot”的时间与当前时间间隔大于master-reboot-down-after-period的毫秒数并且主节点依然处于LOADING状态那么sentinel将开始进入主备切换状态。这样就大大地降低了数据丢失和主节点处于Unavailable 的可能性。
在sentinel中新增加的命令sentinel debug
为了方便Redis的开发人员对sentinel的部分参数进行调试或者在写测试用例的时候更改一些参数在Redis 7的Sentinel的模式中增加了一个新的命令sentinel debug
当用户在客户端只运行sentinel debug命令时候它会显示当前状态下在Redis的sentinel部分可以调试的13个参数的具体信息例子如下:
127.0.0.1:26379 sentinel debug1) INFO-PERIOD2) 100003) PING-PERIOD4) 10005) ASK-PERIOD6) 10007) PUBLISH-PERIOD8) 20009) DEFAULT-DOWN-AFTER
10) 30000
11) DEFAULT-FAILOVER-TIMEOUT
12) 180000
13) TILT-TRIGGER
14) 2000
15) TILT-PERIOD
16) 30000
17) SLAVE-RECONF-TIMEOUT
18) 10000
19) MIN-LINK-RECONNECT-PERIOD
20) 15000
21) ELECTION-TIMEOUT
22) 10000
23) SCRIPT-MAX-RUNTIME
24) 60000
25) SCRIPT-RETRY-DELAY
26) 30000
当用户想要更改一个或者多个参数的时候可以运行如下命令
Sentinel debug parameter value [parameter value…]
正像上面的例子中信息一样通过这个命令用户可以更改下面13个参数的信息:
SENTINEL_INFO_PERIOD SENTINEL_PING_PERIOD SENTINEL_ASK_PERIOD SENTINEL_PUBLISH_PERIOD SENTINEL_DEFAULT_DOWN_AFTER SENTINEL_TILT_TRIGGER SENTINEL_TILT_PERIOD SENTINEL_SLAVE_RECONF_TIMEOUT SENTINEL_MIN_LINK_RECONNECT_PERIOD SENTINEL_ELECTION_TIMEOUT SENTINEL_SCRIPT_MAX_RUNTIME SENTINEL_SCRIPT_RETRY_DELAY SENTINEL_DEFAULT_FAILOVER_TIMEOUT
新增cluster addslotsrange 命令和cluster delslotsrange 命令
在Redis 7 之前如果用户想为集群(cluster) 中的一个节点增加一些槽或者从一个节点中删除一些槽那么唯一的选择就是cluster addslots slot [slot…] 或者cluster delslots slot [slot…]。这两个命令的缺点在于如果用户想要一次性操作大量连续的槽那么需要输入大量的参数。例如下面的例子如果想要把1到5000 的槽值赋予一个节点那么用户需要运行如下的命令
Cluster addslots 1 2 3 …… 4999 5000
在cluster addslots之后需要传递5000个参数
那么在新增的cluster addslotsrange命令中用户只需要传递2个参数开始的槽值和结束的槽值例子如下
cluster addslotsrange 1 5000.
同理cluster delslotsrange命令也是对已有的cluster delslots进行了增强当用户想要删除大量的连续槽值的时候也只需要传递2个参数即可
这两个新命令的具体格式如下
CLUSTER DELSLOTSRANGE startslot endslot [startslot endslot...]
CLUSTER ADDSLOTSRANGE startslot endslot [startslot endslot...]
更加具体的使用和注意事项可以参考redis的链接:
https://redis.io/commands/cluster-addslotsrange/
https://redis.io/commands/cluster-delslotsrange/
对Info命令的增强
在客户端中执行info命令在Redis 7中info命令可以接受多于一个section的参数例如
INFO Server Replication INFO CPU Memory INFO default commandstats all
具体关于info命令的使用可以参考链接https://redis.io/commands/info/
修复sentinel更新密码的一个隐患
增加了当用户在Sentinel的客户端使用sentinel set mastername auth-pass newpassword 命令时的安全性
在Redis 7.0 之前的版本中如果用户在Sentinel的客户端执行如下命令时
127.0.0.1:17379 sentinel set mymaster auth-pass THIS_IS_PASSWORD
OK
在sentinel的服务器端用户会看到一个log
22720:X 05 Oct 2021 12:43:16.248 # set master mymaster 127.0.0.1 6379 auth-pass THIS_IS_PASSWORD
我们可以看到新设置的密码被打印到客户端或者可以被直接存储到日志文件中这个非常不安全的。在Redis 7中这个问题被修复了。如果客户执行同样的命令那么客户会看到类似下面的日志
22720:X 05 Oct 2021 12:43:16.248 # set master mymaster 127.0.0.1 6379 auth-pass ******
增加了client list命令的显示内容
用户可以通过client list命令查看当前的Redis支持的RESP协议的版本
RESP全称是Redis serialization protocol. 客户端可以通过RESP协议与Redis 服务器进行沟通。在最新的Redis 7版本中客户端可以通过调用client list这个命令查看当前支持的RESP协议的版本具体的例子如下
127.0.0.1:6379 client list
id3 addr127.0.0.1:48556 laddr127.0.0.1:6379 fd8 name age153 idle0 flagsN db0 sub0 psub0 multi-1 qbuf26 qbuf-free20448 argv-mem10 multi-mem0 rbs1024 rbp0 obl0 oll0 omem0 tot-mem22298 eventsr cmdclient|list userdefault redir-1 resp2
这篇文章就介绍到这里了下一篇文章会介绍Redis 7新增的functions的几个命令谢谢大家