千万级数据根据PV排序
最近接到一个需求,要将PV排名前2000条数据,列表展示并操作
因为当前mysql 数据库单表数据7000万+ (不要问我为啥不分表)所以不能通过SQL语句来统计实现
像这种大数据量排序操作 我们可以使用redis来实现
实现方式:
1、将单条数据存储 redis hash表中
hset name_1 pv 1000 // 存储 key 为 name_1 字段 pv 值 1000 hset name_2 pv 2000 hset name_3 pv 3000 hset name_4 pv 4000 hset name_5 pv 5000
2、将数据主键ID存储 redis set集合中
sadd set_name 1 // 存储 值 1 到 set_name 集合中 sadd set_name 2 sadd set_name 3 sadd set_name 4 sadd set_name 5
3、通过 sort命令排序
// 排序 通过set_name 集合中成员 获取 hash 中数据 进行排序 倒序 取 offset 0 limit 2000 sort set_name by name_*->pv desc limit 0,2000 // 返回结果: // 5 // 4 // 3 // 2 // 1
sort 命令参考 http://doc.redisfans.com/key/sort.html
文章参考:https://blog.csdn.net/panzm_csdn/article/details/79741982
https://www.cnblogs.com/xujishou/p/6423453.html