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.传统配置文件与分布式配置文件区别 传统配置文件:如果修改了配置文件,需要重新打包发布,重新发布服务,而且每个环境的变更配置文件,比较繁琐. 分布式配置文件:将配置文件注册到配置中心上去,可以使用分 ...
随机推荐
- python 开发技巧(2)-- Django的安装与使用
一.安装Django pip3 install django 或者直接使用PyCharm安装 参考 二.添加环境变量 将 "(python安装路径)\Scripts" 添加到环境变 ...
- java中JSONObject与JSONArray的使用
JSONObject与JSONArray 最近在学习过程中用到了稍微复杂点的json数据需要将json数据解析出来,这里就截取一部分作为例子 1.JSONObject介绍 JSONObject-lib ...
- jq中写PHP
var id="$defaultId"; if(!id){ $("#tag_url").addClass("div_display_none" ...
- 第一百九十四节,jQuery EasyUI,Droppable(放置)组件
jQuery EasyUI,Droppable(放置)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Droppable(放置)组件的使用方 ...
- Servlet Cookie 处理
Servlet Cookie 处理 Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息.Java Servlet 显然支持 HTTP Cookie. 识别返回用户包括三个步骤: 服务 ...
- struts.xml文件:
struts.xml文件中包含的配置信息,你将修改所采取的措施的开发.这个文件可以被用来覆盖默认设置的应用程序,例如struts.devMode=false和其他设置中定义的属性文件.这个文件可以创建 ...
- struts2之constant 讲解 (转)
struts.serve.static.browserCache 该属性设置浏览器是否缓存静态内容.当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该属性为false. stru ...
- Python gevent学习笔记
gevent是Python的一个用于网络IO的函数库,其中应用到了 coroutine(协同程序) 的思想.首先来了解下目前网络框架的几种基本的网络I/O模型: 阻塞式单线程:这是最基本的I/O模型, ...
- 【BZOJ2044】三维导弹拦截 DP+(有上下界的)网络流
[BZOJ2044]三维导弹拦截 Description 一场战争正在A国与B国之间如火如荼的展开. B国凭借其强大的经济实力开发出了无数的远程攻击导弹,B国的领导人希望,通过这些导弹直接毁灭A国的指 ...
- Coursera课程《Machine Learning》学习笔记(week1)
这是Coursera上比较火的一门机器学习课程,主讲教师为Andrew Ng.在自己看神经网络的过程中也的确发现自己有基础不牢.一些基本概念没搞清楚的问题,因此想借这门课程来个查漏补缺.目前的计划是先 ...