文章目录

  • 微服务详情
  • 离线购物车
  • 在线购物车
  • 流程图
  • 新增商品
  • 再次判断是否登录
  • 为什么使用redis
  • 使用的是redis中的什么数据结构
  • 存储结构
  • 购物车实体类
  • 拦截器
  • web本地存储主要有两种方式:
  • LocalStorage
  • localStorage语法
  • SessionStorage


微服务详情

redis的购物车一般存什么 购物车放redis还是数据库_redis

离线购物车

离线购物车:主要使用localstorage保存到客户端,几乎不与服务端交互

在线购物车

在线购物车:使用redis实现。利用redis实现可靠缓存服务

流程图

redis的购物车一般存什么 购物车放redis还是数据库_redis的购物车一般存什么_02

新增商品

· 判断是否登录
· 是:则添加商品到后台Redis中
· 否:则添加商品到本地的Localstorage
无论哪种新增,完成后都需要查询购物车列表:

再次判断是否登录

· 否:直接查询localstorage中数据并展示
· 是:已登录,则需要先看本地是否有数据,

  • 有:需要提交到后台添加到redis,合并数据,而后查询
  • 否:直接去后台查询redis,而后返回

新增之后记得修改购物车数量。

为什么使用redis

购物车是一个读写频率很高的数据。因此我们这里选择读写效率比较高的Redis作为购物车存储。
redis详情Spring Data Redis详情

使用的是redis中的什么数据结构

存储结构

Redis有5种不同数据结构,这里选择哪一种比较合适呢?Map<String, List>

  • 首先不同用户应该有独立的购物车,因此购物车应该以用户的作为key来存储,Value是用户的所有购物车信息。这样看来基本的k-v结构就可以了。
  • 但是,我们对购物车中的商品进行增、删、改操作,基本都需要根据商品id进行判断,为了方便后期处理,我们的购物车也应该是k-v结构,key是商品id,value才是这个商品的购物车信息。

综上所述,我们的购物车结构是一个双层Map:Map<String,Map<String,String>>

  • 第一层Map,Key是用户id
  • 第二层Map,Key是购物车中商品id,值是购物车数据

购物车实体类

redis的购物车一般存什么 购物车放redis还是数据库_redis的购物车一般存什么_03

拦截器

因为很多接口都需要进行登录,我们直接编写SpringMVC拦截器,进行统一登录校验。同时,我们还要把解析得到的用户信息保存起来,以便后续的接口可以使用。

redis的购物车一般存什么 购物车放redis还是数据库_数据_04

web本地存储主要有两种方式:

LocalStorage

  • localStorage 方法存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。

localStorage语法

localStorage.setItem(“key”,“value”);// 存储数据
localStorage.getItem(“key”); // 获取数据
localStorage.removeItem(“key”); // 删除数据

SessionStorage

sessionStorage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。