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

2023-09-22 07:15:00

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


在这里插入图片描述


专栏推荐

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

🌟前言

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


🌟购物车存储结构

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

Map<String,Map<Object,Object>>—》BoundHashOperations<H,HK,HV>

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

🌟总体结构

分析之前可以先将BoundHashOperations的结构看作为BoundHashOperations<String,Object,Object>。

基类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,Object,Object>中的最外层的String类型的这个Key进行进行操作的
    在这里插入图片描述

BoundHashOperations

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

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

在这里插入图片描述

RedisTemplate中的boundHashOps方法

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

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

在这里插入图片描述


🌟总结

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


🌟写在最后

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


请添加图片描述

更多推荐

Linux系统编程6(线程互斥,锁,同步,生产消费模型)

上篇文章介绍完线程的概念后,我们将在这篇文章中初步探讨线程编程以及线程应用中的问题,这篇文章将以抢票系统为例,贯穿整篇文章。笔者将介绍在多线程编程中会出现的问题,什么是同步?什么是互斥?为什么多线程编程常有加锁的概念,什么又是生产者和消费者模型,读完这篇文章,你会得到相应的答案,笔者这里强烈建议各位把文中给出的demo

App Store上线规范及流程

上线一个应用到AppStore需要遵循苹果的规范和流程,以确保应用的质量和安全性。以下是上线应用到AppStore的一般规范和流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。1.开发和测试:在上线应用之前,确保应用已经经过了充分的开发和测试阶段。这包括功能测试、性能测试、兼容性

Python学习之——str/unicode/bytes

Python学习之——str/unicode/bytes参考字符串和字节串区分Unicode和Encodingspython2python3一个典型的问题参考Pythonstrvsunicodetypes谈谈python2,3中的str、unicodeUnicode编码及UTF-32,UTF-16和UTF-8https

【Oracle】Oracle系列之二--Oracle数据字典

文章目录往期回顾前言1.什么是Oracle数据字典2.数据字典的内容(1)X$表(2)数据字典表、数据字典视图(3)动态性能视图3.数据字典应用示例(1)查询表的信息(2)查询索引的信息(3)查询用户的信息(4)查询表空间的信息(5)查询数据文件的信息(6)查询数据库的性能数据往期回顾【Oracle】Oracle系列–

【腾讯云 Cloud Studio 实战训练营】快速构建React完成点餐H5页面

一,前言1.1相关链接官网地址:CloudStudio官方文档地址:CloudStudio(云端IDE)简介|CloudStudio1.2CloudStudio(云端IDE)简介CloudStudio是基于浏览器的集成式开发环境(IDE),用户在使用CloudStudio时无需安装,随时随地打开浏览器就能在线编程,给开

React进阶

TODO1组件生命周期React组件生命周期|菜鸟教程(runoob.com)https://www.runoob.com/react/react-component-life-cycle.html什么是组件生命周期在React中,组件生命周期是指组件从创建到销毁期间经历的一系列阶段。在每个阶段,React给予我们不同

vue页面嵌入飞书网页组件,用于在类似ERP,OA等系统中展示在线文档

先展示最终效果(就是在vue页面中,内嵌了一块ifream页面):1.注册进入飞书开放平台,地址为:飞书开放平台2.进入开放平台后,选择--创建企业自建应用--创建网页应用,然后在主页面记住该应用的appId和appSecret参数,后面要用3.然后注意一点的是,因为后面的授权等逻辑我们一般用我们自己的文档做测试,但是

React antd Select 无法在disabled状态下选择并复制输入框内的内容情况分析及解决方案

文章目录背景问题分析解决思路一:会不会是由于在选择框内hover的时候出现的那个图标导致的解决思路二:会不会是这个span禁止复制解决思路三:去看看antd具体实现最终解决方案其他版本的解决方案antd3.*antd5.*背景在React项目开发中,我们经常会用到antd内的Select组件。有时候我们会在disabl

Eureka注册中心

文章目录1.Eureka的结构与作用2.搭建eureka-server服务3.注册service服务4.服务发现1.Eureka的结构与作用在Eureka架构中,微服务角色有两类:lEurekaServer:服务端,注册中心记录服务信息u心跳监控lEurekaClient:客户端Provider:服务提供者注册自己的信

数据结构前瞻

集合框架JAVA的集合框架是定义在java.util包下的一组接口和实现类,用于将多个元素置于一个单元中,对这些元素进行快速,便捷的存储,减速和管理,即增删查改下面的格子,黄色代表接口,蓝色代表抽象类,棕色代表类是动态数组(顺序表)优先级队列是双向列表底层就是一颗红黑树重要的四个接口算法效率时间复杂度即算法中基本操作的

2022年贵州省职业院校技能大赛中职组网络安全赛项规程

2022年贵州省职业院校技能大赛中职组网络安全赛项规程一、赛项名称赛项名称:网络安全赛项归属:信息技术类二、竞赛目的为检验中职学校网络信息安全人才培养成效,促进网络信息安全专业教学改革,培养大批既满足国家网络安全战略需要有具备世界水平的优秀技能人才,在社会上营造“技能改变命运、匠心成就人生”的崇尚技能的氛围,国家教育部

热文推荐