Redis保存购物车信息

以客户id作为key,每位用户创建一个hash存储结构存储对应的购物车信息

将商品编号作为field,购买数量作为value进行存储

使用hash结构保存购物车信息:

  • 以用户ID作为key

  • 以商品ID作为field

  • 以商品数量作为value

购物车信息保存在Redis中,仅仅是将数据存储到redis中,并没有起到加速的作用,商品信息还需要二次查询数据库。

以hash结构保存购物车信息,key命名格式一般为:user:userId:cart

可以将每条购物车中的商品记录保存成两条field:

  • filed1专用于保存购买数量

命名格式: 商品skuid:nums

保存数据: 数值

  • field2专用于保存购物车中显示的信息,包含文字描述,图片地址,所属商家信息等

命名格式: 商品skuid:info

保存数据: json

示例:


  1. 向ID为1234的用户(cart:前缀为购物车)的购物车添加3个商品,产品的ID为1001,1002,1003,数量分别为3,2,4:

在这里插入图片描述

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现购物车可以使用 Redis 来存储购物车的数据,Spring Boot 可以使用 Spring Data Redis 来操作 Redis。 首先,需要添加 Redis 相关的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 然后,需要在配置文件配置 Redis 的连接信息: ```yaml spring: redis: host: localhost port: 6379 ``` 接下来,定义一个购物车项的类: ```java public class CartItem { private Long productId; private Integer quantity; // getters and setters } ``` 然后,定义一个购物车的服务类: ```java @Service public class CartService { private final RedisTemplate<String, CartItem> redisTemplate; public CartService(RedisTemplate<String, CartItem> redisTemplate) { this.redisTemplate = redisTemplate; } public void addItem(String userId, Long productId, Integer quantity) { String key = "cart:" + userId; CartItem cartItem = redisTemplate.opsForHash().get(key, productId); if (cartItem == null) { cartItem = new CartItem(); cartItem.setProductId(productId); cartItem.setQuantity(quantity); } else { cartItem.setQuantity(cartItem.getQuantity() + quantity); } redisTemplate.opsForHash().put(key, productId, cartItem); } public void removeItem(String userId, Long productId) { String key = "cart:" + userId; redisTemplate.opsForHash().delete(key, productId); } public List<CartItem> getItems(String userId) { String key = "cart:" + userId; Map<Object, Object> entries = redisTemplate.opsForHash().entries(key); List<CartItem> items = new ArrayList<>(entries.size()); for (Map.Entry<Object, Object> entry : entries.entrySet()) { CartItem cartItem = (CartItem) entry.getValue(); items.add(cartItem); } return items; } } ``` 在这个购物车服务类,我们使用 Redis 的 Hash 类型来存储购物车数据,其键为用户 ID,值为一个 Hash,其每个键值对表示一个购物车项。在 `addItem` 方法,我们首先根据用户 ID 和商品 ID 获取原来的购物车项,如果购物车项不存在,则创建一个新的购物车项;否则,更新购物车项的数量。然后,使用 Redis 的 `opsForHash()` 方法将购物车保存Redis 。在 `removeItem` 方法,我们使用 `opsForHash().delete()` 方法从 Redis 删除购物车项。在 `getItems` 方法,我们使用 `opsForHash().entries()` 方法获取购物车所有的商品项,并将所有的购物车项转换成一个列表返回。 最后,我们可以在控制器注入购物车服务类,然后调用其方法来实现购物车的增加、删除和查询: ```java @RestController public class CartController { private final CartService cartService; public CartController(CartService cartService) { this.cartService = cartService; } @PostMapping("/cart") public void addItem(@RequestParam String userId, @RequestParam Long productId, @RequestParam Integer quantity) { cartService.addItem(userId, productId, quantity); } @DeleteMapping("/cart") public void removeItem(@RequestParam String userId, @RequestParam Long productId) { cartService.removeItem(userId, productId); } @GetMapping("/cart") public List<CartItem> getItems(@RequestParam String userId) { return cartService.getItems(userId); } } ``` 这样,我们就可以使用 Redis 实现购物车了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值