-
Notifications
You must be signed in to change notification settings - Fork 351
为什么predixy?开发一款全新redis代理的考虑
redis最常见的使用方式有两种,一种是直接使用单个redis、另一种使用redis集群。
很多业务场景数据量并不大,因此单个redis实例便够用,这种情况要考虑的只是redis的高可用问题,针对redis的高可用问题,redis自身有redis-sentinel的解决方案,然而redis-sentinel要求客户端单独支持才行,于是采用代理对客户端屏蔽后端redis高可用的实现成了一种选择。针对单实例redis的高可用问题可以看看这篇文章《利用redis-sentinel实现redis主从高可用设计方案对比》
在数据量很大或者请求量非常大的情况下,搭建redis集群是必然的选择,在redis 3.0推出以前,由于redis自身没有集群方案,因此集群方案主要是在客户端或代理层面做的,在redis 3.0推出之后,redis自身有了集群解决方案redis cluster。关于redis集群的架构设计可以看这篇文章《构建高可用、可扩展的redis集群》。
针对以上提到的两种最常见的redis使用方式,一个理想的统 一的解决方案就是采用代理,然而目前常见的几个代理却没有一个可以很好的完成上面两个任务
- twemproxy:差不多可以用于上面两个场景,然而twemproxy不支持的redis功能太多,像列表的阻塞命令、事物、发布订阅等都不支持,而且也没有直接支持redis的高可用
- codis:主要是针对redis集群使用设计的,
- corvus:单纯的redis cluster代理
- redis-cerberus:单纯的redis cluster代理
基于上述原因,我们决定打造一款全新的redis代理,于是predixy便诞生了。
predixy完美的实现了对redis单例模式及集群模式的支持,几乎完整的实现了redis原生的所有用于客户端的命令。多key命令、列表阻塞操作、发布订阅、脚本、扫描等高级功能全支持,在使用redis单例模式下也支持事物。
predixy还是提供了丰富的扩展功能:
- 增强的AUTH命令,提供强大的权限控制能力
- 详细的统计信息,包括请求、耗时等各种信息
- 多数据中心支持
- 读写分离功能
在支持众多redis功能以及提供众多附加功能的同时,predixy依然是高性能的,性能远超上面提到的各代理软件。
了解predixy的更多详细信息,查看predixy在github上的主页: