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");
        }
    }
时间: 2024-08-26 12:30:40

Redis__WindowsServer主从服务部署及调用实例的相关文章

Redis主从服务部署

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)

MySQL服务器主从服务详解

MySQL主从复制概念 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从

jax-ws服务端生成和客户端调用实例

最近公司让基于别的公司的接口写一个自己的接口,接口对于别的公司来说相当于客户端,但对于自己本公司要调用的程序来说,又相当于服务端. 闲来无事,总结下. 先从java自带的service开始 JAX-WS(java api xml webservice)  基于javaAPI的webService实现 用的工具是myeclipse 首先是服务端 1.新建webProject  jax-wsServer  如图: 2.新建包和类如下图 既然是入门例子,咱就越简单越好,关键看好流程 IMService

jax-ws服务端生成和客户端调用实例详解

长时间不写博客,照片都忘记怎么上传了,由于上一篇图片没有上传,所以删掉,重做了一个. 最近公司让基于别的公司的接口写一个自己的接口,接口对于别的公司来说相当于客户端,但对于自己本公司要调用的程序来说,又相当于服务端. 闲来无事,总结下. 先从java自带的service开始 JAX-WS(java api xml webservice)  基于javaAPI的webService实现 用的工具是myeclipse 首先是服务端 新建webProject  jax-wsServer  如图: 新建

Android Service AIDL 远程调用服务 简单音乐播放实例的实现

Android Service是分为两种: 本地服务(Local Service): 同一个apk内被调用 远程服务(Remote Service):被另一个apk调用 远程服务需要借助AIDL来完成. AIDL 是什么 AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码.如果在一个进程中(例如Activi

redis服务部署及配置详解

Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集合和有序集合.支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能.所以Redis也可以被看成是一个数据结构服务器. Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为"半持久化模式"):也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为"全

.Net 与 Java 的服务接口相互调用

本文介绍.Net 与 Java 相互调用的例子.下面的介绍主要包括三方面:一是通过常用Web服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remote实现远程对象相互调用. 首先说一下Web服务的来源,Web服务是一种新的Web应用程序分支,可以执行从简单的请求到复杂商务处理等任何功能.一旦部署以后,其他Web服务应用程序可以发现并调用它部署的服务. Web Service是一种应用程序,它可以使用标准的互联网协议,像超文件传输协议(HTTP).简单对象访问协议(SOAP).

axis2 webservice入门知识(JS,Java,PHP调用实例源码)

背景简介 最近接触到一个银行接口的案子,临时需要用到axis2 webservice.自己现学现总结的一些东西,留给新手.少走弯路. Axis2简介 ①采用名为 AXIOM(AXIs Object Model)的新核心 XML 处理模型,利用新的XML解析器提供的灵活性按需构造对象模型. ②支持不同的消息交换模式.目前Axis2支持三种模式:In-Only.Robust-In和In-Out.In-Only消息交换模式只有SOAP请求,而不需要应答:Robust-In消息交换模式发送SOAP请求,

服务部署到Swarm Cluster中

对于已存在的镜像,将其部署到服务器中并开始对外服务,便是它的职责,而我们要做的便是帮助它完成职责,前两个应用环节都已产生了相应的镜像,在这一环节,将完成服务部署到容器集群的工作,对于这一过程,实际执行中有很多种方式,毕竟一山比一山高,整个过程比较简单,镜像以任务形式下发到各容器主机即可,本次部署过程较为简单,只作为示例来讲,无需太多复杂过程,更强调过程实现.   一.选用部署方式 在之前的一篇文章:约定Service构建方式(https://www.cnblogs.com/CKExp/p/994