Redis Sentinel Plugin For JFinal
博客专区 > Jim_Ai 的博客 > 博客详情
Redis Sentinel Plugin For JFinal
Jim_Ai 发表于1年前
Redis Sentinel Plugin For JFinal
  • 发表于 1年前
  • 阅读 246
  • 收藏 2
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: JFinal自带的RedisPlugin只对应单机Redis,为了满足生产环境Redis集群主从切换(failover)的要求,做了如下调研

我先在开发本地搭Redis主从服务器,各自在redis.windows.conf中进行配置。

主服务器:192.168.6.88:6379 开启requirepass 服务器密码,masterauth 服务器密码,maxmemory 209715200,maxheap 314572800

从服务器:192.168.6.88:6380 开启requirepass 服务器密码,masterauth 服务器密码,maxmemory 209715200,maxheap 314572800

从服务器比主服务器多一行配置:slaveof 192.168.6.88 6379。

分别启动redis-server redis.windows.conf,启动成功。

可以通过info Replication命令查看一下主从服务连接状态

如果在使用中如下报错信息:BeginForkOperation: system error caught. error code=0x000005af 。是maxmemory和maxheap没有设置的原因。可以在启动参数中加入,也可以如上在配置文件中配置。

好了,接下来该Redis sentinel上场了。先要作成sentinel.conf文件

启动master-sentinel

下面开始对JFinal开始扩展。

1、作成RedisSentinelPlugin。代码见http://www.oschina.net/code/snippet_2621890_57963

2、com.jfinal.plugin.redis.Cache中的JedisPool类型修正为Pool<Jedis>

3、启动时配置插件

			String redisIp = getProperty(ConstantInit.config_redis_ip);
			Integer redisPort = getPropertyToInt(ConstantInit.config_redis_port);
			String redisPassword = getProperty(ConstantInit.config_redis_password);
			Set<HostAndPort> sentinels = new HashSet<HostAndPort>();
			HostAndPort hostAndP = new HostAndPort(redisIp, redisPort);			
			sentinels.add(hostAndP);
			RedisSentinelPlugin redisSentinelPlugin = new RedisSentinelPlugin(ConstantCache.cache_name_redis_system, "mymaster",sentinels,redisPassword);		
			plugins.add(redisSentinelPlugin);

然后开始测试:关闭master。发现slave自动转为master。同时系统依旧可用。启动旧master,旧master成为新master的slave。

至此开发环境中完成,可尝试在生产环境中配置多台slave和多台sentinel。

共有 人打赏支持
粉丝 4
博文 15
码字总数 7002
×
Jim_Ai
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: