设计浏览记录存储方案
当登录用户在浏览商品的详情页时,我们就可以把详情页这件商品信息存储起来,作为该登录用户的浏览记录。
用户未登录,我们不记录其商品浏览记录。
1. 存储数据说明
虽然浏览记录界面上要展示商品的一些SKU信息,但是我们在存储时没有必要存很多SKU信息。
我们选择存储SKU信息的唯一编号(sku_id)来表示该件商品的浏览记录。
存储数据:
sku_id
2. 存储位置说明
用户浏览记录是临时数据,且经常变化,数据量不大,所以我们选择内存型数据库进行存储。
存储位置:
Redis数据库 3号库
CACHES = {
"history": { # 用户浏览记录
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/3",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
}
3. 存储类型说明
由于用户浏览记录跟用户浏览商品详情的顺序有关,所以我们选择使用Redis中的
list
类型存储 sku_id每个用户维护一条浏览记录,且浏览记录都是独立存储的,不能共用。所以我们需要对用户的浏览记录进行唯一标识。
我们可以使用登录用户的ID来唯一标识该用户的浏览记录。
存储类型:
'history_user_id' : [sku_id_1, sku_id_2, ...]
4. 存储逻辑说明
SKU信息不能重复。
最近一次浏览的商品SKU信息排在最前面,以此类推。
每个用户的浏览记录最多存储五个商品SKU信息。
存储逻辑:先去重,再存储,最后截取。