开发者社区> 问答> 正文

关于商品分类表的实现与缓存的问题

问一下一般的商品都有分类,商品的分类表的结构是如何实现的?如果想用Redis缓存这个分类表,该怎么设计键值对?

展开
收起
爵霸 2016-03-06 17:01:23 2585 0
1 条回答
写回答
取消 提交回答
  • 商品分类可以参考主流电商平台的设计,比如淘宝、京东之类的,简单点可以是树形结构,如:

    女装

    上衣
        T恤
        衬衫
        ...
    裤子
        休闲裤
        打底裤
        短裤
        ...
    裙装
        A字裙
        连衣裙
        ...

    这种结构相对较为简单,本质上为一对多的关系,单表即可表示,通过父ID建立上下级关联,做Redis缓存设计时,可以简单的使用SET集合来实现

    category:女装 => <上衣,裤子,裙装,...>
    category:女装:上衣 =>
    ...
    如果是多对多结构的,如:T恤可属于上衣分类,也可属于夏装分类,此类结构,可以在分类表外多建一张关系表,用于表示多对多的关系,分类元数据仍然可以只使用一张表表示,不需要父ID字段,但在做Redis缓存设计时,稍微麻烦一点

    父级与子级结构(SET)

    category:上衣 =>
    category:夏装 =>

    子级与父级结构(SET)

    category:T恤:parents => <上衣,夏装>
    category:衬衫:parents => <上衣,夏装>
    使用上述结构的原因是,维护缓存时,节点的变更会同时影响到上下级,所以上级对下级、下级对上级的关系都应有所表示,便于维护。假如上述案例中,要删除T恤分类,就需要根据T恤分类找到所有父类,再将父类下的T恤节点移除,如果需要删除夏装分类,则反回来需要查出所有夏装子节点,具体是要移除子结点还是其它处理逻辑则应根据业务需要来定。

    2019-07-17 18:54:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于英特尔 SSD 的虚拟机缓存解决SSD 立即下载
用户态高速块缓存方案 立即下载
高性能Web架构之缓存体系 立即下载