redis相关文章

----redis原理概述
-----redis集群方案
----redis分区(分片)原理
----Redis实现分布式锁
----redis缓存穿透、雪崩和解决方案

分区的概念

  • 分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集
  • 如果只使用一个redis实例时,其中保存了服务器中全部的缓存数据,这样会有很大风险,如果单台redis服务宕机了将会影响到整个服务。解决的方法就是我们可以采用分片/分区的技术,将原来一台服务器维护的整个缓存,现在换为由多台服务器共同维护内存空间

分片的实现

说明与分析
采用在一台主机上实现分片的方式,所以只需要在该主机上配置启动三台redis的实例即可。因为redis默认使用的端口号为6379,所以这里我们分别使用6379、6380以及6381三个端口来实现
结构图

配置

  1. 进入到redis的安装目录下,创建一个shard文件夹,然后将redis的配置文件"redis.conf"复制一份,取名为"redis-6379.conf"(作为6379这台实例的配置文件)。然后将该文件移动到shard文件夹下,再将"redis-6379.conf"复制两份,一个叫"redis-6380.conf"(作为6380这台实例的配置文件),一个叫"redis-6381.conf"(作为6381这台实例的配置文件)

  2. 修改6379这台实例的配置文件,因为端口6379默认就是redis的端口

  3. 修改6380实例的配置文件,修改该实例占用的端口为6380

  4. 修改pid

  5. 修改dump文件名

  6. 修改6381实例的配置文件,端口为6381,修改pid,修改dump文件名


7. 启动3台redis实例

Redis分区实现方案

  • 客户端分区
    是在客户端就已经决定数据会被存储到哪个redis节点或者从哪个redis节点读取。大多数客户端已经实现了客户端分区

    • 范围分区
      映射一定范围的对象到特定的Redis实例。比如,ID从0到10000的用户会保存到实例R0,ID从10001到 20000的用户会保存到R1,以此类推
    • hash一致算法实现分区
      hash一致算法实现分区,对key值进行hash一致性计算后得到结果,最终将数据保存到某一台redis实例中
  • 代理分区
    客户端将请求发送给代理,然后代理决定去哪个节点写数据或者读数据。代理根据分区规则决定请求哪些Redis实例,然后根据Redis的响应结果返回给客户端。redis和memcached的一种代理实现就是Twemproxy

  • 查询路由(Query routing)
    是客户端随机地请求任意一个redis实例,然后由Redis将请求转发给正确的Redis节点。Redis Cluster实现了一种混合形式的查询路由,但并不是直接将请求从一个redis节点转发到另一个redis节点,而是在客户端的帮助下直接redirected到正确的redis节点

分区的不足

  1. 分区是多台redis共同作用的,如果其中一台出现了宕机现象,则整个分片都将不能使用,虽然是在一定程度上缓减了内存的压力,但是没有实现高可用
  2. 涉及多个key的操作通常是不被支持的,当两个set映射到不同的redis实例上时,因为他们可能被存储到不同的Redis实例,你就不能对这两个set执行交集操作
  3. 涉及多个key的redis事务不能使用
  4. 分区使用的粒度是key,不能使用一个非常长的排序key存储一个数据集
  5. 当使用分区时,数据处理较为复杂,比如你需要处理多个rdb/aof文件,并且从多个实例和主机备份持久化文件
  6. 分区时动态扩容或缩容可能非常复杂。Redis集群在运行时增加或者删除Redis节点,能做到最大程度对用户透明地数据再平衡,但其他一些客户端分区或者代理分区方法则不支持这种特性
  7. 高可用的解决方案:可以采用哨兵机制实现主从复制从而实现高可用

redis相关文章

----redis原理概述
-----redis集群方案
----redis分区(分片)原理
----Redis实现分布式锁
----redis缓存穿透、雪崩和解决方案

redis分区(分片)原理相关推荐

  1. Redis分区/分片详解

    分区/分片详解 分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集. 如果只使用一个redis实例时,其中保存了服务器中全部的缓存数据,这样会有很大风险,如果单台redi ...

  2. redis 槽点重新分配 集群_弄懂一致性哈希后我打通了redis分区集群的原理

    上午刚写完一篇关于一致性hash思想的举一反三,下午就去看redis的官方文档,就在我看到redis分区集群的原理的时候,哇那真是茅塞顿开把我多年对redis的疑惑都解开了,它分区的思想不就是我上篇文 ...

  3. 分布式一致性协议 Gossip 和 Redis 集群原理解析

    分布式一致性协议 Gossip 和 Redis 集群原理解析 Redis 是一个开源的.高性能的 Key-Value 数据库.基于 Redis 的分布式缓存已经有很多成功的商业应用,其中就包括阿里 A ...

  4. Redis 的分片集群搭建-代理方式(twemproxy)

    文章目录 1: 为什么 Redis 要分片? 2: 分片集群的方法 3:使用 twemproxy 搭建 3.1: 克隆 twemproxy 源码 3.2:安装 automoke 和 libtool 3 ...

  5. Docker下Redis Cluster分片集群的搭建、基本操作、集群扩容和集群故障转移(非关系型数据库技术课程 第九周)

    文章目录 Docker 下Redis Cluster 分片集群搭建 1. Cluster 分片集群 1.1 Cluster 集群的结构和作用 1.2 Cluster 分片集群 的作用 1.3哈希槽(h ...

  6. 使用Redis分区将数据分割到多个Redis实例

    分区是将所有的数据分割到多个Redis实例的过程,所以每个Redis实例存放的是所有键值的子集. Redis分区主要有两个目标: 1)允许使用多台计算机的内存来存放更大的数据.如果不做分区的话,单台计 ...

  7. redis高并发原理_Java中的42行代码中的URL缩短服务— Java(?!)Spring Boot + Redis...

    redis高并发原理 显然,编写URL缩短服务是新的"世界,您好! "在物联网/微服务/时代的世界中. 一切始于在45行Scala中的URL缩短服务-整洁的Scala,以Spray ...

  8. Redis 主从复制的原理及演进

    本文作者:百度基础架构部工程师,王钰 Redis 的主从复制经历了多次演进,本文将从最基本的原理和实现讲起,并层层递进,逐步呈现 Redis 主从复制的演进历史.大家将了解到 Redis 主从复制的原 ...

  9. Redis 存储分片之代理服务Twemproxy 测试

    Redis 存储分片之代理服务Twemproxy 测试 转载自:http://blog.jpush.cn/redis-twemproxy-benchmark/ 概述 实际业务场景中单点 Redis 容 ...

最新文章

  1. Python 实现程序的单一实例
  2. 安装配置libmemcached
  3. [css] 用css实现倒影的效果
  4. Java对象分配原理
  5. 网线制作ppt_快速制作PPT技巧!
  6. nginx python cgi_Python的CGIHTTPServer交互实现详解
  7. 安卓学习笔记05:Activity概述
  8. PLC接入工业互联网解决方案
  9. 飞翔pdf生成html,pdf转换成html转换器
  10. C++超详细五子棋游戏(AI实现人机对弈+双人对弈+EasyX图形化界面+详细介绍)
  11. 多分支表达-倍数问题
  12. 图像质量评价 开源项目汇总
  13. AD(十九)class、设计参数、规则的创建
  14. 逆转裁判Ace Attorney
  15. 模拟集成电路笔记 | 第三部分 | Chapter 5-6
  16. .net rar zip压缩包解压
  17. Ubuntu14.04+Texlive2014+LYX-Linux下LYX的中文配置方案
  18. 中国计算机设计大赛来啦!用飞桨驱动智慧救援机器狗
  19. 基于微信小程序的新生自助报到系统设计与实现-计算机毕业设计源码+LW文档
  20. 忆二十几年前的“大案”|我们该教什么给孩子?

热门文章

  1. Click Once发布
  2. 1.1 DICOM协议简介及应用
  3. 软件工程与计算机科学技术的关系及区别
  4. MD5加密原理和Java实现
  5. Glance安装以及验证
  6. 10万元创业需要注意什么
  7. python字符串驼峰转换_python字符串转成驼峰的方法
  8. wangeditor安装
  9. android 平板 测评,【葡萄测评】真的有优秀体验的安卓平板,华为平板M6开箱
  10. day3-JS之高级语法