- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我们正在考虑对我们的应用程序使用缓存系统来进行数据查找。此数据很少更改。我的发现来自 Redis
、GemFire
/Geode
、VoltDB
、Aerospike
、 Hazlecast
和其他几个。我入围了 Geode 和 Redis。两者都是 key-value
内存存储。
Redis(基于 C)似乎更易于使用,并支持列表、哈希、集合、排序集合等数据类型。它还有一些很好的 Java、NodeJS 客户端可用, C#等,支持多节点(master-slave)。
Geode(基于 Java)似乎有更多的特性,因为它的存在可以追溯到很久以前。它具有存储数据的区域概念。它有 Java、C#、C++ 版本的客户端。它具有构成系统的定位器和服务器。它支持分布式服务器/节点(非共享/无单点故障)。
我在互联网上搜索但找不到这两者在读/写速度、内存使用、磁盘 I/O 转储、缩放、安全性方面的任何比较。有没有人遇到过这种情况?
最佳答案
我主要使用 Redis,但在去年为 Pivotal 工作时,我开始了解 Geode(Pivotal Gemfire 的开源变体)。不过可能有偏见。
Redis 主要是一个独立的键值存储,由 Salvatore Sanfilippo 驱动,HA 和分片选项(Sentinel、Cluster)是在很晚的时候构建的。 Redis 速度极快,如果您更看重性能而不是一致性,Redis 是一个不错的选择。 Redis 唯一的安全功能是基于密码的身份验证,但您更愿意在传输级别保护它,这需要额外的努力。除了社区或您选择商业 Redis 产品(例如 RedisLabs)之外,没有其他支持。
Geode(大约一年前开源的 Pivotal GemFire,现在 GemFire 基于 Geode)是 Pivotal 驱动多年的产品。它在构建时考虑了一致性、高可用性和数据分布——称之为内存中数据网格。 Geode 的安全层是可扩展和可插入的,因此您可以根据需要对其进行定制。如果您想获得商业支持,那么 Pivotal 可以满足您的需求。
Geode 具有 Redis 协议(protocol)适配器,允许您将 Redis 客户端连接到 Geode 并使用 Redis 数据结构和命令的子集。从 Redis 3.2 的角度来看它并不完整,但如果您想与单个键值存储产品集成并且不想使用 Redis 和 Geode,它仍然是一个不错的选择。
关于redis - 缓存系统 - Redis 与 Geode/GemFire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44905709/
我正在将 GemFire 集群从 8.2.7(使用 Spring Data GemFire 1.6.0.RELEASE)迁移到 Pivotal GemFire 9.3.0(SDG 2.0.7.RELE
我正在尝试按日期查询我的 gemfire 区域。任何人都可以帮助解决如何格式化 to_date 以便对我的 gemfire 区域进行日期查询。 我有一个格式为 'MM/dd/yyyy' 的日期,然后我
我想在 Spring Boot 应用程序中创建一个 Gemfire 区域。按照这个 sample ,它在不添加数据库支持的情况下运行良好。如果我添加数据库,它会显示错误,如“创建名称为‘dataSou
我正在尝试使用 Spring Data GemFire 和 Spring Boot 连接到现有的 GemFire 定位器。 以下是我的缓存配置 当我尝试运行此代码时
我正在尝试使用 Spring Data GemFire 和 Spring Boot 连接到现有的 GemFire 定位器。 以下是我的缓存配置 当我尝试运行此代码时
我的团队使用 Geode 作为临时分析引擎。我们在 Geode 中存储了大量原始数据对象(每个 200MB+),但这些对象永远不会直接返回给客户端。相反,我们严重依赖自定义函数执行来在 Geode 内
我一直在研究“内存数据网格”,并看到了“gemfire”一词。我很困惑。似乎 gemfire 是一个术语,指的是像数据库一样存储和操作数据但在计算机内存中的技术,不是吗? gemfire到底是什么?
我正在为一个 Java 应用程序编写设计文档,其中两个冗余进程从消息队列中读取项目,我们希望它们都使用相同的 key 将项目存储到 gemfire 存储中,目的是许多运行连续查询的应用程序会处理这些项
我正在尝试在 springXD 中设置流。 gemfire 安装在 10.99.40.60 机器上,springXD 安装在我的本地 VM 上。 xd:>stream create -
我有一个客户端/服务器拓扑场景。 在本地运行由一个定位器和两台服务器组成的简单集群,不同的 JVM 进程,服务器在启动时没有使用以下配置创建区域: ${gemfire.server.na
我正在尝试使用 gfsh 启动定位器,但我不断发现找不到主类。 我正在运行这个:gfsh start locator --name=locator1 此后我收到以下错误: Error: Could n
我正在与 GemFire 合作开展一个项目。为了将数据从数据库导入到 GemFire,我做了一个连接到数据库和 GemFire 的 java 程序,然后我从数据库中选择数据并放入它位于 GemFire
我试图在一个 JVM 中创建一个本地缓存和一个客户端缓存,但是我收到下面所述的错误,我认为这是由于缓存是单例而发生的,并且每个 JVM 只能创建一个。 有没有人知道一个好的解决方法? 错误: Erro
我正在使用 gemfire,目前有一个客户端和一个服务器。现在,服务器动态地在一个区域中创建一些子区域,并在其中放置一些对象。我正在尝试使用客户端检索对象,但看不到对象或子区域。如何同步区域?我还能做
我有一个嵌入到具有本地 Gemfire 缓存的 Web 服务中的 JAR。我试图解决的问题是这些数据的过期。 我创建了一个自定义过期计时器,它将设置每个条目的过期时间(以秒为单位),并绑定(bind)
在此gemfire tutorial 我无法解释这个通用声明: people = cache.createRegionFactory(REPLICATE) .addCacheListene
我使用 gemfire 作为我的缓存。缓存堆大小远高于 100GB。我发现当我们从客户端将数据放入gemfire缓存中时,它会序列化数据并发送给服务器,并且在服务器上数据以序列化形式存储。问题: 当我
我们使用 Pivotal Gemfire 作为数据缓存。最近,我们从 gemfire 8.2.1 迁移到 9.5.1,具有完全相同的区域、数据和索引。但是在特定的一个区域上创建索引花费了太多时间,该区
当我在 gfsh 控制台中运行 SELECT 查询时,它按预期工作: query --query="SELECT * FROM /channelProfiles_composite_asrd WHER
我已经为我的用例搜索了解决方案,但没有找到正确的解决方案,因此期待一些好的想法可以进一步探索。 我有两个 gemfire(版本 8.2)集群(私有(private)和公共(public)),每个集群都
我是一名优秀的程序员,十分优秀!