使用Redis实现购物车、计数器、好/差评等功能测试【一看就懂】

衔接上文:(若对Spring整合Redis还不太了解请参考)

Spring整合Redis入门详解及基础练习_杨大仙爱篮球-CSDN博客

本文仅做功能测试,展示代码逻辑,后续会发布在项目中如何使用 。

购物车功能

购物车的定义非常简单:我们可以通过Redis中的hash来实现:

  • 以每位用户的用户ID(或Cookie_id)作为hash的Key,那么每位用户的购物车就是一张哈希表,使用此哈希表存储商品ID与商品订购数量即可。
  • 当购物车商品数量发生变化时,我们就可以通过使用Redis哈希中的方法以对购物车进行更新;
  • 若用户订购某件商品的数量大于0,那么程序会将这件商品的ID以及用户订购该商品的数量添加至散列。

效果如图:

对应测试代码: 

 @Test   //  购物车功能实现
 public void testShopping() {
     HashOperations forHash = redisTemplate.opsForHash();
     forHash.put("user_1", "gid_1", 6);  //  表示用户1买了6个1号商品
     forHash.put("user_2", "gid_3", 1);  //  表示用户2买了1个3号商品
     //  加减购物车商品数量
     forHash.increment("user_1", "gid_1", -1);   //  用户1减去1件1号商品
     forHash.increment("user_2", "gid_3", 1);    //  用户2添加1件3号商品
     //  查询购物车
     Map user_1 = forHash.entries("user_1");
     Set set = user_1.entrySet();
     for (Object o : set) {
         System.out.print("商品信息:" + o + " ");
     }
 }

购物车功能的实现及代码逻辑大致如此,实际使用时还需我们灵活运用。

计数器功能

Redis 哈希表作为计数器的使用也非常广泛。它常常被用于记录网站每一天、月、年的访问数量

  • 第一次访问,我们创建唯一标识(属性)并设置缺省值为1。
  • 而后的每一次访问,我们只需在对应的属性自增1即可。代码测试如图:

 @Test   //  计数器功能实现,例如某网站一天的访问量
 public void testCounter() {
     HashOperations forHash = redisTemplate.opsForHash();
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd");
     String date = sdf.format(new Date());
     //  判断当前日期是否存在
     Boolean exist = forHash.hasKey("count", date);
     if (exist) {  //  若存在则访问量递增
         forHash.increment("count", date, 1);
     } else {      //  第一次访问,创建并设缺省值为1
         forHash.put("count", date, 1);
     }
     Object count = forHash.get("count", date);
     System.out.println("日期:" + date + ",访问次数:" + count);
 }

通过计数器也可以演变出很多功能,比如购物平台的好/差评功能。

好/差评功能

使用Redis的hash实现商品的好评与差评功能也非常简单。

由于好评差评是每件商品都有的,所以提前初始化,代码如图:

flag为模拟接收前台传来的参数,好评为true,差评为false。

 @Test   //  好评差评功能实现
 public void testAppraise() {
     HashOperations forHash = redisTemplate.opsForHash();
     //  由于好评差评是每件商品都有的,所以提前初始化
     forHash.put("goods_1", "good", 0);
     forHash.put("goods_1", "bad", 0);
     //  flag为模拟接收前台传来的参数,好评为true,差评为false
     boolean flag = true;
     if (flag) { //  好评
         forHash.increment("goods_1", "good", 1);
     } else {    //  差评
         forHash.increment("goods_1", "bad", 1);
     }
 }

关于Redis实现购物车、计数器、好/差评等功能测试就到此告一段落。

编程非常有趣,我们可以代码实现生活中形形色色的场景,灵活运用便可以打开新世界的大门,欢迎大家一起学习探讨~

转载请注明出处


如有错误,欢迎指正

Thanks

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hah杨大仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值