面试题答案
一键面试实现思路
- 获取分类下商品ID列表:使用Redis的
GET
命令,根据分类ID对应的键category:{分类ID}
获取分类下商品ID列表的JSON字符串。 - 解析JSON字符串:将获取到的JSON字符串解析为编程语言中的列表数据结构,以便后续遍历操作。
- 遍历商品ID列表获取商品详情:对解析后的商品ID列表进行遍历,对于每个商品ID,使用Redis的
GET
命令,根据键product:{商品ID}
获取商品详情的JSON字符串。 - 解析商品详情获取商品名称:将商品详情的JSON字符串解析为编程语言中的字典或对象数据结构,从中提取出
name
字段的值,即商品名称。 - 收集商品名称:将提取出的商品名称收集到一个新的列表或其他合适的数据结构中。
关键代码片段(Python示例)
import redis
import json
# 连接Redis
r = redis.Redis(host='localhost', port=6379, db=0)
def get_product_names_by_category(category_id):
# 获取分类下商品ID列表的JSON字符串
product_ids_json = r.get(f'category:{category_id}')
if not product_ids_json:
return []
# 解析JSON字符串为列表
product_ids = json.loads(product_ids_json)
product_names = []
for product_id in product_ids:
# 获取商品详情的JSON字符串
product_json = r.get(f'product:{product_id}')
if product_json:
# 解析商品详情JSON字符串为字典
product = json.loads(product_json)
# 提取商品名称
product_name = product.get('name')
if product_name:
product_names.append(product_name)
return product_names
你可以通过调用get_product_names_by_category(category_id)
函数来获取指定分类下所有商品的名称,其中category_id
为具体的分类ID。