您的位置:首页 > 数据库 > Redis

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

2016-06-30 21:41 627 查看
一、先谈谈单个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");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: