Redis分布式概览

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 1 Redis分布式算法原理1.1 传统分布式算法1.2 Consistent hashing一致性算法原理环形 hash 空间:按照常用的 hash 算法来将对应的 key 哈希到一个具有 232 个桶的空间,即(0-232-1)的数字空间中,现在我们将这些数字头尾相连,想象成一个闭...


1 Redis分布式算法原理

1.1 传统分布式算法

举个例子


蓝色表与4个节点时相同槽

1.2 Consistent hashing一致性算法原理

  • 环形 hash 空间:按照常用的 hash 算法来将对应的 key 哈希到一个具有 232 个桶的空间,即(0-232-1)的数字空间中,现在我们将这些数字头尾相连,想象成一个闭合的环形
  • 把数据通过一定的 hash 算法映射到环上
  • 将机器通过一定的 hash 算法映射到环上
  • 节点按顺时针转动,遇到的第一个机器,就把数据放在该机器上



在移除 or 添加一个 cache 时,他能够尽可能小的改变已经存在 key 映射关系

删除CacheB后,橙色区为被影响范围

也许心中的分布式这样的
但实际会这样拥挤-即倾斜性

1.3 Hash倾斜性


为解决此类事件,引入了虚拟节点


服务器台数n,新增服务器数m

2 Redis分布式环境配置

启动两台Redis-server

3 Redis分布式服务端及客户端启动

4封装分布式Shared Redis API

4.1 SharedJedis源码解析

ShardedJedis.png

封装RedisSharedPool

测试代码

集成测试

5 Redis分布式环境验证

6 集群和分布式

  • 分布式:不同的业务模块拆分到不同的机器上,解决高并发的问题。 工作形态 redis服务器各工作方式不同一般称为Redis分布式
  • 集群:同一个业务部署在多台机器上,提高系统可用性 是物理形态,一般称Tomcat集群
    集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上。

你前台页面有10个用户,分别发送了1个请求,那么如果不是集群的话,那这10个请求需要并行在一台机器上处理,如果每个请求都是1秒钟,那么就会有一个人等待10秒钟,有一个人等待9秒钟,以此类推;那么现在在集群环境下,10个任务并分发到10台机器同时进行,那么每个人的等待时间都还是1秒钟;
当然,你说的浪费确实是,如果系统的并发不是很高,只有一台或者两台机器就能处理的话,那确实是有很大的浪费

7 参考

[Java企业级电商项目架构演进之路
Tomcat集群与Redis分布式
](https://coding.imooc.com/class/162.html)

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
NoSQL 算法 安全
Redlock 算法-主从redis分布式锁主节点宕机锁丢失的问题
Redlock 算法-主从redis分布式锁主节点宕机锁丢失的问题
155 0
|
1月前
|
NoSQL 关系型数据库 MySQL
分布式锁(redis/mysql)
分布式锁(redis/mysql)
58 1
|
30天前
|
NoSQL Java Redis
如何通俗易懂的理解Redis分布式锁
在多线程并发的情况下,我们如何保证一个代码块在同一时间只能由一个线程访问呢?
38 2
|
1月前
|
人工智能 监控 NoSQL
【万字长文 一文搞定】Redis:从新手村到大师殿堂的奥德赛之旅 9种实现分布式锁的全技术指南
【万字长文 一文搞定】Redis:从新手村到大师殿堂的奥德赛之旅 9种实现分布式锁的全技术指南
81 4
|
1月前
|
消息中间件 存储 NoSQL
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
|
1月前
|
NoSQL API Redis
Redis分布式锁实现的三个核心
Redis分布式锁实现的三个核心
|
1月前
|
NoSQL Java Redis
Redis分布式锁和Java锁的区别
Redis分布式锁和Java锁的主要区别在于它们的适用范围和实现机制。
41 2
|
机器学习/深度学习 缓存 NoSQL
|
缓存 NoSQL Java
为什么分布式一定要有redis?
1、为什么使用redis 分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。
1332 0
|
15天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
221 0

热门文章

最新文章