Memcache vs Redis vs Javascript哈希对象

Memcache vs Redis vs Javascript哈希对象,javascript,caching,memory,redis,memcached,Javascript,Caching,Memory,Redis,Memcached,我知道当需要为多台服务器提供缓存时,会使用memcache和redis。 我正在创建一个节点应用程序,它将只在一台服务器上运行,并使用mysql作为db,我需要散列大约100000个键,每个键将包含长度为200的json字符串,这样我就不必调用mysql进行读取 如果我使用memcache或redis,我将使用回调来获取数据,但是如果我使用javascript哈希,我可以同步获取数据,但它会以某种方式影响应用程序,比如内存的高使用率。对于这样的应用程序,我应该使用哪一个?这取决于-您甚至可以选择

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


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

这取决于-您甚至可以选择memcached而不是mysql:)。对于诸如only-readonly这样的简单操作,只需将其存储在javascript代码中(我相信作为字典对象)就足够了。但请确保您有足够的RAM:)

我知道当需要为多台服务器提供缓存时,会使用memcache和redis

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

我需要散列大约100000个键,每个键将包含长度为200的json字符串,这样我就不必调用mysql进行读取

对mee来说,这似乎是过早的优化,如果MySQL有足够的RAM(数据集存储在内存中),你就不必担心性能,那就只有100个键了

如果我使用memcache或redis,我将使用回调来获取数据

If真的取决于您使用的语言(Ruby和Python提供同步Redis客户端)和使用的paradygm类型(事件循环、线程池…)

但是如果我使用javascript散列,我可以同步地获取数据

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

但是它会以某种方式影响应用程序吗,比如高内存使用率

这取决于您是否正在加载流程中的所有键,如果您使用,则每次只能查询所需的字段,而不能查询整个字段

对于这样的应用程序,我应该使用哪一个

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

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

最后,关于和Redis生态系统(,,…),如果你真的想走这条路,Redis似乎比Memcached更能证明未来


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

我使用mysql进行持久性和事务处理。redis提供事务和持久性(不是默认配置)。但是,如果redis、memcache或javascript字典持有100000个密钥,结果会怎样呢。哪一个更好。本机代码的性能更好,但这取决于您如何实现dictionary对象,以便在O(1)处检索。