gin redis 链接不上_Redis的三种模式:主从、哨兵、集群

8afad44c82af15102358112e0c7f01ef.png

前言

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。普遍用于目前主流的分布式架构系统中,关于redis的详细介绍,见另一篇文章:

redis的安装与介绍​blog.csdn.net

redis的多机数据库实现,主要分为以下三种:

  1. Redis哨兵(Sentinel)
  2. Redis复制(主从)
  3. Redis集群

一、Redis的主从复制

通过执行slaveof命令或设置slaveof选项,让一个服务器去复制另一个服务器的数据。被复制的服务器称为:Master主服务;对主服务器进行复制的服务器称为:Slave从服务器。主数据库可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从数据库。而从数据库一般是只读的,并接受主数据库同步过来的数据。一个主数据库可以拥有多个从数据库,而一个从数据库只能拥有一个主数据库。

主从复制问题:当master down,需要手动将一台slave使用slaveof no one提升为master要实现自动,就需要redis哨兵。

实现原理步骤:

  1. 从服务器向主服务器发送SYNC命令
  2. 主服务器收到SYNC命令后,执行BGSAVE命令,在后台生成RDB文件,使用缓冲区记录从现在开始执行的所有的写命令。
  3. 当主服务器的BGSAVE命令执行完毕后,主服务器后将BGSAVE命令生成的RDB文件发送给从服务器,从服务器接收并载入这个RDB文件,将自己的数据库状态更新至主服务器执行BGSAVE命令时的数据库状态。
  4. 主服务器将记录在缓冲区里面的所有写命令发送给从服务器,从服务器执行这些写命令,将自己的数据库状态更新至主服务器数据库当前所处的状态。

507d341f0963652b1335165335846e77.png

二、Redis的哨兵(Sentinel)

为了解决Redis的主从复制的不支持高可用性能,Redis实现了Sentinel哨兵机制解决方案。由一个或多个Sentinel去监听任意多个主服务以及主服务器下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线的主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已经下线的从服务器,并且Sentinel可以互相监视。

ea53208ce3b9bdb2b77d47deb3057cf4.png

c76e5f93d48e253a174a12d0468be0a3.png

当有多个Sentinel,在进行监视和转移主从服务器时,Sentinel之间会自己首先进行选举,选出Sentinel的leader来进行执行任务。

三、Redis集群

集群是Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能。一个Redis集群通常由多个节点组成;最初,每个节点都是独立的,需要将独立的节点连接起来才能形成可工作的集群。

Cluster Nodes命令和Cluster Meet命令,添加和连接节点形成集群。

626fca5f1259da83a6c04d181ecfb7b4.png

Redis中的集群分为主节点和从节点。其中主节点用于处理槽;而从节点用于复制某个主节点,并在被复制的主节点下线时,代替下线的主节点继续处理命令请求。

2546807366f4a5c223d5fb4bd9e78c3b.png

d68bd7f11c5f023fcbd9bb3e2db84a7e.png

觉得对你有帮助,关注博客和公众号。不定期分享最新前沿技术框架和bat大厂常用技术等,加群不定期分享行业内大牛直播讲课以及获得视频课件资料等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用GinRedis进行事务操作时,你可以通过以下步骤来实现: 1. 创建Redis连接:首先,你需要使用Go语言的Redis客户端库连接到Redis数据库。可以使用第三方库如`go-redis`或`redigo`来实现。创建一个Redis连接池,以便在需要时可以重用连接。 2. 创建Gin路由:使用Gin框架创建HTTP路由和处理程序。你可以定义不同的路由来处理各种请求。 3. 开启事务:在处理程序中,使用Redis的MULTI命令来开启一个事务。MULTI命令将后续的Redis命令添加到事务队列中,而不是立即执行它们。 4. 执行Redis命令:在事务中,使用Redis的各种命令(如SET、GET、INCR等)来执行你需要的操作。这些命令会被添加到事务队列中。 5. 执行事务:在事务中的所有命令都添加完成后,使用Redis的EXEC命令来执行整个事务。Redis会按照添加的顺序依次执行队列中的命令,并返回每个命令的结果。 6. 处理事务结果:根据EXEC命令的返回结果,你可以判断事务是否执行成功。如果成功,你可以继续处理其他业务逻辑。如果失败,你可以回滚事务或进行其他错误处理。 需要注意的是,在Redis事务中,一旦EXEC命令被调用,Redis会将所有命令作为一个原子操作执行。这意味着要么所有命令都成功执行,要么都不执行。如果在事务执行期间发生了错误,你可以使用Redis的DISCARD命令来放弃执行事务的结果,并回滚到事务开始之前的状态。 希望这些步骤能帮助你在GinRedis中实现事务操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值