zoukankan      html  css  js  c++  java
  • redis集群理论与实战

    理论

     1.业务拆分
    2.数据不能拆、使用算法,将数据分片
    a.hash+取模
    b.random随机分配  一般可以做消息队列
    c.一致性hash/映射算法
      1.算法生成hash环
      2.机器node01、node02是物理机,可以在环上根据算法生成对应的物理点
      3.凡是数据物理点之前的数据都属于该机器的值
      4. client输入数据,点落到那个物理点范围内就存储到那个范围内
      5.问1:增加一台机器数据怎么办?a.可以增加、可以分担其他节点的压力,不会造成全局洗牌。b.新增节点会造成一小部分不能命中(新增环上的物理点到上一个物理点之间的数据没有)
        带来问题:1. 击穿,压到mysql 2.
      6.问2:

      

    redis连接成本很高怎么做:
      a.增加代理

     

    代理实战:

    使用twitter代理
    git学习网址:https://github.com/twitter/twemproxy
    下载:git clone https://github.com/twitter/twemproxy.git
    如果:Http request failed
    yum update nss
    cd twemproxy

    autoreconf -fvi
    需要安装高版本,解决办法:https://www.cnblogs.com/fnlingnzb-learner/p/5831443.html
    ./configure --enable-debug=full
    make

    配置:

    cp tmp/twemproxy/scripts/nutcracker.init /etc/init.d/
    cd /etc/init.d
    chmod +x twemproxy 变绿
    查看twemproxy文件需要两个配置:

    1.将conf目录下所有文件移动到/etc/nutcracker
    cp ./*  /etc/nutcracker/

    2.配置全局环境path  比如放到:根目录下/bin、/sbin、 /usr/bin

        cp /tmp/twemproxy/src/nutcracker /usr/bin

    3. 备份并编辑 vi nutcracker.yml

    4. 只留下alpha、删除其他 命令: d G

    5. 在增加服务6380

    启动:

    1.启动redis 6379
    redis-server --port 6379

    1.启动redis 6380

    redis-server --port 6380

    1.启动代理默认端口22122

    service twemproxy start

    测试代理:

    redis-cli -p 22121

    127.0.0.1:22121> set a a
    OK
    127.0.0.1:22121> set b b
    OK
    127.0.0.1:22121> set ooxx a
    OK
    127.0.0.1:22121> set ooaa b
    OK
    127.0.0.1:22121> lpush list1 a b c d e f g h i g k l
    (integer) 12

    127.0.0.1:22121> keys *
    Error: Server closed the connection
    127.0.0.1:22121> watch a
    Error: Server closed the connection
    127.0.0.1:22121> multi
    Error: Server closed the connection

      

    测试redis6380

    [root@redis2 ~]# redis-cli -p  6380
    127.0.0.1:6380> keys *
    1) "list1"
    2) "ooaa"
    3) "ooxx"
    127.0.0.1:6380> get ooxx
    "a"
    

      

    测试redis6379

    [root@redis2 ~]# redis-cli -p 6379
    127.0.0.1:6379> get a
    "a"
    127.0.0.1:6379> keys *
    1) "b"
    2) "a"
    

      

    结论:

    • 对于客户端只需要直到代理即可。
    • 代理将不同的key发送到不同的redis服务上
    • 代理不能获取全量key、不能watch、不能开启事务
  • 相关阅读:
    论频谱中负频率成分的物理意义(转载)
    VS2008的glaux库
    通过域名显示IP列表
    Shader errorX3205的解决
    Curl, Divergence, Circulation
    关于FIONREAD命令的作用
    Cairngorm的结构及开发使用(2)(转)
    结合Flex Builder和Flash CS4制作一个中国地图的应用(转)
    大型高并发高负载网站的系统架构(转)
    Cairngorm的结构及开发使用(4)(转)
  • 原文地址:https://www.cnblogs.com/bigdata-familyMeals/p/14317211.html
Copyright © 2011-2022 走看看