首页 > 解决方案 > 内存分布式缓存中的数据分区和数据持久性

问题描述

我正在探索在我们的应用程序中使用的不同分布式内存数据库。我遇到过一种情况,想知道 Redis Cache 和 Apache Ignite Cache 是否可行?

  1. 假设我的内存中分布式缓存大小为 15GB
  2. 我正在使用分区我的数据(例如在 Redis - Redis Cluster 和 Ignite 中的类似方式)
  3. 一旦集群中的任何节点在内存方面达到阈值水平,它是否会自动在 Redis 中的节点之间分配数据?它是否会自动在 Ignite 中的节点之间分配数据?Redis 和 Ignite 何时应用驱逐策略?只有在所有节点都达到内存容量之后?
  4. 如果集群中的一个或多个节点出现故障或集群中添加了新节点怎么办?
  5. 数据备份呢?(我知道 Redis Sentinel for Redis 的概念)

我正在寻找这种情况(在 Redis 缓存中可用?)在此概述部分的链接中解释https://apacheignite.readme.io/docs/distributed-persistent-store

可以在 Redis 缓存中实现以下目标吗?

假设我有 100 条记录。缓存只能保存 40 条记录(最常用)和磁盘文件中的 100 条记录(不在任何其他数据库中)。

  1. 因此,如果请求这 100 条记录中的任何内容,我就不必使用实际数据库(例如 Sybase db)?
  2. 如果在 100 条记录中找到密钥但它不存在于内存缓存(40 条记录)中,则获取该密钥,放入内存缓存并使用驱逐策略将其他密钥换出到磁盘文件(但在磁盘上我有 100总是记录)
  3. 如果缓存和磁盘文件中不存在密钥,那么只有我们必须去数据库(Sybase)并获取它。

标签: redisignitestackexchange.redisdistributed-caching

解决方案


使用 Ignite(以及绝大多数其他分布式系统,包括 Redis),一旦监控显示节点即将超出分配的 RAM 空间,您只需扩展集群即可。只需向您的 Ignite 集群添加一个额外的节点,数据就会自动重新分配。

此外,使用 Ignite,您可以选择启用其本机持久性来存储比 RAM 容量更多的数据并即时重启。重新启动时无需在 RAM 中预加载任何内容,Ignite 从磁盘读取。

希望能帮助到你。根据提供的详细信息,Ignite 非常适合您。


推荐阅读