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、不能开启事务
  • 相关阅读:
    C# 自定义泛型类,并添加约束
    WPF DataGrid 的RowDetailsTemplate的使用
    jquery腾讯微博
    WPF DataGrid的LoadingRow事件
    WPF DataGrid自定义列DataGridTextColumn.ElementStyle和DataGridTemplateColumn.CellTemplate
    WPF DataGrid支持的列类型
    WPF DataGrid自动生成列
    WPF DataTemplateSelector的使用
    WPF数据模板的数据触发器的使用
    UVa 1601 || POJ 3523 The Morning after Halloween (BFS || 双向BFS && 降维 && 状压)
  • 原文地址:https://www.cnblogs.com/bigdata-familyMeals/p/14317211.html
Copyright © 2011-2022 走看看