首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Memcache是否适合将用户详细信息从Apache传递给Node.js?

Memcache是否适合将用户详细信息从Apache传递给Node.js?
EN

Stack Overflow用户
提问于 2018-03-02 00:43:59
回答 2查看 0关注 0票数 0

我们有我们的旧网站建立在用户认证的LAMP栈上。现在我们已经为具有实时聊天功能,视频和论坛等的用户构建了一个新的社交平台,并且我们已经为此使用了node.js。

当用户在旧网站登录他的账户时 - 可以说他可以点击链接

代码语言:txt
复制
www.xyz.com/social

这将把他带到这个新的node.js平台。

所以我不知道如何将用户信息从apache传递到node.js - 我需要的只是用户id,然后在node.js中 - 我可以查询mysql表并加载用户详细信息。

简单的方案

简单的解决方案是散列用户标识和电子邮件,并将散列作为密钥存储在内存缓存服务器中,并将用户详细信息作为值传递

代码语言:txt
复制
$hash = md5($user_id+$email);
$memcache = new Memcache;
$memcache->connect("localhost",11211) or die ("could not connect");
$data = json_encode(array("id"=>$user_id,"name"=>"aaa"));
$memcache->set("key-".$hash,$data);

然后在链接中将哈希值作为参数传递,如下所示

代码语言:txt
复制
www.xyz.com/social/$$hash-value$$

并在节点js中 - 根据散列键从memcache中检索用户详细信息。

1)这是否马上解决这个问题?

2)memcache是​​否支持在网站内从旧网站移动到新的node.js站点的许多用户(特定时间约有500个用户)的数据。

EN

回答 2

Stack Overflow用户

发布于 2018-03-02 09:43:20

1)这是否马上解决这个问题?

是的,这样做是对的。但是这个问题可以更好地解决:

  • 即“cookies”,只需使用cookie共享上述memcache密钥即可。
  • 存储您需要在会话存储中通过Apache和node.js共享的详细信息。

正确选择失效条件。

2)memcache是​​否支持存储这么多用户的数据 但是它取决于你的memcache部署,你提供了多少内存? 计算或得到一个粗略的信徒需要多少内存来存储500个用户的详细信息。一旦memcache进入交换,那么提供这些很多请求将是memcache的痛苦。

但是,按照我的说法,更好的方法是坚持只使用MySQL

  • 用户使用LAMP堆栈进行身份验证
  • 为其提供cookie md5(user-id . timestamp. KEY),并将该条目保存在数据库中。
  • 在node.js应用程序和查找mysql表中获取cookie
  • 相应地检索数据
  • 在MySQL的这些查询调用之上添加缓存层。(所以你可以在memcache中保留选择性的kep-pair,也就是活动用户的小超时〜10秒?)
  • 用户注销时,只需从MySQL表中删除条目,并从memcache中删除键。

原因

  • 如何确定超时,因为用户可以保持无限(或按照超时)登录到LAMP。但是,他会根据超时从node.js注销。
  • 如果完全依赖memcache,持久性将永远是个问题。如果没有在某处(MySQL)复制,将如何在每次重新启动内存缓存后重新生成密钥对?
票数 0
EN

Stack Overflow用户

发布于 2018-03-02 09:50:54

Memcache旨在成为数据缓存服务,而不是数据传输服务。不能保证存储在缓存中的值将可用于其他组件。

你试图做的事情大多会起作用,但当你开始在系统上加载一些负载时,可能会出现奇怪的问题。可能希望使用像RabbitMQ或Kafka这样的消息队列系统,或者将memcached与数据库配合使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档