内存缓存和内存数据库之间的区别

Yol*_*o49 13 memcached caching in-memory-database redis voltdb

我想知道我是否可以在内存缓存(redis,memcached),内存数据网格(gemfire)和内存数据库(VoltDB)之间的差异得到解释.我很难区分3之间的关键特征.

Vim*_*mar 10

缓存- 根据定义,它存储在内存中。任何为了更快访问而存储在内存 (RAM) 中的数据都称为缓存。示例:Ehcache、Memcache 通常,您将一个对象以 String 作为 Key 放入缓存中,并使用 Key 访问缓存。这是非常直接的。这取决于应用程序何时访问 cahce 与数据库,并且在 Cache 中没有发生复杂的处理。如果缓存跨越多台机器,则称为分布式缓存。例如,Netflix使用建立在 Memcache 之上的 EVCache 来存储您在主屏幕上看到的用户电影推荐。

内存数据库- 它具有缓存的所有功能以及处理/查询功能。Redis 属于这一类。Redis 支持多种数据结构,您可以查询 Redis 中的数据(例如获取最近访问的 10 个项目、获取最常用的项目等)。它可以跨越多台机器,通常性能非常高,如果需要,还支持磁盘持久化。例如,Twitter使用 Redis 数据库来存储时间线信息。


Car*_*ter 3

我不知道gemfire和VoltDB,但即使是memcached和redis也有很大不同。Memcached 是非常简单的缓存,它以非常简单的方式存储变量,然后检索它们,这样您就不必每次需要该数据时都去文件或数据库查找。变量的类型非常简单。另一方面,Redis 实际上是一个内存数据库,具有非常有趣的数据类型选择。它具有用于排序列表的出色数据类型,非常适合排行榜等应用程序。您将新记录添加到数据中,它会自动排序。

所以我不会太在意这些类别。您确实需要以不同的方式检查每个工具,看看它能为您做什么以及您正在构建的应用程序。这有点像试图在 nosql 数据库上进行比较——它们都非常不同,并且做得很好。