183

我还没有使用过 Redis,但我听说过它并计划尝试将它作为缓存存储。

我听说 Redis 使用内存作为缓存存储数据库,那么如果我使用变量作为对象或字典数据类型来存储数据有什么区别?喜欢:

var cache = {
    key: {

    },
    key: {

    }
    ...
}

Redis有什么优势?

4

2 回答 2

278

Redis 是一个远程数据结构服务器。它肯定比仅将数据存储在本地内存中要慢(因为它涉及套接字往返来获取/存储数据)。但是,它也带来了一些有趣的特性:

  • Redis 可以被您的应用程序的所有进程访问,可能运行在多个节点上(这是本地内存无法实现的)。

  • Redis 内存存储非常高效,并且在单独的进程中完成。如果应用程序在内存被垃圾回收的平台(node.js、java 等)上运行,它允许处理更大的内存缓存/存储。在实践中,非常大的堆在垃圾收集语言中表现不佳。

  • 如果需要,Redis 可以将数据持久化到磁盘上。

  • Redis 不仅仅是一个简单的缓存:它提供了各种数据结构、各种项目驱逐策略、阻塞队列、发布/订阅、原子性、Lua 脚本等......

  • Redis 可以通过主/从机制复制其活动,以实现高可用性。

基本上,如果您需要您的应用程序在共享相同数据的多个节点上进行扩展,那么将需要 Redis(或任何其他远程键/值存储)之类的东西。

于 2013-10-21T08:36:18.767 回答
9

目前,我们更倾向于无服务器架构,每个请求都可以转到不同的容器。在这种情况下,redis 可以发挥非常重要的作用。

我们不能在服务器中使用简单的缓存,因为我们不能确定我们的请求在存储我们的简单缓存的同一个容器中得到服务。

在这种情况下,我们必须使用 redis,因为它在远程位置存储缓存,我们甚至可以在无服务器架构中访问容器更改。

于 2018-05-12T17:34:57.723 回答