缓存系统 - Redis vs Geode/GemFire
Posted
技术标签:
【中文标题】缓存系统 - Redis vs Geode/GemFire【英文标题】:Caching Systems - Redis vs Geode/GemFire 【发布时间】:2017-12-07 21:52:04 【问题描述】:我们正在考虑在我们的应用程序中使用缓存系统来进行数据查找。该数据将很少更改。我的发现来自Redis
、GemFire
/Geode
、VoltDB
、Aerospike
、Hazlecast
和其他一些人。我入围了 Geode 和 Redis。两者都是key-value
内存存储。
Redis(基于 C)似乎更易于使用,并且支持列表、散列、集合、排序集等数据类型。它还有一些 Java、NodeJS、 C#等。支持多节点(主从)。
Geode(基于 Java)似乎具有更多功能,因为它的存在可以追溯到很久以前。它具有存储数据的区域的概念。它有 Java、C#、C++ 版本的客户端。它具有构成系统的定位器和服务器。它支持分布式服务器/节点(非共享/无单点故障)。
我搜索了互联网,但在读/写速度、内存使用、磁盘 I/O 转储、缩放、安全性方面找不到这两者之间的任何比较。有没有人遇到过这种情况?
【问题讨论】:
【参考方案1】:我主要使用 Redis,但在去年为 Pivotal 工作时,我开始了解 Geode(Pivotal Gemfire 的开源变体)。不过可能有偏见。
Redis 主要是一个独立的键值对存储,由 Salvatore Sanfilippo 驱动,HA 和分片选项(Sentinel、Cluster)是在很晚的时候构建的。 Redis 的速度非常快,如果您更喜欢性能而不是一致性,那么 Redis 是一个不错的选择。 Redis 唯一的安全功能是基于密码的身份验证,但您更愿意在传输级别保护它,这需要额外的努力。除了社区之外,如果您选择商业 Redis 产品(例如 RedisLabs),则没有其他支持。
Geode(大约一年前开源的 Pivotal GemFire,现在 GemFire 基于 Geode)是 Pivotal 多年驱动的产品。它在构建时考虑了一致性、HA 和数据分布——称之为内存数据网格。 Geode 的安全层是可扩展和可插拔的,因此您可以根据需要对其进行定制。如果您想获得商业支持,那么 Pivotal 可以满足您的需求。
Geode 具有 Redis 协议适配器,可让您将 Redis 客户端连接到 Geode,并使用 Redis 数据结构和命令的子集。从 Redis 3.2 的角度来看,它并不完整,但如果您想与单个键值存储产品集成,并且不想使用 Redis 和 Geode,它仍然是一个不错的选择。
【讨论】:
你提到了Redis is blazing fast, and if you favor performance over consistency, Redis is a good choice.
Redis 有哪些一致性问题?
某些命令(SCAN
、HSCAN
、...)如果键在迭代之间发生了变化,则其一致性保证很弱。在 HA 方案中,您可能会丢失数据(请参阅aphyr.com/posts/307-jepsen-redis-redux)。持久性在后台处理,在保持高性能的情况下,您可能会丢失多达 1 秒的写入时间 - 或者,您可以在每次写入时持久化数据,这会极大地影响性能。
在redis中,复制默认也是异步的。即使使用同步复制,文档也说您可以丢失数据:redis.io/topics/replication以上是关于缓存系统 - Redis vs Geode/GemFire的主要内容,如果未能解决你的问题,请参考以下文章
缓存技术PK|Memcached vs Redis, 选哪一个??