1. 前提
Redis非常轻量,Redis很多底层代码都是自己写的,唯一只需要依赖libc。
正因为如此,一个Redis实例占用的内存非常小(1M左右),所以在一台服务器上部署多个实例(32、64、128...)完全没有问题。
2. Presharding思路
假设有N台主机,每台主机上部署M个实例,整个系统有T = N x M个实例
由于一个Redis实例的资源消耗非常小,所以一开始就可以部署比较多的Redis实例,比如128个实例
在前期业务量比较低的时候,N可以比较少,M比较多,而且主机的配置(CPU+内存)可以较低
在后期业务量较大的时候,N可以较多,M变小
总之,通过这种方法,在容量增长过程可以始终保持Redis实例数(T)不变,所以避免了重新Sharding的问题
3. 问题和挑战
Redis实例多了,必然导致运维管理成本增加。
要用好Presharing方案,必须有相应的自动化运维手段相配套,比如:Redis实例的启停脚本、能检查Redis状态的运维监控手段;
原文详见:http://antirez.com/post/redis-presharding.html
分享到:
相关推荐
- **分片策略**:采用预分片(presharding)的方式,使用`crc32(key)%1024`的哈希算法将数据映射到1024个slot中。这1024个slot会被均匀地分配到不同的CODIS服务器上,从而实现负载均衡。 - **示例**:如果后端有3组...
第 1 章Redis 介绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 第 2 章数据类型初探. . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
- 预分片(Presharding):为了避免单个 Redis 实例的瓶颈,可以预先将数据分布在多个实例上,提高并发处理能力。预分片可以通过设置多个独立的 Redis 实例或者使用客户端库来实现。 4. 其他优化措施: - 内存...
第 1 章Redis 介绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 第 2 章数据类型初探. . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
总结,Redis主从复制问题可以通过主动复制或修改源码实现增量同步来解决,而扩容则可以采用Presharding策略,结合业务特点灵活调整实例分布,以实现平滑、高效地扩展Redis集群。在实际应用中,应根据业务场景、数据...
5. **预分区(Presharding)**:为了缓解动态调整容量的问题,可以采用预分区技术预先分配好实例,但这需要良好的规划和管理。 Redis分区主要有两种类型: 1. **范围分区**:按照键值的范围分配到特定的实例。例如...
- **数据分片**:引入了一致性哈希(Consistent Hashing)与预分片(Presharding)技术来优化数据分布。 - **运维体系**:初步建立了基础的管理系统,用于监控和服务报警。 ##### JimDB 2.0阶段 - **高可用性**:...