使用memcached作为聊天消息的数据库缓冲区

| 我正在玩用PHP和CodeIgniter构建聊天应用程序。 为此,我实现了一个带有memcached的高速缓存“ buffer”,以将最新的聊天消息保存在内存中,从而减轻了数据库的负载。我想做的是这样的: 收到邮件后,我将使用当前分钟(YYYY-MM-DD-HH-MM)作为密钥将其保存在memcached中。不涉及数据库I / O。这样的想法是,来自同一分钟的所有消息都在同一密钥下收集。 用户还会收到从memcached获取的新聊天消息(目前,我正在使用长轮询,但是出于明显的性能原因,它将移至Node.js下的WebSockets)。同样,不涉及数据库I / O。 自动服务器脚本(cronjob)将每5分钟运行一次,收集最近5分钟的内存缓存数据,并将消息插入数据库。 memcached对象设置为在6分钟后过时,因此我们不必在内存中保留超过6分钟的消息数据 每5分钟总共执行一次数据库写操作,而对数据库执行零读操作。 这听起来可行吗?有没有更好的方法(甚至是内置的方法)将memcached用于此目的? 更新:我现在已经在做一些尝试,并且我有一个捷径的想法(阅读:hack)。我可以在Node.js服务器脚本中临时“缓冲”消息,直到准备好存储它们为止。 Node.js服务器中的Javascript对象/消息数组基本上是一种内存缓存。 因此:每隔N条消息/秒,我就可以使用所需的任何方法将缓冲的消息(JS数组的内容)传递到我的数据库,因为它不会被频繁调用。 但是,我担心这可能会破坏Node.js服务器进程,因为它可能不喜欢携带该200 KB数组。 对这个策略有什么想法吗?完全疯了吗?     
已邀请:
        您是否研究过HTML5套接字连接?使用套接字服务器,您无需存储任何内容。服务器从一个订户接收一条消息,然后立即将其发送回正确的订户。我自己尚未使用HTML5进行此操作,但是我知道该功能已经存在。在使用也支持套接字连接的Flash之前,我已经完成了此操作。     
        为什么不使用
INSERT DELAYED
?它为您提供几乎想要的功能,而无需使用memcached。 无论如何,您的解决方案看起来也不错。     

要回复问题请先登录注册