面试题答案
一键面试实现思路
- 监听数据库更新:使用数据库的触发器(如果支持)或者在应用层通过事务钩子等方式,监听用户活跃度数据在MySQL中的更新操作。
- 批量更新Redis:当监听到更新后,不是立即单个更新Redis,而是将更新操作暂时缓存(例如使用队列),达到一定数量或者经过一定时间间隔后,批量对Redis进行更新,以减少Redis操作次数。
- 异步处理:将Redis更新操作放到异步任务中执行,避免阻塞业务流程,从而减少对系统性能的影响。
可能用到的Redis命令
- ZADD:用于向有序集合中添加成员,并设置其分数。语法为
ZADD key score member [score member ...]
。当用户活跃度更新时,可使用此命令更新Redis有序集合中对应用户的分数。例如,如果用户user1
的活跃度更新为100
,则执行ZADD user_activity_rank 100 user1
。 - ZREM:若某个用户从MySQL中被删除(假设活跃度数据也随之删除),可使用
ZREM
命令从Redis有序集合中移除该用户。语法为ZREM key member [member ...]
,例如ZREM user_activity_rank user1
。