我还没有使用过Redis,但我听说过它,并打算尝试将其作为缓存存储。
我听说Redis使用内存作为缓存存储数据库,那么如果我使用变量作为对象或字典数据类型来存储数据有什么区别?像:
var cache = {
key: {
},
key: {
}
...
}
Redis有什么优势?
答案 0 :(得分:176)
Redis是远程数据结构服务器。它肯定比仅将数据存储在本地存储器中要慢(因为它涉及套接字往返以获取/存储数据)。但是,它也带来了一些有趣的属性:
可以通过应用程序的所有进程访问Redis,可能在多个节点上运行(本地内存无法实现)。
Redis内存存储非常高效,并且在单独的过程中完成。如果应用程序在其内存被垃圾收集的平台上运行(node.js,java等...),它允许处理更大的内存缓存/存储。在实践中,非常大的堆在垃圾收集语言中表现不佳。
如果需要,Redis可以将数据保留在磁盘上。
Redis不仅仅是一个简单的缓存:它提供了各种数据结构,各种项目驱逐策略,阻塞队列,发布/订阅,原子性,Lua脚本等等......
Redis可以使用主/从机制复制其活动,以实现高可用性。
基本上,如果您需要应用程序在共享相同数据的多个节点上进行扩展,则需要Redis(或任何其他远程键/值存储)之类的东西。
答案 1 :(得分:-1)
目前,我们更倾向于服务器较少的架构,其中每个请求都可以转到不同的容器。在这种情况下,redis可以发挥非常重要的作用。
我们不能在服务器中使用简单缓存,因为我们无法确定我们的请求是在存储简单缓存的同一容器中提供的。
在这种情况下,我们必须使用redis,因为它在远程位置存储缓存。我们甚至可以在服务器较少的架构中访问容器更改。