文章目录
一、你会如何查找并清理 Redis 中由于业务逻辑不合理产生的垃圾数据
- 先做数据备份,然后写个脚本,scan所有key,统计前缀,根据前缀对应到业务中,再挨个删除。
- 下载阿里云的备份数据或者redis 的 .rdb 备份文件到本地进行分析
工具推荐: redis-rdb-tools
sripathikrishnan/redis-rdb-tools
阿里云帮助文档 > 云数据库 Redis 版 > 最佳实践 > Redis 内存分析方法 - 排查业务代码,找出之前废弃业务的redis键手动删除处理
- 查看一个rediskey的空闲时间,不需要的手动处理
- 使用Redis提供的数据过期策略,传送门
二、假如有一套社区系统,每次访问帖子详情需要消耗大量的资源,如何设计缓存能有效提高热门帖子的访问速度
- 页面级别的缓存
- redis数据缓存
三、请解释如下 SQL 的含义,并阐述如果这个SQL查询很慢,你会怎么分析并解决这个问题
select count(*) as total, platform, event_name from callback_event GROUP BY platform, event_name ORDER BY platform, total DESC LIMIT 10;
四、在一个框架中比较重要的模块是路由,根据你的经验你会怎么实现 http://example.com/user/index/create
这种形式的路由解析
- 获取 pathinfo
$pathinfo = explode('/', trim($_SERVER['PATH_INFO'], "/"));
- 获取模块
$_GET['m'] = (!empty($pathinfo[0]) ? $pathinfo[0] : 'index');
array_shift($pathinfo); //将数组开头的单元移出数组
- 获取 control
$_GET['c'] = (!empty($pathinfo[0]) ? $pathinfo[0] : 'index');
array_shift($pathinfo); //将数组开头的单元移出数组
- 获取 action
$_GET['a'] = (!empty($pathinfo[0]) ? $pathinfo[0] : 'index');