设为首页 收藏本站
查看: 1263|回复: 0

[经验分享] Redis的分布式配置

[复制链接]

尚未签到

发表于 2017-12-21 08:21:31 | 显示全部楼层 |阅读模式
  Redis存在三种级别的分布式部署:主从复制、主从切换、集群配置,推荐使用主从切换模式。
主从复制

  • 启动主服务:端口6379
  • 启动从服务:端口6380, 配置文件中加上 slaveof 127.0.0.1 6379,启动后服务会成为6379的从服务,自动同步6379的操作
  • 代码中的配置
DSC0000.png

  readWriteHosts:配置为主服务的地址 localhost:6379
  readOnlyHosts:配置为从服务的地址 localhost:6380
  4. 该模式可以实现读写分离,提高系统的整体性能;可以在主服务上禁止保存到磁盘,在从服务器上开启保存到磁盘,提高主服务的性能。
主从切换
  当主服务出错时,主从复制不会自动恢复,会处于只读状态。Redis提供了哨兵节点可以实现主从切换。
  1. 启动哨兵节点:redis-server.exe ..\sentinel_26378.conf  --sentinel
  port 26378
  sentinel monitor mymaster 127.0.0.1 6380 1
  哨兵节点的主要配置是端口号(26378)和监视的服务配置(sentinel monitor <master-name> <ip> <redis-port> <quorum>),quorum是为了实现主从切换最少需要的投票节点,一定要小于启动的哨兵节点数,否则无法实现主从切换。
  2. 在代码中的使用
  var sentinelHosts = new[] { "127.0.0.1:26378" };
  var sentinel = new RedisSentinel(sentinelHosts, masterName: "mymaster");
  var redisClientManager = sentinel.Start();
  using (IRedisClient redis = redisClientManager.GetClient())
  {
  redis.Set("dateTimeNow", DateTime.Now.ToString());
  }
  using(IRedisClient redis = redisClientManager.GetReadOnlyClient())
  {
  string dateTimeNow = redis.Get<string>("dateTimeNow");
  }
  3. 在实际中可以配置多台哨兵,提高整体的稳定性。哨兵节点的花销比较小,可以与主、从服务在一台主机上。
集群配置
  参考 http://www.cnblogs.com/xling/p/5253063.html
  1. 下载 RubyInstaller
  http://rubyinstaller.org/downloads/
  2. 安装 GEM,Redis 的 ruby 支持环境
  gem install redis
  3. 新建6个子文件夹:7000,7001,7002,7003,7004,7005,修改对应的redis.config
  port 7000
  cluster-enabled yes
  cluster-config-file nodes-7000.conf
  cluster-enabled是开启集群模式
  4. 为方便启动这些 Redis 实例,新建如下 bat 文件:
@echo off  cd c:\Redis
  start Redis-Server ./7000/redis.conf
  start Redis-Server ./7001/redis.conf
  start Redis-Server ./7002/redis.conf
  start Redis-Server ./7003/redis.conf
  start Redis-Server ./7004/redis.conf
  start Redis-Server ./7005/redis.conf
  5. 创建群集 :redis-trib.rb create --replicas 1127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004127.0.0.1:7005
  redis-trib.rb位于redis\src下面。
  --replicas1即自动分配一个Slave,如果想手动指定Slave ,将该值变为0即可。上面的命令会创建3个主服务、3个从服务。操作成功会返回如下页面。
DSC0001.png

  6. 自此,集群就创建好了。可以在redis-cli.exe 中输入cluster info查看
  7. 添加、删除节点redis-trib.rb add-node 127.0.0.1:9007 127.0.0.1:9008、redis-trib.rb del-node 127.0.0.1:90016fd2df0fa12e0ce5ea150f03bdb6a969a189d885 --该ID为9004节点ID
  8. 问题:对于集群,c#的驱动库Service.Stack.Redis、StackExchange.Redis都没有处理集群连接的情况,但网上有改造Service.Stack.Redis支持集群的方案。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-426327-1-1.html 上篇帖子: redis实现tomcat集群session共享 下篇帖子: Redis系列之key操作命令与Redis中的事务详解(六)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表