热门标签 | 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



推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • 如何方便地退订邮件列表,避免混乱和烦恼
    本文介绍了如何方便地退订邮件列表,避免混乱和烦恼。文章指出,退订邮件列表可能会造成混乱,特别是当被意外添加到列表中时。为了快速、轻松地取消订阅,建议不要将退订电子邮件发送到用于发布消息的电子邮件地址。文章还介绍了邮件列表由邮件列表软件控制,作为邮件列表成员,可以对该软件进行一些用户控制。一些邮件列表允许使用自动电子邮件地址退订,但这可能会带来一些混乱。最后,文章提到退订邮件列表需要向电子邮件服务器发送特殊命令来脱离列表。 ... [详细]
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社区 版权所有