【问题标题】:FIFO shared storage for PHP and Node.jsPHP 和 Node.js 的 FIFO 共享存储
【发布时间】:2013-03-27 02:14:12
【问题描述】:

我以前没有做过这种规模的项目,所以如果我走错了方向,请告知。

我需要有 5 到 700 个连接(来自手机),在同一个套接字上进行连接,并同时将小数据包传输到服务器(CSV 字符串只有大约 20 个字符)。没有数据需要返回到手机,所以只需要确认到达。需要处理数据并将其发送到主设备,我认为该设备将使用网络套接字。

多年来,我一直是 Apache/(CGI 和 PHP)专家,但我认为 Node.js 将成为收集数据的方式。只是一个简单的 IO 循环,它将捕获数据并发送一个简单的确认。我打算使用 C 和 PHP 进行更重的数字处理和服务。问题是从 node.js 服务器收集数据,并在 Apache 服务器上进行处理。

我一直在考虑Redis,但是具体对Redis不是很熟悉,所以不知道有没有FIFO的实现,也不需要写磁盘,因为数据会马上被删除。我现在正在考虑 memcached,但我仍然不知道不依赖于使用时间戳的 FIFO 实现(这可能是我最终必须使用的)。

有什么想法或建议吗?

【问题讨论】:

    标签: php apache node.js memcached redis


    【解决方案1】:

    你在正确的轨道上!

    您可以根据需要使用 redis 来实现 FIFO queue。 Node.JS 是这个应用程序的一个很好的前端,因为它需要最少的资源和最少的数据处理。

    var redis = require("redis"),
        client = redis.createClient();
    
    client.lpush("key","hello");
    client.lpush("key","world");
    

    然后,从命令行(或其他程序,例如您的 PHP 程序):

    $ redis-cli
    redis 127.0.0.1:6379> rpop key
    hello
    redis 127.0.0.1:6379> rpop key
    world
    

    我花了几个小时才从 php/database 的心态开始考虑 node 和 redis。不要放弃,你有正确的想法,你有正确的软件。

    【讨论】:

    • 太棒了!再说一次,我对 Redis 不熟悉,能不能同时实现 FIFO 队列和标准 K/V?
    • 顺便说一句,我建议您使用npm install socket.ionpm install express 处理前端部分。你希望它尽可能少。
    • 是的,在redis-cli 中玩一下。一切都是简单的键/值。您的分配方法是键是值、集合还是列表。在本例中,key 是一个列表项。如果您使用 .get 而不是 .lpush,它很容易成为一个值
    • 更好。非常感谢您的帮助!
    猜你喜欢
    • 2014-09-06
    • 2013-05-25
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 2015-08-13
    相关资源
    最近更新 更多