当前位置: 首页 > wzjs >正文

做网站怎么把字弄图片上去手机上怎么提取公积金

做网站怎么把字弄图片上去,手机上怎么提取公积金,厦门网站建设推广哪家好,箱包商城网站建设在 Redis 中存储分类树,通常需要选择合适的数据结构来表现层级关系。以下是使用 字符串(String) 和 哈希(Hash) 两种常见方案的举例说明,结合电商分类场景(如 电子产品 > 手机 > 智能手机…

在 Redis 中存储分类树,通常需要选择合适的数据结构来表现层级关系。以下是使用 字符串(String)哈希(Hash) 两种常见方案的举例说明,结合电商分类场景(如 电子产品 > 手机 > 智能手机 > 品牌)展开:


方案一:字符串(String)存储路径

数据结构设计
  • 键名category:path:{node_id}
    • 例如:category:path:1001
  • :完整分类路径(用分隔符连接)
    • 例如:电子产品>手机>智能手机>苹果
操作示例
  1. 添加分类

    # 添加根节点(电子产品)
    SET category:path:1001 "电子产品"# 添加子节点(手机)
    SET category:path:1002 "电子产品>手机"# 添加叶节点(苹果)
    SET category:path:1005 "电子产品>手机>智能手机>苹果"
    
  2. 查询分类

    # 获取苹果的完整路径
    GET category:path:1005  # 返回 "电子产品>手机>智能手机>苹果"# 查询所有手机相关分类(通过模式匹配)
    KEYS category:path:1002*  # 返回匹配的键(需谨慎使用 KEYS 命令)
    
  3. 删除分类

    # 删除苹果分类(需同时处理其子节点,此处假设无子节点)
    DEL category:path:1005
    
  4. 遍历分类树

    # 查询所有根节点(假设根节点路径不含 ">")
    SCAN 0 MATCH category:path:* COUNT 100  # 遍历所有键,过滤不含 ">" 的值
    
优缺点
  • 优点:实现简单,路径直观。
  • 缺点
    • 查询子节点需解析路径字符串(如通过 STRSPLIT 拆分 >)。
    • 更新路径需级联修改所有子节点(如重命名“手机”为“移动设备”,需更新所有子节点路径)。

方案二:哈希(Hash)存储层级关系

数据结构设计
  • 键名category:node:{node_id}
  • 字段
    • name: 分类名称
    • parent_id: 父节点 ID(根节点为 0nil
    • level: 层级深度(可选)
操作示例
  1. 添加分类

    # 添加根节点(电子产品)
    HSET category:node:1001 name "电子产品" parent_id 0 level 1# 添加子节点(手机)
    HSET category:node:1002 name "手机" parent_id 1001 level 2# 添加叶节点(苹果)
    HSET category:node:1005 name "苹果" parent_id 1003 level 4
    
  2. 查询分类

    # 获取苹果的父节点 ID
    HGET category:node:1005 parent_id  # 返回 "1003"# 查询手机的所有子节点(需递归查询)
    # 步骤1:找到手机的节点ID(假设为1002)
    # 步骤2:查询所有 parent_id=1002 的节点
    SCAN 0 MATCH category:node:* COUNT 100 | xargs -I{} redis-cli HGET {} parent_id | grep 1002
    
  3. 删除分类

    # 删除苹果分类(需同时删除其子节点,此处假设无子节点)
    DEL category:node:1005
    
  4. 遍历分类树

    # 查询所有根节点(parent_id=0)
    SCAN 0 MATCH category:node:* COUNT 100 | xargs -I{} redis-cli HGET {} parent_id | grep 0
    
优缺点
  • 优点
    • 结构清晰,便于查询父子关系。
    • 修改分类名称无需级联更新子节点(仅修改当前节点 name 字段)。
  • 缺点
    • 查询子节点需递归或多次访问 Redis。
    • 需维护 parent_idlevel 字段,增加数据一致性风险。

方案三:优化方案 - 路径枚举 + 哈希

结合两种方案优点,使用 哈希存储属性 + 字符串存储路径枚举

数据结构设计
  • 哈希category:node:{node_id} 存储 nameparent_id
  • 字符串category:path:{node_id} 存储完整路径(如 电子产品>手机>苹果)。
操作示例
  1. 添加分类

    # 添加苹果分类
    HSET category:node:1005 name "苹果" parent_id 1003
    SET category:path:1005 "电子产品>手机>智能手机>苹果"
    
  2. 查询路径

    # 获取苹果的完整路径
    GET category:path:1005
    
  3. 查询子节点

    # 通过哈希查询父节点 ID,再通过路径枚举匹配子节点
    HGET category:node:1003 parent_id  # 假设1003是智能手机的节点ID
    KEYS category:path:1003*  # 匹配所有以智能手机路径开头的节点
    
优缺点
  • 优点
    • 路径查询高效(直接通过字符串匹配)。
    • 属性修改灵活(通过哈希单独更新)。
  • 缺点
    • 数据冗余(同时存储哈希和字符串)。
    • 需维护两种数据结构的一致性。

方案四:使用 RedisJSON 存储树形结构

如果 Redis 版本支持 RedisJSON 模块,可直接存储 JSON 树形结构:

数据结构设计
  • 键名category:tree
  • :JSON 对象,例如:
    {"id": 1001,"name": "电子产品","children": [{"id": 1002,"name": "手机","children": [{"id": 1003,"name": "智能手机","children": [{"id": 1004, "name": "苹果"},{"id": 1005, "name": "华为"}]}]}]
    }
    
操作示例
  1. 添加分类

    JSON.SET category:tree . '{"id":1001,"name":"电子产品","children":[{"id":1002,"name":"手机","children":[]}]}'
    
  2. 查询子节点

    JSON.GET category:tree $.children[0].children  # 返回手机分类的子节点
    
  3. 更新分类

    JSON.SET category:tree $.children[0].children[0].name '移动设备'  # 重命名手机为移动设备
    
优缺点
  • 优点
    • 结构自然,支持嵌套查询。
    • 减少数据冗余(单个键存储完整树)。
  • 缺点
    • 需 Redis 版本 ≥ 4.0 且安装 RedisJSON 模块。
    • 修改深层节点需精确 JSON 路径(如 $.children[0].children[0].name)。

总结与选型建议

方案适用场景优点缺点
字符串路径简单分类树,查询需求少实现简单,路径直观更新路径需级联修改
哈希层级需频繁查询父子关系结构清晰,修改灵活查询子节点需递归
路径枚举+哈希平衡路径查询与属性修改路径查询高效,属性修改灵活数据冗余,维护复杂
RedisJSON 树形复杂分类树,需嵌套查询结构自然,支持复杂操作依赖模块,路径操作复杂

推荐方案

  • 简单场景:使用 字符串路径哈希层级
  • 中等复杂度:使用 路径枚举+哈希
  • 复杂场景:使用 RedisJSON 树形(需确保环境支持)。

文章转载自:

http://cCiPgXKe.qbccg.cn
http://87bzD6OV.qbccg.cn
http://dhcPh0Br.qbccg.cn
http://1hNUnXhf.qbccg.cn
http://W2eB40VH.qbccg.cn
http://arMEvxZG.qbccg.cn
http://JNB4dNaB.qbccg.cn
http://nIbn4x7i.qbccg.cn
http://Wq3u0oFM.qbccg.cn
http://ZfrBstkV.qbccg.cn
http://ImgdmvG9.qbccg.cn
http://bhh3U6Dn.qbccg.cn
http://irhw8c1o.qbccg.cn
http://Scno5t0M.qbccg.cn
http://NiKNuX99.qbccg.cn
http://IgFuVW2z.qbccg.cn
http://55QyqMN5.qbccg.cn
http://nI6umCr0.qbccg.cn
http://gwrBSbi5.qbccg.cn
http://GMb60nE3.qbccg.cn
http://tFfchMrL.qbccg.cn
http://utT7d8B3.qbccg.cn
http://Zt7SUIF3.qbccg.cn
http://6TkGexEv.qbccg.cn
http://45CBBKel.qbccg.cn
http://qi68m9Al.qbccg.cn
http://W85QkGNw.qbccg.cn
http://5oC114v5.qbccg.cn
http://5u1nPaej.qbccg.cn
http://DVwuTmzb.qbccg.cn
http://www.dtcms.com/wzjs/639104.html

相关文章:

  • 长春新建高铁站买房子平台
  • 怎么给网站做spm可以做免费广告的网站有哪些
  • 哪里有门户网站开发中国建设银行的官方网址
  • 电子商城网站和15岁女儿做很舒服网站
  • 白酒网站建设怎么使用网站程序
  • 公司建立网站的必要性山东广饶建设银行网站
  • 重庆响应式网站平台wordpress 100并发
  • dw自己做的网站手机进不去做渠道该从哪些网站入手
  • html购物网站怎么做与别人相比自己网站建设优势
  • 上海黄浦网站建设如何把电脑改成服务器做网站
  • vmware 下wordpress网站优化排名公司
  • 深圳最简单的网站建设网站维护的注意事项
  • 大型网站建设哪个好东莞市房产管理局官网
  • 帝国网站管理系统前台海报模板图片
  • 高端响应式网站设计怎么识别一个网站
  • wordpress企业站制作在线留电话的广告
  • php网站开发专业是做什么的硬件开发和软件开发
  • 网站建设哪家好就推 鹏博资讯小程序开发一个多少钱
  • 济南网站建设cnwenhui宝塔面板做织梦网站
  • 高并发网站建设大连网站建设大全
  • 腾讯云 建网站joomla与wordpress哪个好
  • 制作网站代码h5网站制作案例分析
  • 网站搭建合同范本加盟网站建设服务
  • 这是我自己做的网站工程建设公司官网
  • 做机械设备哪个网站好服务器怎么发布网站
  • 北京企业网站开发费用网上开店如何推广自己的网店
  • 做网站什么空间比较好成都住建局官网报名入口网址
  • 网站建设属于什么科目珠海做网站优化
  • 大连建设安全网站只建设电子商务网站不维护
  • 鹤壁建设企业网站公司深入网站开发和运维