redis分片技术
时间:2019-09-25
本文章向大家介绍redis分片技术,主要包括redis分片技术使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.也无需求
- 如果需要动态的扩展内存,单个redis节点上有上限(10M默认-512M-1GB)
- 如果将数据保存到一个redis节点中,可能会出现丢数据的风险.所以尽可能分开保存.
2.分片机制介绍
特点:
- 多台redis节点将内存扩大N倍
- 多台redis共同唯一所有的数据.每个节点中所保存的数据都不一样的.
3.redis分片配置步骤
(1)复制配置文件
(2)修改端口号
(3)启动多态redis
redis-server redis-6379.conf [root@localhost shards]# redis-server redis-6380.conf [root@localhost shards]# redis-server redis-6381.conf [root@localhost shards]# ps -ef |grep redis root 9789 1 0 19:41 ? 00:00:00 redis-server *:6379 root 9794 1 0 19:41 ? 00:00:00 redis-server *:6380 root 9798 1 0 19:41 ? 00:00:00 redis-server *:6381 root 9804 7057 0 19:41 pts/2 00:00:00 grep redis
4.redis分片入门案例
连接池操作
@Test public void test01(){ List<JedisShardInfo> shards = new ArrayList<>(); shards.add(new JedisShardInfo("192.168.126.166", 6379)); shards.add(new JedisShardInfo("192.168.126.166", 6380)); shards.add(new JedisShardInfo("192.168.126.166", 6381)); JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(500); config.setMaxIdle(20);//设定最大空闲链接 //实现链接池的操作 ShardedJedisPool pool = new ShardedJedisPool(config, shards); /*ShardedJedis shardedJedis = new ShardedJedis(shards);*/ ShardedJedis shardedJedis = pool.getResource(); shardedJedis.set("1807","学习redis分片"); System.out.println("获取数据:"+shardedJedis.get("1807")); //shardedJedis.close(); //将链接直接关闭. pool.returnResource(shardedJedis);//将链接还回池中. }
5.Hash一致性算法
5.1数据存储策略
2^32=21亿
5.2均衡性
说明:采用均衡性的特点让数据尽可能均匀.如果分配不均则采用虚拟节点争抢数据.最终达到相对平衡.
问题:Hash一致算法中存在的问题,如果计算的结果node节点分布不均匀.则可能会出现数据超过最大内存的现象.
解决:尽可能的让节点均匀分配数据.
5.3单调性
说明:当节点数量增加时,数据会重新进行挂载,但是尽可能保证原有的数据不变.
特列:
如果使用分片的过程中,分片的节点突然宕机.会导致映射的内存缺失.直接导致整个分片将不能正常使用.
5.4分散性
特点:由于分布式的原因.有些系统不能够看到全部的内存空间.会导致一个key出现多个位置的现象(不好的)
5.5负载
说明:负载是分散性的另一种讨论,可能会出现一个位置有多个key的现象.
原文地址:https://www.cnblogs.com/gxlaqj/p/11588291.html
- 几个实现分页的方法
- 如何识别IDA反汇编中动态链接库中的函数
- Kali Linux安装TL-WN821N USB无线网卡驱动(make失败)
- Cookie、Session登陆验证相关介绍和用法
- 题型分析
- .NET CORE 框架ABP的代码生成器(ABP Code Power Tools )使用说明文档
- Lua编写wireshark插件初探——解析Websocket上的MQTT协议
- 在Ubuntu 16.04环境下安装Docker-CE(附视频教程)
- 修改HTML5 input placeholder 颜色及修改失效的解决办法
- 设置同样字体大小,chrome浏览器有时字体偏大的解决办法(转)
- 手机端调用系统相册并上传图片
- select自定义小三角样式
- 一个非常好用的文字滚动的案例,鼠标悬浮可暂停
- localstorage和sessionstorage上手使用记录
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python3 多线程问题:ModuleNotFoundError: No module named 'thread',原因及解决办法。
- 文件传输和秒传
- 关于数据库的各种备份与还原姿势详解
- Python 技术篇-多线程的2种创建方法,多线程的简单用法,快速上手。
- Python 技术篇-调用浏览器访问指定网页,一行代码实现。非Selenium。
- 数据库热备份神器 - XtraBackup
- Python 技术篇-读取文件,将内容保存dict字典中。去掉字符串中的指定字符方法。dict字典的遍历。
- PyQt5 技术篇-plainTextEdit控件获得文本内容方法、设置文本内容方法。
- PyQt5 技术篇-鼠标移动控件显示提示,Qt Designer控件提示设置方法。
- PyQt5 技术篇-窗口名、窗口图标的设置方法。
- 101个shell脚本
- PyQt5 图片兼容性问题:"libpng warning: bKGD: invalid.",原因及解决办法。
- 编程语言经典小例题—Python版【持续更新】
- Python+selenium 自动化-切换窗口页签、切换iframe框架。确定页面是否包含iframe方法。
- JavaScript 技术篇-js获取iframe内的元素方法。