Redis__WindowsServer主从服务部署及调用实例

 
 
 
一、先谈谈单个Redis服务的安装
        使用的redis是2.8.17版本,从官网下载解压缩后文件内容为:
         
            安装并启动一个redis服务很简单,步骤如下:
            1、配置日志文件目录:只用修改logfile定位到Log文件夹下
                 
            2、命令行定位到解压文件的目录
                  cd /d D:\MasterRedis-2.8.17     (windows 7)
                  cd /d D:\SlaveRedis-2.8.17       (windows server)
            3、安装Redis:redis-server --service-install redis.windows.conf --loglevel verbose
            4、启动Redis:redis-server --service-start
            5、停止Redis:redis-server --service-stop
            6、卸载Redis:redis-server --service-uninstall 
 
 
二、再谈谈结论
        经过半天的折腾,结论就是:Success!过程我下面再谈,结论就是在单台windows servers机器上部署主从服务,第二个redis示例始终启动不了(写这篇文章的时候解决了),在两个不同的服务器上部署也可以成功

 
三、谈谈过程
      1、本来想安装部署单个Redis的方式连续操作两遍,才发现第一次操作时已经启动了名称为Redis的服务,第二次操作时服务根本就安装不上去,解决的方法就是给Redis服务命名,命令如下:
       redis-server --service-install redis6379.windows.conf --loglevel verbose  --service-name Redis6379
       --service-name是服务名称,坑爹的是我在网上拷贝的命令只有一个横杠(-),半天得不到想要的结果(一个横岗也会创建名称为redis的服务)
       2、安装服务的时候加上了servicename,在服务启动、停止、卸载的时候也需要加上servicename参数
             1、服务启动:redis-server --service-start --service-name Redis6379 redis6379.windows.conf
             2、服务停止:redis-server --service-stop --service-name Redis6379 redis6379.windows.conf
             3、服务卸载:redis-server --service-uninstall --service-name Redis6379 redis6379.windows.conf
       3、最后在谈谈之前为什么主从服务都可以安装成功,但是启动一个服务后第二个服务始终无法启动的坑 
    事件查看器的消息如下:(不知所云啊!)
     
   
             坑就在安装服务的命令:
    redis-server --service-install --service-name Redis6379 redis6379.windows.conf --loglevel verbose (不OK)    
    redis-server --service-install redis6379.windows.conf --loglevel verbose  --service-name Redis6379 (OK) 
    看清楚了,就在于service-name参数的位置,在配置文件前不行,必须放在最后
 
五、谈谈配置文件的修改(redis.windows.conf)
       1、主Redis服务配置文件不用做修改
               可能这个地方需要修改,我没有做测试
       2、从Redis服务配置文件修改如下:
             1、 端口修改
             2、  目前来看这里不用做修改,注释即可
             3、 日志文件
              4、  指定主Redis服务的IP和端口
 
五、截个图说明结论(用的工具是RedisDesktopManager)
      1、RedisRemoteMaster为远程主机的主Redis

   2、RedisRemoteSlaver为远程主机的从Redis (可以看到开始主redis未设置abc时,返回的是null,设置后,返回了新值)
 
  
         3、RedisLocal为主机的从Redis(同2)
 
 
五、调用Redis代码
    1、配置主从服务器
          

 <appSettings>
<!--Redis写入服务器地址,可以添加多个服务器通过,分隔-->
<add key="ReadWriteHosts" value="192.168.1.100:6379" />
<!--Redis读服务器地址,可以添加多个服务器通过,分隔-->
<add key="ReadOnlyHosts" value="192.168.1.100:6380,127.0.0.1:6379" />
</appSettings>
     2、Redis初始化(RedisConfig.cs
 class RedisConfig
{
public static RedisClient Redis
{
get
{
return (RedisClient)reidsPools.GetClient();
}
} private static string[] hosts;
private static PooledRedisClientManager reidsPools;
static RedisConfig()
{
var readWriteHosts = ConfigurationManager.AppSettings["ReadWriteHosts"].Split(',');
var readOnlyHosts = ConfigurationManager.AppSettings["ReadOnlyHosts"].Split(','); reidsPools = new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig
{
MaxWritePoolSize = 100,//“写”链接池链接数
MaxReadPoolSize = 200,//“读”链接池链接数
AutoStart = true,
DefaultDb = 0
});
}
}
     3、Redis操作工具类(RedisHelper.cs)
   public class RedisHelper
{
/// <summary>
/// 获取值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <returns></returns>
public T Get<T>(string key)
{
using (var redis = RedisConfig.Redis)
{
return redis.Get<T>(key);
}
} /// <summary>
/// 设置值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
public bool Set<T>(string key, T value)
{
using (var redis = RedisConfig.Redis)
{
return redis.Set<T>(key, value);
}
} /// <summary>
/// 设置值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
public bool Set<T>(string key, T value, DateTime dt)
{
using (var redis = RedisConfig.Redis)
{
return redis.Set<T>(key, value, dt);
}
} }
     4、调用代码

  class Program
{
static void Main(string[] args)
{
var redis = new RedisHelper(); redis.Set<string>("aa", DateTime.Now.ToString()); var d = redis.Get<string>("aa");
}
}
 

