javascript - Memcache、Redis、Javascript 哈希对象

标签 javascript caching memory redis memcached

我知道当需要为多个服务器提供缓存时,会使用 memcache 和 redis。 我正在创建一个节点应用程序,它将仅在单个服务器上运行并使用 mysql 作为数据库,我需要散列大约 100,000 个键,每个键将包含长度为 200 的 json 字符串,这样我就不必调用 mysql 进行读取.

如果我使用memcache或redis,我将使用回调来获取我的数据,但如果我使用javascript哈希,我可以同步获取数据,但它会以某种方式影响应用程序,比如内存的高使用率。对于这样的应用程序我应该使用哪一个?

最佳答案

I know memcache and redis are used when caching needs to be there for more than one servers.

不一定,例如 Facebook 在每个 mysql 服务器前面放置了一个 memcache 实例。您可以使用 Redis/Memcache 进行快速计算(例如实时分析),而无需整个集群。

and i need to hash around 100,000 keys and each key will contain json string of 200 in length, so that i dont have to call mysql for reads.

对于我来说,这似乎是过早的优化,如果 MySQL 有足够的 RAM(数据集位于内存中),您不必担心性能,那只是 100 个键。

If i use memcache or redis i will use a callback to get my data

是否真的取决于您使用的语言(Ruby 和 Python 提供同步 Redis 客户端)以及使用的范例类型(事件循环、线程池...)

but if i use javascript hash i can get the data synchronously

更准确地说,这只是因为您正在使用node_redis,而不是因为您正在使用javascript“哈希”(实际上是一个对象)。

but will it affect the application somehow, like high usage of memory

这取决于您是否正在加载进程中的所有 key ,如果您使用 Redis Hash ,您每次只能查询您想要的字段,而不能查询整个字段。

Which one i should be using for a application like this?

要记住的最好的事情是减少堆栈中必须维护的应用程序数量,同时仍然使用正确的工具来完成正确的工作。这里 MySQL 就足够了,但如果你真的想使用 Redis 或 MemCached,我会选择 Redis。它将提供与 memcached 类似的功能和相同的性能,允许您将来使用它的其他数据结构,而不需要堆栈中的其他应用程序。

此外,如果您将所有数据放入 Redis HASH 中,则只需一次调用即可检索一个字段 (hget) 或一组字段 (hmget) 或所有字段 (hgetall)。

最后,关于recent statistics和 Redis 生态系统( GUIhostinglibrairies 、...),如果您真的想走这条路,Redis 似乎比 Memcached 更能适应 future 的需求。

免责声明:我是Redsmin的创始人,一个面向开发人员的在线服务,用于管理和监控 Redis。

关于javascript - Memcache、Redis、Javascript 哈希对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20172578/

相关文章:

javascript - 是否有检测不需要使用或空白的 CSS 内联样式的 lint?

javascript - 在页面级别缓存 jQuery 选择是个好主意吗?

asp.net - ASP.NET(WebForms 或 MVC)应用程序中的哪个代码组件服务于图像等网站资源?

iphone - UIGraphicsContext 内存泄漏

c# - C# 中的 FlowDocument 内存问题

javascript - 如何使onclick事件只工作一次

javascript - 等待异步数据以状态存储在 React 或 React Native 中的正确方法

c++ - 如何优化这个?指向数组的指针

c# - Angular Controller 未被调用

php - 使用键模式从 Laravel 4 缓存中删除?