Redis单节点容量问题

一、单节点容量问题

我们在实际场景中,往往遇上一个单节点容量问题。

1.进行业务拆分,数据分类

2.到了数据不能拆分的时候,可以进行数据分片

  • 进行哈希取模(影响分布式下的扩展性%3,%4,如果多加一台机器,就会收到影响)
  • 进行逻辑随机(可以放进去,但是拿不出来)
    • 解决方案:两台机器同时存储一个list,然后client直接连2台redis,进行两台一起消费
  • 一致性哈希算法
    • crc16 crc32 md5 sha1 sha256
    • 没有进行取模,等宽16位,将16位抽象出一个哈希环,计算一致性哈希算法
一致性哈希算法(哈希环):
1.求出memcached服务器(节点)的哈希值,并将其配置到0~232的圆(continuum)上。
2.采用同样的方法求出存储数据的键的哈希值,并映射到相同的圆上。
3.从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过232仍然找不到服务器,就会保存到第一台memcached服务器上。
来源:(https://www.cnblogs.com/williamjie/p/9477852.html)

3.优缺点

优点:加节点的确可以分担其他节点压力(而且也不会造成全局洗牌)

缺点:新增节点会造成一小部分数据不能命中

二、twemproxy

twemproxy是一种代理分片机制,由twitter开源,twemproxy作为代理,可以接受多个程序访问,按照路由规则,转发为后台各个Redis服务器,再进行原路返回,该方案很好的解决了Redis实例承载能力问题。

安装

git clone https://github.com/twitter/twemproxy.git
如果报错,执行:yum update nss
yum install automake libtool
autoreconf -fvi
如果报错,执行
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum clean all
yum install autoconf268.noarch -y
autoreconf268 -fvi
./configure --enable-debug=full
make
查看服务文件
cd scripts
nutcracker.init
拷贝这个文件进/etc/init.d目录
拷贝编译运行文件进/usr/bin目录
拷贝conf文件夹进/etc/nutcracker目录
进入/etc/nutcracker,修改nutcracker.yml进行配置 alpha:
listen: 127.0.0.1:22121
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 127.0.0.1:6379:1
- 127.0.0.1:6380:1 之后开启nutcracker服务,开启service服务,之后连接redis-cli进行连接22121端口
我们通过nutcracker进行get和set,我们在nutcracker不支持的命令:
keys *
watch k1
multi
这些命令都不支持

predixy软件,也可作为替代品

wget https://github.com/joyieldInc/predixy/releases/download/1.0.5/predixy-1.0.5-bin-amd64-linux.tar.gz

修改predixy.conf

打开Bind 127.0.0.1:7617
打开include sentinel.conf

修改26379的哨兵

port 26379
sentinel monitor ooxx 127.0.0.1 36379 2
sentinel monitor xxoo 127.0.0.1 46379 2

修改26380的哨兵

port 26380
sentinel monitor ooxx 127.0.0.1 36379 2
sentinel monitor xxoo 127.0.0.1 46379 2

下面分别启动,省略了。

之后可以直接测试

最新文章

  1. Oracle【IT实验室】数据库备份与恢复之二:SQL*Loader
  2. eclipse插件:打开选中文件所在的目录
  3. BZOJ3236: [Ahoi2013]作业
  4. 【转】Tomcat组件生命周期管理
  5. 发布b3log-solo后,访问http://localhost:8080/b3log-solo/提示错误为staticServePath Error。
  6. Meta元素可视区
  7. Delphi NativeXml用法攻略
  8. Best MVC Practices(最优的MVC布局)
  9. element ui Angular学习笔记(一)
  10. MySQL准备
  11. zeromq学习笔记1——centos下安装 zeromq-4.1.2
  12. maven与jdk版本不一致报:Unsupported major.minor version 51.0
  13. English trip -- MC(情景课)3 D
  14. HDU 3829
  15. Docker Machine 和 Docker Engine 的区别
  16. WCF的异步调用
  17. C语言控制台窗体图形界面编程(八):鼠标事件
  18. HUST软工1506班第2周作业成绩公布
  19. Python入门(1)
  20. Centos7一键安装lnmp脚本

热门文章

  1. 用js的方式运行c程序之webassemly
  2. eclipse创建项目(步骤加图片)
  3. .Net Core 2.*+ InfluxDB+Grafana+App Metrics实时性能监控
  4. 分类并查集[noi2001 食物链]
  5. NDK学习笔记-JNI数据类型和属性方法的访问
  6. 论文阅读 | Tackling Adversarial Examples in QA via Answer Sentence Selection
  7. day24 类的初始化、绑定方法、继承
  8. zping ping包工具20180605.exe测试版
  9. u盘启动盘安装centos7.5操作系统
  10. Vuex的简单认识