Redis主从服务部署的更多相关文章

  1. Redis__WindowsServer主从服务部署及调用实例

    本文转自:http://www.cnblogs.com/gossip/p/4898653.html 一.先谈谈单个Redis服务的安装         使用的redis是2.8.17版本,从官网下载解 ...

  2. windows环境redis主从安装部署

    准备工作 下载windows环境redis,我下载的是2.4.5,解压,拷贝一主(master)两从(slaveof).主机端口使用6379,两从的端口分别为6380和6381, 我本地索性用6379 ...

  3. DNS主从服务部署

    (1)节点信息 console01 主DNS 192.168.80.3 192.168.10.3 console02 从DNS 192.168.80.4 192.168.10.4 (2)环境部署 # ...

  4. Redis主从架构搭建和哨兵模式(四)

    一主一从,往主节点去写,在从节点去读,可以读到,主从架构就搭建成功了 1.启用复制,部署slave node wget http://downloads.sourceforge.net/tcl/tcl ...

  5. nopCommerce 3.9 大波浪系列 之 使用部署在Docker中的Redis缓存主从服务

    一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发 ...

  6. redis常用服务安装部署

    常用服务安装部署   学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环境: centos7 + vmware + xshell 即将登场的是: mysql(m ...

  7. redis主从集群搭建及容灾部署(哨兵sentinel)

    Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 ...

  8. windows下Redis 主从读写分离部署

    原文:windows下Redis 主从读写分离部署 1.可直接下载window下的运行文件(下面这个链接) 也可以浏览github 查看相应的版本说明文档 https://github.com/Ser ...

  9. puppet工作原理及部署redis主从篇

    一.简介 1.国际惯例什么是puppet puppet是一种Linux.Unix.windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件.用户.cron任务.软件包.系统 ...

随机推荐

  1. bzoj 1415 [Noi2005]聪聪和可可——其实无环的图上概率

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1415 乍一看和“游走”一样.于是高斯消元.n^2状态,复杂度n^6…… 看看TJ,发现因为聪 ...

  2. Java 数据类型及转换

    整形: byte(1个字节) 范围:-128~127 short(2个字节) 范围:-215~215-1 (-32768~32767) int(4个字节) 范围:-231~231-1 (-214748 ...

  3. win7 安装过程中遇到的错误解决方法

    win7 安装过程中遇到的错误解决方法 windows安装无法继续.若要安装windows 请单击 确定 重新启动计算机: 当 出现如上提示的时候,按下shift+f10 会打开命令窗口,进入到C:\ ...

  4. laravel中有条件使用where

    在项目开发的过程中;有时候会有多个参数 去用在where查询中;那么这里的where语句是可能有也可能没有的 1.用原生的mysql语句来实现 private function getData($ty ...

  5. chrome瀏覽器去掉緩存的方法

    方法一: 1.開發說打開開發者工具 勾選這個訪問可以 方法二: command+shift+R

  6. AngularJS:Scope(作用域)

    ylbtech-AngularJS:Scope(作用域) 1.返回顶部 1. AngularJS Scope(作用域) Scope(作用域) 是应用在 HTML (视图) 和 JavaScript ( ...

  7. 表空间 -- tablespace

    表空间是数据库的逻辑划分,一个表空间只能属于一个数据库.所有的数据库对象都存放在指定的表空间中.但主要存放的是表, 所以称作表空间. Oracle数据库中至少存在一个表空间,即SYSTEM的表空间. ...

  8. Mongodb时间问题

    Java保存到mongodb当前时间,使用RoboMongo查看数据显示时间比当前时间少8个小时,这是客户端的问题. MongoDB中的Date类型数据只保存绝对时间值,不保存时区信息,因此“显示的时 ...

  9. 1126 Eulerian Path

    题意:若图是连通图,且所有结点的度均为偶数,则称为Eulerian:若有且仅有两个结点的度为奇数,则称为semi-Eulerian.现给出一个图,要我们判断其是否为Eulerian,semi-Eule ...

  10. STM32使用printf丢失第一个字母的问题

    STM32使用printf函数给串口打印信息的执行步骤为: 1.重定向printf函数 给uart.c文件中增加如下函数: //重定向c库函数printf到USART1 int fputc(int c ...