面试题(千万级别数量以及高并发)

xjpcj 2015-07-07 07:52:38
1.我们的缓存分为两级,第一级只是一个PHP数组,有效范围是Request。而第二级是memcached。这么做的原因是,很多数据在一个Request周期内需要加载多次,这样可以减少memcached的网络请求。另外我们的框架也会尽可能的发送memcached的gets命令来获取数据,从而减少网络请求”, 请使用伪代码实现以上缓存架构
2有一个视频社交app(已知: 视频有大量的增,删,改)

个人主页需要显示用户的所有视频列表,每页20个,客户端会一直传递 max_id(比这个ID发布时间早的视频)做为线索,取下一页的数据


如何利用mc来缓存视频列表,加快速度,减少数据库压力,增加,删除,修改时如何维护缓存,或者有啥其他思路方案(也可不描述该题,直接提供其它觉得高明的mc使用方案代替,)

视频表:
CREATE TABLE `medias_index` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL,
`campaign_id` int(11) unsigned NOT NULL DEFAULT '0',
`city` int(11) unsigned NOT NULL DEFAULT '0',
`status` tinyint(3) unsigned NOT NULL DEFAULT '1',
`type` tinyint(3) unsigned NOT NULL DEFAULT '1',
`language` tinyint(3) unsigned NOT NULL DEFAULT '1',
`created_at` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`,`id`) USING BTREE,
KEY `campaign_id` (`campaign_id`) USING BTREE,
KEY `status` (`status`,`type`,`language`,`id`) USING BTREE,
KEY `created_at` (`created_at`)
) ENGINE=InnoDB AUTO_INCREMENT=100795936 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='视频表'
3有一个好友动态的需求

目前使用数据库语句实现

SELECT medias_index.id FROM medias_index JOIN (
SELECT follow_uid FROM follows WHERE uid=".$uid."
UNION ALL
SELECT ".$uid."
) AS follows
ON medias_index.uid=follow_uid".$where." ORDER BY medias_index.id DESC ".$limit

其中where为客户端在取好友动态第二页时,会提供max_id线索

where medias_index.id < '.$max_id .' ';

以目前6000万行的数据量,该语句开始出现慢得情况

每个用户最多关注5000人

CREATE TABLE `follows_001` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '关注者UID',
`follow_uid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '被关注者UID',
`likes` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '喜欢数',
`created_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '关注时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uid` (`uid`,`follow_uid`) USING BTREE,
KEY `ceated_at` (`uid`,`created_at`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3185092 DEFAULT CHARSET=utf8 COM-MENT='关注表,根据uid取模分128表'
看有没有优化的方案

不限于mysql,可以使用任意方案
...全文
1342 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