热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

redis批量删除key_PHP中封装Redis购物车功能

直接看代码:

直接看代码:

// 服务层namespace CommonService;
use VendorFuncRed;class CartService extends CommonService {protected $redis;protected $pre_key;public function __construct(){parent::__construct();$this->redis = Red::create();$this->pre_key = C('USER.CART').C('APPID').':';}/*** 加入购物车,移除购物车,但是不会删除* @param $openid* @param $sku_id* @param int $count* @return mixed*/public function add($openid, $sku_id, $count = 1){$key = $this->pre_key.$openid;// 可增可减return $this->redis->hIncrBy($key, $sku_id, $count);}/*** 批量添加* @param $openid* @param array $data* @return mixed*/public function addBatch($openid, array $data){$key = $this->pre_key.$openid;// 批量执行$r = $this->redis->multi(Redis::PIPELINE);foreach ($data as $k => $v) {$r = $r->hIncrBy($key, $k, $v);}return $this->redis->exec();}/*** 删除购物车单个商品* @param $openid* @param $sku_id* @return mixed*/public function delete($openid, $sku_id){$key = $this->pre_key.$openid;return $this->redis->hdel($key, $sku_id);}/*** 删除购物车多个商品* @param $openid* @param $sku_ids* @return bool*/public function deleteBatch($openid, $sku_ids){$key = $this->pre_key.$openid;foreach ($sku_ids as $k => $v) {$this->redis->hdel($key, $v);}return true;}/*** 检测商品是否已在购物车中* @param $openid* @param $sku_id* @return mixed*/public function exists($openid, $sku_id){$key = $this->pre_key.$openid;return $this->redis->hExists($key, $sku_id);}/*** 清空购物车* @param $openid* @return mixed*/public function deleteAll($openid){$key = $this->pre_key.$openid;return $this->redis->del($key);}/*** 判断购物车中是否有数据,有多少* @param $openid* @return mixed*/public function hasUserCart($openid){$key = $this->pre_key.$openid;return $this->redis->hLen($key);}/*** 设置为固定数量* @param $openid* @param $sku_id* @param $count* @return bool*/public function setCount($openid, $sku_id, $count){$key = $this->pre_key.$openid;$status = $this->redis->hset($key, $sku_id, $count);if ((int)$status === -1) {return false;}return true;}/*** 获取购物车中单个商品的数量* @param $openid* @param $sku_id* @return mixed*/public function getCount($openid, $sku_id){$key = $this->pre_key.$openid;return $this->redis->hget($key, $sku_id);}/*** 获取全部数据* @param $openid* @return mixed*/public function getAll($openid){$key = $this->pre_key.$openid;return $this->redis->hgetall($key);}/*** 获取全部商品id* @param $openid* @return mixed*/public function getAllKeys($openid){$key = $this->pre_key.$openid;return $this->redis->hkeys($key);}/*** 获取全部商品数量* @param $openid* @return mixed*/public function getAllVal($openid){$key = $this->pre_key.$openid;return $this->redis->hvals($key);}
}

加入购物车,移除购物车,清空购物车,查看购物车数量,查看全部商品等等。

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要

PHP进阶架构师>>>视频、面试文档免费获取​shimo.im
4134f9ee4c580c75ffea39c84c37ecd8.png

或 者关注咱们下面的知乎专栏

PHP架构师圈子​zhuanlan.zhihu.com
fa5cb1f4387af98d09e7f614da181718.png



推荐阅读
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 外观模式:为子系统中的一系列接口提供一个统一的访问入口,通过定义一个高层次的接口,使子系统的使用变得更加简便和高效。该模式特别适用于那些需要简化复杂子系统交互的场景,能够显著提升代码的可复用性和可维护性。对于具备一定面向对象编程基础的开发者来说,掌握外观模式将有助于更好地组织和管理复杂的软件架构。 ... [详细]
  • Juval Löwy主张,每个类都应被视为服务,这并非是为了让服务无处不在,而是因为微服务是经过深思熟虑后系统分解的自然结果。在他的设计和构建的系统中,这种理念有助于提高模块化、可维护性和扩展性。通过将每个类视为独立的服务,系统能够更好地应对复杂性,实现更灵活的部署和更高的性能。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 深入解析C#中app.config文件的配置与修改方法
    在C#开发过程中,经常需要对系统的配置文件进行读写操作,如系统初始化参数的修改或运行时参数的更新。本文将详细介绍如何在C#中正确配置和修改app.config文件,包括其结构、常见用法以及最佳实践。此外,还将探讨exe.config文件的生成机制及其在不同环境下的应用,帮助开发者更好地管理和维护应用程序的配置信息。 ... [详细]
  • Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战?
    Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战? ... [详细]
  • 本文探讨了利用JavaScript实现集合的对称差集算法的方法。该算法旨在处理多个数组作为输入参数,同时保留每个数组中元素的原始顺序。算法不会移除单个数组内的重复元素,但会删除在不同数组之间出现的重复项。通过这种方式,能够有效地计算出多个数组的对称差集。 ... [详细]
author-avatar
zbdxyyj
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有