Database REDIS会让我快速地在内存中访问最近的行,并回退到一个长期条目的持久存储吗?

Database REDIS会让我快速地在内存中访问最近的行,并回退到一个长期条目的持久存储吗?,database,architecture,redis,Database,Architecture,Redis,我正在研究REDIS,并考虑一个场景,其中我有一个集群,其中有一个主集群和一个或多个从集群 我可以用REDIS建立一个部分内存数据库吗?在内存中存储给定表的最新条目,在磁盘中存储较旧的条目 这里有一些要求,以及我最初希望处理的内容 特点 不需要关系数据库 很少有表(只有一个表是性能关键的) 我猜这一个在键值db中不重要 次秒访问最近的条目 最近的条目大约有10万行(在内存中) 主要查询通过一列进行筛选,该列与多个ID匹配,分页方式为,并且总是按照最近的进行排序 对于较旧的条目,性能不重要

我正在研究REDIS,并考虑一个场景,其中我有一个集群,其中有一个主集群和一个或多个从集群

我可以用REDIS建立一个部分内存数据库吗?在内存中存储给定表的最新条目,在磁盘中存储较旧的条目

这里有一些要求,以及我最初希望处理的内容

特点
  • 不需要关系数据库
  • 很少有表(只有一个表是性能关键的)
    • 我猜这一个在键值db中不重要
  • 次秒访问最近的条目
  • 最近的条目大约有10万行(在内存中)
  • 主要查询通过一列进行筛选,该列与多个ID匹配,分页方式为,并且总是按照最近的进行排序
  • 对于较旧的条目,性能不重要
  • 性能对于除最近的条目之外的排序不重要
写入

  • 非常少但非常一致每次写入每60秒插入20多行
  • 零并发
阅读

  • 针对最近的行,在单个表上持续锤击
  • 如果需要,可以通过将页面大小加倍来大大减少分页
  • 每秒超过20次读取平均值
  • 每秒超过200次读取峰值
REDIS符合要求吗?如果没有,什么解决方案可能适合这种情况?在记忆中是部分的吗


谢谢。

不,Redis是一个纯内存数据存储。您可以使用Redis进行缓存,并用持久性存储来补充它(并在应用程序中处理此机制的逻辑),但仅靠Redis是不够的

如果这方面对您很重要,我建议您查看Couchbase或Aerospike以获得主键访问的最佳延迟


否则,考虑到吞吐量,大量的持久化SQL和NoSQL存储可能可以处理您的工作负载。例如,MongoDB、MySQL或其衍生产品可以配置为使用经过调整的数据库模型来实现您的目标。

它是单台服务器吗?本地缓存在这里是可能的吗?甚至比Redis更快,因为没有网络通信,也不需要序列化。多个服务器。但是,如果在不丧失扩展能力的情况下将前端放在同一台服务器上是合理的,那么这是可能的。它需要处理大量的网络请求。至于缓存,我认为它可能不适合这里,因为一致的写操作会使它每60秒失效一次。当你说,用一个持久存储来补充它(并在应用程序中处理此机制的逻辑),这意味着REDIS不支持将内存中的内容与持久存储同步?这是正确的吗?您是否建议我寻找另一种解决方案,以及哪种解决方案(考虑到我描述的问题,内存中用于最近的条目,持久性用于长期条目)。谢谢,没错。Redis无法与另一个持久存储同步。如果您不想在应用程序本身中实现这一点,那么另一个解决方案(mysql、mongodb等)会更好地为您服务。Redis可以用作持久性存储。与RDBMS或NoSQL解决方案相比,它的功能太少了:如果数据不适合内存,Redis就不能作为持久性存储(这是这里的用例)。