聊天mysql数据表_mysql – 聊天数据库

MySQL不是实时的

MySQL显然不是聊天的最佳解决方案:您没有理由使用多年的积压来获取最新的消息,也不想每秒为每个活动用户触发查询.不能忽略关系数据库的开销.

看看redis

我会选择redis:它是一个高级键值存储,具有实时交互(PUB / SUB)功能,自动过期,当涉及到大量简单数据时,它肯定比MySQL快.

编辑:是的,它的所有数据都在ram中.对于世界上每个图书馆的每本书来说,一个公羊的Gb就足够了.也就是说,MySql也使用ram缓存(查询缓存).而redis是ACID. (过度简化:您可以启用保存到磁盘.)

MySql暗示,如果你坚持下去

如果您决定使用MySQL,则必须将每一行写入数据库,以便其他人可见.更明确的是,您需要对每条消息进行提交.确保你有某种清理机制,例如一个cronjob将超过一天的所有消息移动到一些存档表中.

缓存!

想象一下房间里有100个用户,每个用户每3秒检查一次新消息.每秒300次查询? (好吧,体面的服务器可以处理这个,但你要求一个很好的解决方案)另一种方式:有一个memcached / redis-saved标志“Last message id”.每当有人写一些东西到聊天时改变它.现在让客户端提交它最后已知的消息ID.如果你有一个命中,即使没有MySql启动也立即退出.如果你真的很好,你可以让PHP甚至make返回适当的ETag.

长期民意调查

对于前端客户端:不要每n秒发出一次重载或ajax请求!告诉自己Websocket和长期民意调查.这是一种技术,浏览器打开一个不会立即返回结果的网站,但会保持连接打开,直到有事情要报告(或发生超时)

编辑:OP的评论询问使用什么编程语言

这取决于你的知识.我会选择PHP和redis,但这是因为我很了解它们.如果您更喜欢Java,请使用它.如果你没有偏好:Java更通用,php更容易开始学习.没有客观的“一刀切”的答案.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值