Ted's Blog



千万级数据根据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


分享:

写评论


Contact ME

github:https://github.com/tebie6

email:liumingyuphp@163.com

友情链接

无敌我大鑫哥:http://dream128.cn