redis-sharding 是一个由perl写的 Redis
的proxy,使用它,你可以将数据分布存储在多个Redis实例上,而在操作数据时却像只操作一个实例一样。利用它相当于透明地解决了 Redis
单线程无法有效利用多核心服务器的问题。当然,我们更期待官方的cluster方案。
项目地址:https://github.com/kni/redis-sharding
架构:
/- Redis (node 1)
Client 1 --- /-- Redis (node 2)
Redis Sharding --- Redis (node 3)
Client 2 --- \-- Redis (node 4)
\- Redis (node 5)
启动redis-sharding,分别为使用默认host,port与指定host,port的方式:
1
2
3
|
perl redis_sharding.pl --nodes=10.1.1.2:6380,10.1.1.3:6380,...
perl redis_sharding.pl --port=6379 --nodes=10.1.1.2:6380,10.1.1.3:6380,...
perl redis_sharding.pl --host=10.1.1.1 --port=6379 --nodes=10.1.1.2:6380,10.1.1.3:6380,...
|
redis-sharding还支持重新切分数据,但这需要暂时停掉proxy,下面是将原来的db 9的数据重新sharding到B1-B5五个实例上:
停掉redis-sharding后再执行:
1
2
|
perl resharding.pl --db=9 --from=A1 --nodes=B1,B2,B3,B4,B5
perl resharding.pl --db=9 --from=A2 --nodes=B1,B2,B3,B4,B5
|
然后再启动新的管理B1-B5的redis-sharding实例即可:
1
|
perl redis_sharding.pl --nodes=B1,B2,B3,B4,B5
|
分享到:
相关推荐
介绍dbproxy是一个采用C 11编写的代理服务器,支持redis和 ssdb数据库。 其主要用于扩容和提高系统负载。使用lua控制sharding,把不同的key-value映射到不同的后端redis或ssdb服务器。构建dbproxy支持windwos和linux...
标签"sharding-proxy"指向了ShardingSphere的一个组件——Sharding-Proxy,它是一个透明化的数据库代理层,允许应用程序以原生的JDBC或ODBC方式访问分布式数据库,无需任何代码修改。Sharding-Proxy支持MySQL和...
我们希望将其分为两部分,以便50%的密钥分配给第一个Redis,50%的密钥分配给另一个Redis。 因此,我们将设置两个redis重新分片代理,一个具有正则表达式^[0-4].* ,另一个具有^[5-9].* 。 两个代理将使用与其上游...
- **基于代理的分片(Proxy-based Sharding)**:通过中间层代理软件如Twemproxy或Codis等来实现数据的分片。 - **Redis-Cluster**:内置了自动分片功能,每个集群包含多个节点,数据被均匀分布到这些节点上,用户无需...
Codis 的出现正是为了解决这些问题,它提供了一个分布式 Redis Proxy,允许平滑扩容、缩容,并且具有高可用性和无单点故障(SPOF)设计。 Codis 的主要特性包括: 1. **自动扩容和缩容**:Codis 使用预分片(Pre-...
它包括Sharding-JDBC和Sharding-Proxy两部分,其中Sharding-JDBC定位为轻量级Java框架,可以直接嵌入到现有应用中,无需额外部署和依赖,兼容性强,支持MySql、Oracle、SQLServer等多种数据库。 ### 2. 分库分表...
- **Codis+**:为了进一步提高运维效率,个推采用了Codis,这是一个基于代理(proxy-based)的架构,支持原生客户端、基于Web的集群操作和监控,并集成了Redis Sentinel等功能。在此基础上,个推提出了Codis+的概念,...
- Proxy服务器:如MySQL Proxy,实现动态负载均衡和故障切换。 - 第三方工具:如HAProxy和MaxScale,提供更高级别的负载均衡和故障切换功能。 4. **性能优化** - 查询优化:索引设计、查询语句优化、存储引擎...
20.2.2 OpenResty+Local Redis+Mysql集群架构 385 20.2.3 OpenResty+Redis集群+Mysql集群架构 386 20.3 实现 387 20.3.1 后台逻辑 388 20.3.2 前台逻辑 388 20.3.3 项目搭建 389 20.3.4 Redis+Twemproxy配置 389 ...
使用game-executor工程,增加游戏内的异步事件全局服务,支持事件sharding,均衡的异步执行事件逻辑 使用netty的proxy模式,增加网关代理转发 贡献源码&合作&交流 作者qq 330258845 QQ群:310158485(已满) 513178622
"systemDesign:演示简单系统设计概念的程序"是一个项目,旨在通过实际代码来解释和演示一些核心的系统设计原则和组件。该项目可能包含多个用Node.js、Express、MySQL、Redis、Nginx和Docker等技术实现的示例应用。 ...
此外,为了降低主库压力,我们会采用数据库读写分离,配合使用Proxy(如Mycat、Atlas、MySQL-Proxy)和JDBC工具(如TDDL、Sharding-JDBC)进行分库分表,以防止热点数据问题。 随着系统复杂度的增加,服务化的出现...
"淘宝MySQL十大经典案例_final"这一资料集合了淘宝在实践中遇到并解决的十个代表性问题,这些案例对于理解MySQL在复杂业务场景下的应用具有很高的学习价值。以下是根据标题和描述提炼出的几个关键知识点: 1. **高...
3. **分库分表**:水平拆分(Sharding)将大数据量的表分成多个小表,分散到多个数据库服务器上,以提高查询速度。可以采用一致性哈希算法或范围分片策略。 4. **缓存策略**:利用Redis或Memcached等内存数据库进行...
MySQL是世界上最受欢迎...总结,MySQL性能调优与架构设计是一个涉及多方面知识的综合过程,需要根据实际业务需求和系统负载进行细致调整。了解和掌握这些策略,能有效提升MySQL系统的性能,保障服务的稳定性和可靠性。
水平拆分(Sharding)是按数据分布将表分割成多个部分,而垂直拆分是按列拆分,将相关性低的列分配到不同的表。 2. **读写分离**:主库负责写入,从库负责读取,减轻主库压力,提高系统并发能力。使用中间件如MySQL...