一、创建Redis服务

运行环境是Window,安装Redis请看:安装教程。

直接开始创建Redis服务,演示就创建两个一主一从,先把安装路径下的 redis.windows.conf 文件复制一份重命名并更改端口号为6380,

并且把文件中的bind字段注释,protected-mode设置为no,

打开CMD跳转到安装目录,创建服务语句如下

D:\Redis>redis-server.exe --service-install redis.windows.conf --service-name Redis6379 --loglevel verbose
D:\Redis>redis-server.exe --service-install redis.windows.6380.conf --service-name Redis6380 --loglevel verbose

然后打开服务,如果没有运行就点击启动运行。

二、设置Redis主从复制

将6379端口的Redis作为主,6380端口的作为从,通过slaveof命令设置从Redis即可如下:

C:\Users\Xu>redis-cli -p 6380
127.0.0.1:6380> slaveof 127.0.0.1 6379
OK

我这是本地的服务所以访问没问题,如果是不同服务器的服务,请关注防火墙、ip等信息,确保服务器直接能互相访问。

三、设置哨兵

在Redis安装路径中新建哨兵配置文件sentinel.conf如下:

port 26379
protected-mode no
logfile "D:/Redis/senitnel.log"
sentinel monitor mymaster 127.0.0.1 6379 1

文件中设置了哨兵的端口、是否保护、日志文件保存地址和监听的主Redis数据库。一般是需要多个哨兵的,演示的话就创建一个,想多创建几个就多建几个配置文件,然后将哨兵设为服务,管理员打开CMD语句如下:

sc create RedisSentinel binpath= "\"D:\Redis\redis-server.exe\" --service-run sentinel.conf --service--name RedisSentienl --sentinel --loglevel verbose" start= auto

可以看到服务中已经有了,没有启动就启动下,哨兵这里如果是多台服务器就需要注意防火墙、ip等信息,否则无法连通。启动后配置文件会被写入其他的哨兵和从数据库等信息,如下

port 26379
protected-mode no
logfile "D:/Redis/senitnel.log"
sentinel myid bc139114daeb8c50b65466ae58f89822503b58da
# Generated by CONFIG REWRITE
loglevel verbose
dir "D:\\Redis"
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel config-epoch mymaster 6
sentinel leader-epoch mymaster 6
sentinel known-slave mymaster 127.0.0.1 6380
sentinel current-epoch 6

我们通过redis-cli命令可以进入哨兵和redis数据库查看信息,来判断是否配置正确,我们进入哨兵查看信息如下:

C:\Users\Xu>redis-cli -h 127.0.0.1 -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=1,sentinels=1

可以看到最后一条显示主数据是6379端口的,从数据一个哨兵一个,说明配置成功了(如果有问题可以通过哨兵日志等方式查看问题)。

四、在.Net Core中实现代码

在nuget中引用CSRedisCore,有两个类可以访问哨兵并访问redis数据库,分别是CSRedisClient和RedisSentinelManager。

1.RedisSentinelManager

public static void Set(int dbid)
{
using (var sentinel = new RedisSentinelManager(false, new string[] { "127.0.0.1:26379" })) //设置哨兵
{
sentinel.Connect("mymaster"); // 打开主数据库连接,参数是主数据库别称,在设置哨兵的时候有设置
var test2 = sentinel.Call(t => t.Select(dbid)); // 使用Call方法可以运行当前主数据的操作,select方法是选择数据库0-14号进行操作
sentinel.Call(t => t.Set("haha", DateTime.Now.ToString()));//执行方法
}
}

2.CSRedisClient

public class RedisCache
{
CSRedisClient[] redis = new CSRedisClient[14]; //Singleton
public RedisCache()
{
for (var a = 0; a < redis.Length; a++)
     redis[a] = new CSRedisClient("mymaster,defaultDatabase=" + a, new string[] { "127.0.0.1:26379" });
}
public void Set(int dbid)
{
redis[1].Set("haha","123123");
}
}

可以手动关闭redis服务来测试,会自动切换访问的数据。

