redis基础之有序集合应用
'''音乐播放排名''' import redis r = redis.Redis(host='127.0.0.1', port=6379, password='123456', db=0) r.zadd('ranking', {'song1': 1, 'song2': 1, 'song3': 1, 'song4': 1}) r.zadd('ranking', {'song5': 1, 'song6': 1, 'song7': 1}) r.zadd('ranking', {'song8': 1, 'song9': 1}) r.zincrby('ranking', 50, 'song3') r.zincrby('ranking', 60, 'song5') r.zincrby('ranking', 80, 'song7') res = r.zrevrange('ranking', 0, 2, withscores=True) i = 1 for j in res: print('第{}名是:{} 播放量:{}次'.format(i, j[0].decode(), int(j[1]))) i += 1 输出结果: 第1名是:song7 播放量:81次 第2名是:song5 播放量:61次 第3名是:song3 播放量:51次
'''京东商品畅销榜''' import redis r = redis.Redis(host='127.0.0.1', port=6379, db=0, password=123456) r.flushdb() day01_dict = {'huawei': 5000, 'oppo': 4000, 'iphone': 3000} day02_dict = {'huawei': 5200, 'oppo': 4300, 'iphone': 3230} day03_dict = {'huawei': 5500, 'oppo': 4660, 'iphone': 3580} r.zadd('mobile_day01', day01_dict) r.zadd('mobile_day02', day02_dict) r.zadd('mobile_day03', day03_dict) r.zunionstore('mobile_day01:03', ('mobile_day01', 'mobile_day02', 'mobile_day03'), aggregate='max') res = r.zrevrange('mobile_day01:03', 0, -1, withscores=True) print(res) i = 1 for r in res: print('第{}名:{}'.format(i, r[0].decode())) i += 1 输出结果: [(b'huawei', 5500.0), (b'oppo', 4660.0), (b'iphone', 3580.0)] 第1名:huawei 第2名:oppo 第3名:iphone