Redis实现参数的集中式管理

本文介绍如何使用Redis的发布订阅功能实现参数集中式管理,包括同时监听多个节点、监听子节点及其子节点、服务器启动初始化节点数据、监听数据变更及从Redis读取参数初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

分布式缓存Redis也提供了类似的发布订阅功能,并且Redis本身提供了缓存和持久化的功能,本文将介绍通过Redis实现简单的参数集中式管理。

Maven引入

Spring相关的jar引入

目标

1.可以同时配置监听多个节点如/app1,/app2;

2.希望只需要配置如/app1,就能够监听其子节点如/app1/modual1以及子节点的子节点如/app1/modual1/xxx/…;

3.服务器启动能获取当前指定父节点下的所有子节点数据;

4.在添加节点或者在更新节点数据的时候能够动态通知,这样代码中就能够实时获取最新的数据;

5.spring配置中可以从Zookeeper中读取参数进行初始化。

虽然在实现的方式上有点区别,但是最终达成的目标是一致的,同样列出了这5条目标

实现

RedisWatcher主要用来和Redis进行连接,然后对监听的节点进行初始化,模糊订阅需要监听的节点,最后接受数据的变更,更新本地数据,存储数据等。

1.同时配置监听多个节点

提供一个字符串数组给用户用来添加需要监听的节点:

2.能够监听其子节点以及子节点的子节点

使用Redis提供的psubscribe命令,订阅一个或多个符合给定模式的频道,提供了模糊订阅的功能

提供了使用匹配符*的模糊匹配功能,组装带*号的匹配字符串

3.服务器启动初始化节点数据

通过使用keys命令来获取匹配节点的数据(keys命令可能引发性能问题,根据实际情况使用)

4.监听节点数据的变更

目标2中通过psubscribe命令,使用模糊订阅来监听数据的变更,onMessage用来接受变更的数据

5.spring配置中可以从Redis中读取参数进行初始化

通过以上的处理,可以使用如下简单的配置来达到目标:

测试

1.启动Redis服务器

2.启动Redis客户端进行初始化数据

3.启动Main类

4.启动RedisPublish

定时发布数据,同时查看集群节点的Main类日志输出

日志输出如下:

详细代码svn地址:http://code.taobao.org/svn/temp-pj/DynamicConf

总结

关于参数的集中式管理一共写了三篇文章,分别利用Zookeeper,MQ以及Redis来实现了一个简单的参数的集中式管理,但更多的只是提供了一个思路

离生产还有很大距离,本片文章也是这个系列的最后一篇,综合来看Zookeeper更加适合做参数的集中式管理平台,MQ方式本身没有提供存储的功能

只能作为一个中间层存在;而Redis方式虽然提供了持久化功能,但是会因为选择不同的持久化方式会出现丢数据的可能,还有就是本身的集群方式

并不是很完善;虽然Zookeeper本身并不是一个存储系统,但是紧紧用来存储少量的参数应该足够了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值