面试题答案
一键面试- 将MySQL数据导入Redis有序集合:
- 首先从MySQL的用户表中查询出用户ID及其对应的活跃度数据。假设用户表结构为
users
,包含字段user_id
(用户ID)和activity_score
(活跃度分数)。
SELECT user_id, activity_score FROM users;
- 然后在代码中(以Python为例,假设已安装
redis - py
库),连接Redis并将查询到的数据导入到Redis有序集合中。假设Redis连接对象为r
:
import redis r = redis.Redis(host='localhost', port = 6379, db = 0) data = [(user_id, activity_score) for user_id, activity_score in cursor.fetchall()] for user_id, score in data: r.zadd('user_activity_rank', {user_id: score})
- 首先从MySQL的用户表中查询出用户ID及其对应的活跃度数据。假设用户表结构为
- 获取排名前N的用户:
- 使用Redis的
zrevrange
命令(因为活跃度分数越高排名越靠前,所以使用倒序)。在Python中:
top_n_users = r.zrevrange('user_activity_rank', 0, N - 1, withscores = True) for user_id, score in top_n_users: print(f"User ID: {user_id}, Activity Score: {score}")
- 在Redis命令行中,可以直接使用
ZREVRANGE user_activity_rank 0 N - 1 WITHSCORES
获取排名前N的用户及其分数。这里user_activity_rank
是有序集合的键名,0
表示起始位置,N - 1
表示结束位置,WITHSCORES
表示同时返回分数。
- 使用Redis的