• Redis主从、事务、哨兵、消息、代理分片


    安装

    wget http://download.redis.io/releases/redis-3.0.5.tar.gz
    
    tar -zxvf redis-3.0.5.tar.gz
    
    cd redis-3.0.5
    
    make
    
    make PREFIX=/opt/moudles/redis install
    

    命令脚本

    cd /opt/moudles/redis/bin
    
    redis-benchmark  压力测试工具
    redis-check-aof  检查AOF日志文件
    redis-check-dump  检查RDB快照文件
    redis-cli  客户端
    redis-sentinel  哨兵,实现主从复制的HA(2.4之后版本)
    redis-server    启动和停止redis server
    

    核心配置文件

    从源码中拷贝到安装目录
    cd /opt/moudles/redis
    
    mkdir conf
    
    cp /opt/moudles/redis-3.0.5/redis.conf conf/
    
    1. port 6379
    2. daemonize no # 是否以后台运行的方式启动redis
    
    bin/redis-server conf/redis.conf # 启动redis
    
    ps -ef|grep redis
    
    bin/redis-cli
    

    事务

    Oracle会自动开启事务,其本质是只要写入到日志就算事务提交成功。

    Oracle内存中维护一个检查点队列,保存的都是脏数据(还没有写入到硬盘文件上的数据)

    redis的事务,把事务中每条命令都写入到队列,最后再提交

    MULTI
    
    INCRBY foo 1
    
    DECRBY bar 1
    
    EXEC
    

    如果写入到队列,还没有执行EXEC,其中某个key已被修改,这种场景事务不应该被提交成功;则需要WATHCH监视key:

    WATCH foo
    
    MULTI
    
    INCRBY foo 1
    
    DECRBY bar 1
    
    EXEC
    

    消息机制

    1. 消息可以是字符串也可以是对象
    2. 消息类型:点对点QUEUE、群发广播TOPIC
    publish 频道的名称 消息的内容
    
    psubscrible 可以使用通配符,接收多个频道的消息
    

    redis主从复制

    1. 是主从架构,就存在单点故障的问题
    2. 作用:
      • 实现读写分离:默认主节点负责写,从节点负责读
      • 实现任务分离:主节点不再负责生产RDB和AOF文件,由从节点产生

    主从架构模型

    星型模型(使用较多) - 效率高 - HA切换复杂

    线型模型 - 效率低 - HA切换方便

    主: 修改master的redis.conf

    关闭RDB
    
    # save 900 1
    # save 300 10
    # save 60 10000
    
    关闭AOF
    
    appendonly no
    

    从6380: 修改slave的redis6380.conf

    port 6380
    
    dbfilename dump6380.rdb
    
    appendfilename "appendonly6380.aof"
    
    slaveof 主节点地址
    

    从6381: 修改slave的redis6381.conf

    port 6381
    
    dbfilename dump6381.rdb
    
    appendfilename "appendonly6381.aof"
    
    slaveof 主节点地址
    
    # 如果是单机模拟,slaveof要指定ip地址,如果是阿里云服务器,需要在控制台开放安全组规则(端口)6379、6380、6381,包括下文中的哨兵:26379
    

    启动:

    bin/redis-server conf/redis6379.conf
    bin/redis-server conf/redis6380.conf
    bin/redis-server conf/redis6381.conf
    bin/redis-cli -p 6379
    bin/redis-cli -p 6380
    bin/redis-cli -p 6381
    

    哨兵

    1. redis2.4以后支持,在这之前可以借助zookeeper实现HA
    2. 启动三个实例:

    哨兵核心配置文件:sentinel.conf

    cd /opt/moudles/redis
    cp /opt/moudles/redis-3.0.5/sendtinel.conf conf/
    

    关键参数配置:

    port: 26379
    
    sentinel monitor <master-name> <ip> <redis-port> <quorum>
    
    - <master-name>:主机别名
    - <ip> <redis-port>:ip和端口
    - <quorum>:几个哨兵(一般至少需要2个)
    
    
    sentinel auth-pass <master-name> <password>
    
    > 如果主节点配置了密码,在这里配置哨兵连接主节点的密码
    
    sentinel down-after-milliseconds <master-name> <milliseconds>
    > 默认:sentinel down-after-milliseconds mymaster 30000
    > 如果30秒没有收到主节点的心跳,将会进行主节点切换
    
    sentinel parallel-syncs mymaster 1(重要)
    这个参数一定不能太大,选举新的主节点后,允许同时连接的从节点的个数
    
    - Default is 3 minutes.
    sentinel failover-timeout mymaster 180000
    默认如果在3分钟内HA没有切换成功,则认定切换失败
    

    启动:

    bin/redis-sentinel conf/sentinel.conf
    
    
    kill 杀掉Master进程,模拟宕机;(如果是在一台机器上部署,配置一个哨兵才可以看到具体切换的日志信息)

    代理分片

    哨兵是针对主节点,通过代理分片可以实现多个从节点之间负载均衡。

    安装 nutcracker-0.3.0.tar.gz

    wget https://github.com/twitter/twemproxy/archive/master.zip

    需要编译安装:

    详见:

    https://www.cnblogs.com/kevingrace/p/5685401.html

    配置

    cd /opt/moudles/redisproxy
    mkdir conf
    cp /opt/moudles/nutcracker-0.3.0/conf/nutcracker.yml conf/
    
      servers: //这里配置了两个分片
       - 182.48.115.237:6379:1
       - 182.48.115.238:6379:1
    

    检查配置:

    ./nutcracker -t conf/nutcracker.yml
    

    启动代理:

    ./nutcracker -d -c conf/nutcracker.yml
    
    # 使用redis-cli直接连接到代理即可:
     bin/redis-cli -h 代理ip -p 22121
  • 相关阅读:
    前端之CSS1
    前端之HTML
    Python进阶之网络编程
    SparkSQL——HiveContext的使用
    SparkSQL——SQLContext的使用
    语义分析
    SLR(1)分析法分析过程
    算符优先分析法
    LL(1)语法分析
    递归下降分析分析法
  • 原文地址:https://www.cnblogs.com/tianboblog/p/9220592.html
Copyright © 2020-2023  润新知