1.使用redis消息列队发布信息
在一些用户创造用户的应用中(如SNS,微博),可能出现1秒有上千万个用户同时发布消息的情况,此时如果使用mysql可能出现‘too many connections’ 错误,当然,把mysql的max_connections 参数设置为更大数,不过这是一个治标不治本的方法,这是可以考虑使用redis。
使用redis的list类型作为消息列队,把用户发布的消息暂时存储在消息列队中,接着使用一个cron程序把消息列队中的消息插入mysql,这样有效率降低mysql的并发量。
例如发布一条微博使用一下接口:
<?php $uid =get_uid();$content =get_content();$timestamp = time();$weibo = newweibo();$weibo->pot($uid,$contnet,$timestamp);?>
weibo对象的post方法就是发布微博的接口,它直接把微博写入mysql。参数$uid是用户的UID,$content是微博的内容,$timestamp是发布的时间戳。
为了降低mysql的并发数,先把用户发布的微博存在redis中,代码如下:
<?php $redis = new redis('127.0.0.1',6379);$redis ->connect();$weibo_info =['uid' => get_uid(),
'content' => get_cntent(),
'timestamp' => time()
];