zoukankan      html  css  js  c++  java
  • Windows下安装Redis环境

    下载redis:https://github.com/MicrosoftArchive/redis/releases (这里选择Redis-x64-3.0.504.zip)

    一、单节点环境

    Redis临时服务

    # 打开cmd,进入到刚才解压到的目录,启动临时服务:redis-server.exe redis.windows.conf  (备注:通过这个命令,会创建Redis临时服务,不会在window Service列表出现Redis服务名称和状态,此窗口关闭,服务会自动关闭。)

    # 打开另一个cmd窗口,客户端调用:redis-cli.exe -h 127.0.0.1 -p 6379。

    Redis自定义windows服务安装

    进入Redis安装包目录,安装服务:redis-server.exe --service-install redis.windows.conf --service-name redisserver1 --loglevel verbose

    可以在window service列表下查看是否安装成功。

    安装服务:redis-server.exe --service-install redis.windows.conf --service-name redisserver1 --loglevel verbose

    启动服务:redis-server.exe  --service-start --service-name redisserver1

    停止服务:redis-server.exe  --service-stop --service-name redisserver1

    卸载服务:redis-server.exe  --service-uninstall--service-name redisserver1

    二、Redis Cluster环境

    搭建 Redis集群,三个主节点,三个从节点,多主节点为了分布集群,从节点是为了高可用性。

    软件环境准备

    # 下载redis最新版本(版本必需要3.0以上)

    下载地址: https://github.com/MSOpenTech/redis/releases   下载 Redis-x64-3.0.504.zip

    # 安装Ruby语言运行环境 

    下载地址:http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.3.3-x64.exe

    选中3个,然后点击安装。

    验证:打开cmd窗口,输入ruby –version出现版本号 表示安装成功。

    # 安装redis的ruby驱动rubygems

    下载地址:https://rubygems.org/pages/download

    也可以去这里下载:https://www.jb51.net/softs/539242.html

    进入rubygems-2.7.7目录下面执行cmd命令:ruby setup.rb

    # 执行命令:gem install redis

    开始安装

    # 解压Redis-x64-3.0.504.zip,并复制,如下图

    # 修改每个redis.windows.conf, 修改里面的端口号,以及集群的配置

    cluster-enabled yes
    cluster-config-file nodes-6379.conf
    cluster-node-timeout 15000
    appendonly yes

    如果cluster-enabled 不为yes, 那么在使用JedisCluster集群代码获取的时候,会报错。
    cluster-node-timeout 调整为  15000,那么在创建集群的时候,不会超时。
    cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。

    记得把其他节点配置也要改。

    # 编写一个bat来启动redis,在每个节点目录下创建start.bat,内容如下(端口记得对应):

    title redis-7000
    redis-server.exe redis.windows.conf

    # 进入每个端口的文件夹,执行start-server.bat文件,启动每个节点的服务

    # 安装集群脚本redis-trib

    下载地址  https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb

    进入redis-trib.rb所在的目录。

    执行以下命令:

    ruby redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

    注:如果出现Node is not empty,先清空所有端口目录下面的nodes.conf和dump.rdb文件再重复执行第9步,然后再执行上面的命令。

    在出现 Can I set the above configuration? (type 'yes' to accept):   请确定并输入 yes 。

    #验证集群是否启动成功

    进入某个端口文件夹,操作某个节点指令:

    redis-cli.exe -c -p 7000     

    参数-c表示进入cluster模式。

    在7000节点存储一个键

    Set test zxh  

    注意:可能会出现“Redirected to slot [8106] located at 127.0.0.1”的提示,这表示通过计算,落在了8106这个slot上了(因为7000是slave,7001是master只有master才能写入,如果在7001进行写入,则不会有该提示信息)。

    重新打开一个cmd窗口连接7001节点

    redis-cli.exe -c -p 7001  

    执行

    get test  

    如果能取到在7000节点存储的键,表明集群安装成功。

    注:下次启动集群的时候,只需要启动每个节点就行,无需在执行ruby redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005命令了。

    三、redis哨兵

    哨兵Sentinel

    Redis Sentinel是一个分布式系统, 一个架构中可以运行多个Sentinel 进程,一个 Sentinel 可以与其他多个 Sentinel 进行连接, 各个 Sentinel 之间可以互相检查对方的可用性,并进行信息交换。
    每个哨兵(sentinel)会向其它哨兵(sentinel)、master、slave 定时发送消息,以确认对方是否“活”着。如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(即所谓的“主观认为宕机”或“主观下线”:Subjective Down,简称 sdown)
    若“哨兵群”中的多数 sentinel 都报告某一 master 没响应,系统才认为 该master “彻底死亡”(即客观上的真正宕机或“客观下线”:Objective Down,简称 odown),通过一定的 vote 算法,从剩下的 slave 节点中,选一台提升为 master,然后自动修改相关配置。

    配置sentinel

    注意:windows系统下解压的Redis的zip文件夹中是不存在sentinel.conf文件的,那么我们需要手动来新建该文件。

    sentinel.conf的文件内容解读:

    # ------------------------------------------------------------------------------------ #
    # 这个是Redis-6379的配置内容,其它两个Redis-6380、Redis-6381同理新增然后改一下端口即可 #
    # ------------------------------------------------------------------------------------ #
     
    # 当前Sentinel服务运行的端口
    # 在默认情况下,Sentinel 使用 TCP 端口 26379(普通 Redis 服务器使用的是 6379 )
    port 26379
     
    # 哨兵监听的主节点mymaster;最后面的数字 3 表示最低通过票数;# 默认值 2
    # 如果投票通过,则哨兵群体认为该主节点客观下线(odowm)
    sentinel monitor mymaster 127.0.0.1 6379 3
     
    # 哨兵认定当前主节点mymaster失效的判别间隔时间
    # 如果在设置的时间内(毫秒),当前主节点没有响应或者响应错误代码,则当前哨兵认为该主节点主主观下线(sdown)
    # 3s内mymaster无响应,则认为mymaster宕机了
    sentinel down-after-milliseconds mymaster 3000
     
    # 执行故障转移时,最多有1个从节点同时对新的主节点进行同步
    # 当新的master上位时,允许从节点同时对新主节点进行同步的从节点个数;默认是1,建议保持默认值
    # 在故障转移期间,将会终止客户端的请求
    # 如果此值较大,则意味着"集群"终止客户端请求的时间总和比较大
    # 反之此值较小,则意味着"集群"在故障转移期间,多个从节点仍可以提供服务给客户端
    sentinel parallel-syncs mymaster 1
     
    # 故障转移超时时间。
    # 当故障转移开始后,但是在此时间内仍然没有触发任何故障转移操作,则当前哨兵会认为此次故障转移失败
    sentinel failover-timeout mymaster 10000

    如果搭建的是哨兵集群,只需要修改port端口即可。

    哨兵启动脚本start-sentinel.bat内容如下:

    redis-server.exe sentinel.conf --sentinel

    注意:sentinel的配置与redis的配置是分开的,如果搭建的是:一主两从,哨兵集群(3个)。那么就需要复制6份Redis脚本,3份作为主从复制(一主两从),3份作为sentinel。

    主从切换

    可以从 sentinel 日志中出现的几个消息来进行查看故障转移:

    ① +switch-master:表示切换主节点(从节点晋升为主节点)
    ② +sdown:主观下线
    ③ +odown:客观下线
    ④ +convert-to-slave:切换从节点(原主节点降为从节点)

    但是在我们的操作中,发现当master下线的时候,sentinel可以看到master下线的日志,但是并没有主备切换的日志信息,这是怎么回事呢?

    时刻与技术进步,每天一点滴,日久一大步!!! 本博客只为记录,用于学习,如有冒犯,请私信于我。
  • 相关阅读:
    C++之路进阶——codevs2439(降雨量)
    C++之路进阶——codevs2933(诗人小G)
    C++之路进阶——bzoj2879(美食节)
    C++之路进阶——bzoj1934(善意的投票)
    C++之路进阶——bzoj3876(支线剧情)
    C++之路进阶——codevs1281(Xn数列)
    八数码难题
    道路游戏
    细胞分裂
    最长链
  • 原文地址:https://www.cnblogs.com/myitnews/p/13715012.html
Copyright © 2011-2022 走看看