面试题答案
一键面试可预计算的MySQL查询类型
- 聚合查询:例如统计总数、求和、平均值等。比如统计某电商平台商品的总销量,可在Redis中提前计算并存储总销量值。
- 分组聚合查询:像按商品分类统计销量,按时间段统计订单量等。以电商平台按商品分类统计销量为例,提前将每个分类的销量计算并存储在Redis中。
- 热门数据查询:如热门商品、热门分类等,提前在Redis中缓存热门数据及相关统计信息。
利用Redis预计算优化MySQL查询性能示例 - 统计电商平台商品分类销量
- 实时更新:当电商平台有新的商品销售记录产生时,在更新MySQL数据库记录的同时,更新Redis中对应商品分类的销量。例如,使用Redis的哈希数据结构,以商品分类ID为键,销量为值。每次有新销售记录,通过
HINCRBY
命令增加对应分类的销量。如Python代码示例:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
def update_category_sales(category_id, amount):
r.hincrby('category_sales', category_id, amount)
- 查询优化:当需要统计商品分类销量时,优先从Redis中获取数据。如果Redis中存在对应数据,则直接返回,无需查询MySQL。例如在Python中:
def get_category_sales(category_id):
sales = r.hget('category_sales', category_id)
if sales:
return int(sales)
else:
# 若Redis中没有,再查询MySQL,这里省略MySQL查询代码
pass
通过这种方式,减少了对MySQL的查询压力,特别是在高并发场景下,可显著提升查询性能。