我正在探索在我们的应用程序中使用的不同分布式内存数据库。 我遇到过一种场景,想知道 Redis Cache 和 Apache Ignite Cache 是否可行?
- 假设我的内存分布式缓存大小为 15GB
- 我正在对数据进行分区(例如在 Redis 中 - Redis Cluster 以及 Ignite 中的类似方式)
- 一旦集群中的任何节点达到内存阈值水平 它会自动在 Redis 的节点之间分发数据吗? 它是否会在 Ignite 中自动跨节点分发数据? Redis 和 Ignite 何时应用驱逐策略?终究只是 节点达到多少内存容量?
- 如果集群中的一个或多个节点发生故障或者集群中添加了新节点怎么办?
- 数据备份怎么样? (我知道Redis的Redis Sentinel的概念)
我正在寻找这种场景(在Redis缓存中可用?)在概述部分https://apacheignite.readme.io/docs/distributed-persistent-store的链接中进行了解释
Redis 缓存可以实现以下功能吗?
假设我有 100 条记录。缓存只能容纳 40 条记录(最常用)和磁盘文件上的 100 条记录(不能在任何其他数据库中)。
- 因此,如果请求这 100 条记录中的任何内容,我永远不必访问实际数据库(例如 Sybase db)?
- 如果在 100 条记录中找到 key ,但它不存在于内存缓存(40 条记录)中,则获取该 key ,放入内存缓存中,并使用逐出策略将其他 key 交换到磁盘文件(但这里在磁盘上)我总是有 100 条记录)
- 如果缓存和磁盘文件中不存在 key ,那么我们只需访问数据库(Sybase)并获取它即可。
最佳答案
使用 Ignite(以及绝大多数其他分布式系统,包括 Redis),一旦监控显示节点即将超出分配的 RAM 空间,您只需扩展集群即可。只需向您的 Ignite 集群添加一个额外的节点,数据就会自动重新分配。
此外,使用 Ignite,您可以选择启用其 native 持久性来存储超出 RAM 容量的数据,并可以立即重新启动。重新启动时无需在 RAM 中预加载任何内容,Ignite 从磁盘读取。
希望有帮助。根据所提供的详细信息,Ignite 非常适合您。
关于redis - 内存分布式缓存中的数据分区和数据持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57856074/