2011-10-12 348 views
0

Redis是一个NOSQL键/值数据库,它读取RAM中的整个生命周期(因此速度非常快)。对我来说,一个数组(例如,在PHP中)也是一样的,因为数组是一组键/值。数据库的主要区别在于索引值将在不读取整个数据库的情况下单独调用。Redis(键/值数据库)和关联数组之间的区别?

现在,当Redis读取整个数据库(到RAM中)时,它与键/值数组有什么不同?

+1

它仍然是一个**持久存储**可通过网络** – zerkms

回答

10
  • 一个Redis的可跨网络
  • 服务于多个服务器正如前面点的结果,它支持认证
  • 一个Redis的数据集可以坚持磁盘
  • 的Redis可以作为队列与阻止读取
  • Redis支持多个数据块
  • Redis的可自动过期的关键后,在一定的超时或在某个时间
  • Redis的可提供实时的所有请求
  • Redis的允许列表订阅某些事件
  • Redis的支持复制到另一个Redis的服务器
  • Redis的支持MUL tiple languages,你没有绑定到一个单独的一个
+0

+1非常好的答案 – 2011-10-12 06:36:24

+0

是的,这些是数据库服务器的优点,但一个数组也可以持久化到磁盘,我们可以有多个数据库(数组)。我对吗? – Googlebot

+0

是的,你可以将一个数组序列化并持久化到磁盘,当然你也可以有多个数组。 – stivlo

0

另请注意,PHP中的内存使用情况是非常糟糕的数组。所以如果你有一个大阵列,你将需要大量的内存。 Redis可以提高效率。

+0

我已经注意到了这一点,但没有理论上的解释。 Perl和Python也是如此吗? – Googlebot

+2

在PHP中,每个元素都需要一个值为16个字节的值结构(zval)。还需要一个哈希桶 - 占用36个字节。这给每个值52个字节。内存分配头文件需要另外8个字节* 2 - 它提供了68个字节。 (https://bugs.php.net/bug.php?id=41053)。我不知道Perl和Python。 – Nin

+0

@Ali in Perl我不知道,但很容易找到[Devel :: Size](http://search.cpan.org/~nwclark/Devel-Size-0.77/lib/Devel/Size。下午)包。要导入:使用Devel :: Size qw(total_size); – stivlo

相关问题