我们有我们的旧网站建立在用户认证的LAMP栈上。现在我们已经为具有实时聊天功能,视频和论坛等的用户构建了一个新的社交平台,并且我们已经为此使用了node.js。
当用户在旧网站登录他的账户时 - 可以说他可以点击链接
www.xyz.com/social
这将把他带到这个新的node.js平台。
所以我不知道如何将用户信息从apache传递到node.js - 我需要的只是用户id,然后在node.js中 - 我可以查询mysql表并加载用户详细信息。
简单的方案
简单的解决方案是散列用户标识和电子邮件,并将散列作为密钥存储在内存缓存服务器中,并将用户详细信息作为值传递
$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);
然后在链接中将哈希值作为参数传递,如下所示
www.xyz.com/social/$$hash-value$$
并在节点js中 - 根据散列键从memcache中检索用户详细信息。
1)这是否马上解决这个问题?
2)memcache是否支持在网站内从旧网站移动到新的node.js站点的许多用户(特定时间约有500个用户)的数据。
发布于 2018-03-02 09:43:20
1)这是否马上解决这个问题?
是的,这样做是对的。但是这个问题可以更好地解决:
正确选择失效条件。
2)memcache是否支持存储这么多用户的数据 但是它取决于你的memcache部署,你提供了多少内存? 计算或得到一个粗略的信徒需要多少内存来存储500个用户的详细信息。一旦memcache进入交换,那么提供这些很多请求将是memcache的痛苦。
但是,按照我的说法,更好的方法是坚持只使用MySQL。
md5(user-id . timestamp. KEY)
,并将该条目保存在数据库中。原因
发布于 2018-03-02 09:50:54
Memcache旨在成为数据缓存服务,而不是数据传输服务。不能保证存储在缓存中的值将可用于其他组件。
你试图做的事情大多会起作用,但当你开始在系统上加载一些负载时,可能会出现奇怪的问题。可能希望使用像RabbitMQ或Kafka这样的消息队列系统,或者将memcached与数据库配合使用。
https://stackoverflow.com/questions/-100007482
复制相似问题