• 结合购物车功能,了解RedisTemplate中的BoundHashOperations源码


    🧑‍💻作者名称:DaenCode
    🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······
    😎人生感悟:尝尽人生百味,方知世间冷暖。
    📖所属专栏:Redis相关源码分析


    在这里插入图片描述


    专栏推荐

    • 专门为Redis入门打造的专栏,包含Redis基础知识、基础命令、五大数据类型实战场景、key删除策略、内存淘汰机制、持久化机制、哨兵模式、主从复制、分布式锁等等内容。链接>>>>>>>>>《Redis从头学》
    • SpringBoot实战相关专栏,包含SpringBoot过滤器、拦截器、AOP实现日志、整合Freemaker、整合Redis等等实战相关内容,多篇文章登入全站热榜、领域热榜、被技术社区收录。链接>>>>>>《SpringBoot实战》

    🌟前言

    之前做的电商项目中的购物车功能,采用了Redis中的Hash结构进行存储实现。这就很有必要了解一下其Hash结构以及其底层操作源码是怎样的。不然在实现功能的时候,调用相关API就是一头雾水。若源码解释有误,望大佬们指出,不胜感激!!!


    🌟购物车存储结构

    分析之前,先来看一下购物车的存储结构是怎样的:

    Map>—》BoundHashOperations

    • 第一层map的key:userId-用户id
    • 第二层map的key:productId-商品id
    • 第二层map的value:productdetail:商品的详情。

    🌟总体结构

    分析之前可以先将BoundHashOperations的结构看作为BoundHashOperations

    基类BoundKeyOperations

    1. 通过源码阅读,可以看出BoundHashOperations继承自BoundKeyOperations接口。
      在这里插入图片描述

    2. 对于BoundKeyOperations源码的英文解释如下:
      Operations over a Redis key. Useful for executing common key-'bound' operations to all implementations
      翻译:对Redis Key的操作。用来执行命令(所有实现了绑定Key的操作)

    3. 该基类的整体结构,可以看下图,不难看出都是对Key的相关操作。进一步分析其中的getKey()源码以及对于其英文解释:
      Returns the key associated with this entity. Returns:key associated with the implementing entity
      就可以确定此接口就是为了绑定key以及实现了这个接口的实例的key。不难理解,此接口中的操作,是对BoundHashOperations中的最外层的String类型的这个Key进行进行操作的
      在这里插入图片描述

    BoundHashOperations

    1. 下图为此接口的结构。对于此源码有一段英文解释:
      Hash operations bound to a certain key.
      翻译:绑定到特定Key的Hash操作。通过此解释,不难理解,此接口中的操作,是对BoundHashOperations中的Object,Object这两个值(这两个值也可正好构成Hash结构)进行操作的

    实践结合:通过此接口中的get方法来获取某个HKey(商品ID)对应的HValue(商品数据)。

    在这里插入图片描述

    RedisTemplate中的boundHashOps方法

    通过源码可以看出,操作模板中的boundHashOps方法就是为了抽取出BoundHashOperations这个接口,也就是绑定某个Key的Hash操作。

    实践结合:调用此方法,来抽取某用户id(Key)的购物车(商品id(HKey),商品详情(HValue))

    在这里插入图片描述


    🌟总结

    下方为手写的草图,看着可以让我更有印象哈哈哈哈哈。
    在这里插入图片描述


    🌟写在最后

    有关于结合购物车功能,了解RedisTemplate中的BoundHashOperations源码到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。如源码分析有误,请各位大佬指出


    请添加图片描述

  • 相关阅读:
    链接脚本和可执行文件
    U-boot(三):start.S
    一个月一个基于SpringBoot的在线教育系统「源码开源」
    【复古数码】轻律U1头戴式耳机,让你感受音乐的魔力!
    ROS从入门到精通3-4:urdf集成Gazebo联合仿真
    VMWare不使用简易安装,手动安装ISO操作手册
    查看docker中运行镜像的启动命令方法
    羽夏 MakeFile 简明教程
    Java基础 --- 终止线程 Terminate Threads
    用支持向量机SVM进行光学字符识别OCR
  • 原文地址:https://blog.csdn.net/2302_79094329/article/details/133149174