.Net Core 使用 CSRedisCore 访问 Redis 的哨兵和主从复制的更多相关文章

  1. csredis-in-asp.net core理论实战-主从配置、哨兵模式

    csredis GitHub https://github.com/2881099/csredis 看了github上的开源项目,上面真的只是单纯的使用文档,可能对于我这种人(菜鸟)就不太友好, 我知 ...

  2. jedis访问redis学习笔记

    最近在学习redis,在网上查了些文章,利用他人已有的知识,总结写下了这篇文章,大部分内容还是引用别人的文章内容.经过测试发现spring-data-redis现在有的版本只能支持reids 2.6和 ...

  3. python访问redis

    python访问redis 1 Linux上安装redis a) 下载 $ wget http://download.redis.io/releases/redis-3.0.5.tar.gz b) 编 ...

  4. Redis Sentinel哨兵配置

    概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都 ...

  5. Springboot2.0访问Redis集群

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作高性能的key-value数据库.缓存和消息中间件,掌握它是程序员的必备技能,下面是一个springboot访问redis的 ...

  6. 【Redis】哨兵机制

    一.概述 什么是哨兵机制 二.环境配置 2.1 虚拟机 2.2 安装Redis 2.3 配置主从复制 2.4 配置哨兵 2.5 测试 2.6 疑惑(待解决) 一.概述 什么是哨兵机制 Redis的哨兵 ...

  7. .Net Core使用分布式缓存Redis:基础

    一.前言 Redis的介绍网上很多不再赘述.本次环境为net core 2.2,使用的StackExchange.Redis来操作Redis. 二.引用Microsoft.Extensions.Cac ...

  8. ASP.Net Core使用分布式缓存Redis从入门到实战演练

    一.课程介绍 人生苦短,我用.NET Core!缓存在很多情况下需要用到,合理利用缓存可以一方面可以提高程序的响应速度,同时可以减少对特定资源访问的压力.  所以经常要用到且不会频繁改变且被用户共享的 ...

  9. redis主从+ 哨兵模式(sentinel)+漂移VIP实现高可用系统

    原文:https://www.jianshu.com/p/c2ab606b00b7 客户端程序 客户端程序(如PHP程序)连接redis时需要ip和port,但redis-server进行故障转移时, ...

随机推荐

  1. Spring Security OAuth2.0认证授权二:搭建资源服务

    在上一篇文章[Spring Security OAuth2.0认证授权一:框架搭建和认证测试](https://www.cnblogs.com/kuangdaoyizhimei/p/14250374. ...

  2. centos 安装 部署 gitlab github

    https://www.cnblogs.com/wenwei-blog/p/5861450.html 我这里使用的是centos 7 64bit,我试过centos 6也是可以的! 1. 安装依赖软件 ...

  3. IPC 经典问题:Sleeping Barber Problem

    完整代码实现: #include <stdio.h> #include <unistd.h> #include <time.h> #include <stdl ...

  4. 为linux添加一块新硬盘并分区

    一---如何增加一块硬盘1:虚拟机添加硬盘2:分区3:格式化4:挂载5:设置可以自动挂载 1---设置里面 2---分区命令 fdisk /dev/sdb开始分区m显示命令列表p显示磁盘分区 同fdi ...

  5. AttGAN: Facial Attribute Editing by Only Changing What You Want 论文阅读笔记和AttGan的pytorch代码实现

    1.总体框架 上面的过程用详细描述即是 Test阶段: Train阶段: 由于我们无法得知编辑后的image,所以显而易见人脸属性编辑是一个无监督问题,而对于我们的xa需要获得关于b的属性,故利用at ...

  6. 【EXPDP】导出全部表的时候,选择不导出某个表

    导出的时候指定某一张表不导出的话,一般都用的是数据泵的expdp来操作 具体方法是: expdp test/test dumpfile=test.dmp directory=test_dir excl ...

  7. Python利用最优化算法求解投资内部收益率IRR【一】

    一. 内部收益率和净现值 内部收益率(Internal Rate of Return, IRR)其实要和净现值(Net Present Value, NPV)结合起来讲.净现值指的是某个投资项目给公司 ...

  8. SWPU2019

    一.题目打开介绍 这是题目本身打开的样子,继续进入题目 二.做题 简单的登陆界面和注册界面,没有sql注入已经尝试 申请发布广告 习惯性的测试 然后开始尝试注入,抓包, 两个都要,经过union注入判 ...

  9. logicaldisk本地磁盘管理

    在网上搜了很多,但是基本都是一样的,差不多都是互相转载摘抄,就那么几个寥寥无几的例子,所以我冒了很大的风险,自己经过多次的测试,对这个命令有了一些新的认识!拿出来分享一下! LOGICALDISK   ...

  10. canvas性能-drawImage渲染图片

    canvas性能-绘制图片 目录 canvas性能-绘制图片 canvas绘制图片 drawImage putImageData createPattern 测试绘制耗时 drawImage Imag ...