Redis的分布式配置
Redis存在三种级别的分布式部署:主从复制、主从切换、集群配置,推荐使用主从切换模式。
主从复制
- 启动主服务:端口6379
- 启动从服务:端口6380, 配置文件中加上 slaveof 127.0.0.1 6379,启动后服务会成为6379的从服务,自动同步6379的操作
- 代码中的配置
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 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
redis-trib.rb位于redis\src下面。
--replicas1即自动分配一个Slave,如果想手动指定Slave ,将该值变为0即可。上面的命令会创建3个主服务、3个从服务。操作成功会返回如下页面。
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:9001 6fd2df0fa12e0ce5ea150f03bdb6a969a189d885 --该ID为9004节点ID
8. 问题:对于集群,c#的驱动库Service.Stack.Redis、StackExchange.Redis都没有处理集群连接的情况,但网上有改造Service.Stack.Redis支持集群的方案。
Redis的分布式配置的更多相关文章
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...
- 用Redis构建分布式锁-RedLock(真分布)
在不同进程需要互斥地访问共享资源时,分布式锁是一种非常有用的技术手段. 有很多三方库和文章描述如何用Redis实现一个分布式锁管理器,但是这些库实现的方式差别很大,而且很多简单的实现其实只需采用稍微增 ...
- Redis实现分布式锁
http://redis.io/topics/distlock 在不同进程需要互斥地访问共享资源时,分布式锁是一种非常有用的技术手段. 有很多三方库和文章描述如何用Redis实现一个分布式锁管理器,但 ...
- [转载] 基于Redis实现分布式消息队列
转载自http://www.linuxidc.com/Linux/2015-05/117661.htm 1.为什么需要消息队列?当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消 ...
- 在AspNetCore 中 使用Redis实现分布式缓存
AspNetCore 使用Redis实现分布式缓存 上一篇讲到了,Core的内置缓存:IMemoryCache,以及缓存的基础概念.本篇会进行一些概念上的补充. 本篇我们记录的内容是怎么在Core中使 ...
- 用redis实现分布式锁,秒杀案例(转)
分布式锁的简单实现代码: 需要的jar包: jedis-2.9.0.jar. commons-pool2-2.4.2.jar import java.util.List; import java.ut ...
- 基于Redis的分布式锁真的安全吗?
说明: 我前段时间写了一篇用consul实现分布式锁,感觉理解的也不是很好,直到我看到了这2篇写分布式锁的讨论,真的是很佩服作者严谨的态度, 把这种分布式锁研究的这么透彻,作者这种技术态度真的值得我好 ...
- 基于 Redis 的分布式锁
前言 分布式锁在分布式应用中应用广泛,想要搞懂一个新事物首先得了解它的由来,这样才能更加的理解甚至可以举一反三. 首先谈到分布式锁自然也就联想到分布式应用. 在我们将应用拆分为分布式应用之前的单机系统 ...
- 分布式配置中心 携程(apollo)
1.传统配置文件与分布式配置文件区别 传统配置文件:如果修改了配置文件,需要重新打包发布,重新发布服务,而且每个环境的变更配置文件,比较繁琐. 分布式配置文件:将配置文件注册到配置中心上去,可以使用分 ...
随机推荐
- Linux 文件管理(C语言库函数一)
系统调用函数能够直接操作系统设备,C语言库函数是对系统调用函数的封装,增加了可移植性, C语言库函数可以在各个系统上运行,而系统调用则会因为系统不同而有一定的差别. 在读写文件这个操作上,系统函数每次 ...
- 有向图 加最少的边 成为强连通分量的证明 poj 1236 hdu 2767
poj 1236: 题目大意:给出一个有向图, 任务一: 求最少的点,使得从这些点出发可以遍历整张图 任务二: 求最少加多少边 使整个图变成一个强连通分量. 首先任务一很好做, 只要缩点 之后 求 ...
- 这篇文章主要为大家详细介绍了jQuery密码强度验证控件使用详解的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了jQuery密码强度验证控件,供大家参考,具体内容如下 <html> <head> <meta http-equiv="Cont ...
- CMakeList相关
cmake使用示例与整理总结 http://blog.csdn.net/wzzfeitian/article/details/40963457/ 对应的demo:https://github.com/ ...
- firefox(火狐)怎么关闭鼠标拖拽搜索
工具-附加组件-卸载<附加组件管理器> 即可. 这玩意真心坑爹,起这个名字的人绝对是吃屎了,这名字怎么和鼠标拖拽混到一起的 !!! 关键字:火狐:鼠标:鼠标拖拽:鼠标手势:关闭
- nginx访问css js 图片等静态资源,报404或无法定向访问到
配置完nginx,把php的项目放上去后,发现css,js和图片全部访问不到,一直重定向到根目录执行index.php,郁闷的在网上查了半天,原来不同后缀名的文件访问时都要在nginx.conf中声明 ...
- 性能百万/s:腾讯轻量级全局流控方案详解【转自Wetest】
阿里用的方案是在nginx中配置限流(限流功能模块是自己开发的),流量统计线上是有监控打通的,具体的限流值是通过线上流量表现+线下性能测试(模拟线上场景)测试得出的. 全新的全局流控实现方案,既解决了 ...
- node.js中的路由(url)初步
1.建立n4_root.js var http = require('http'); var url = require('url'); //这是node.js中自带的var router = req ...
- cocos2d-x中关于touch事件的响应
原作者:有缘人 来源:新浪微博 地址:http://blog.sina.com.cn/s/blog_6ac2c7260102vvdu.html 一.touch事件响应分为单点触摸响应和多点触摸响应. ...
- 01-K Code
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission ...