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



推荐阅读
  • 基于分布式锁的防止重复请求解决方案
    一、前言关于重复请求,指的是我们服务端接收到很短的时间内的多个相同内容的重复请求。而这样的重复请求如果是幂等的(每次请求的结果都相同,如查 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • yii2 绑定框架事件
    后端开发|php教程php,yii2后端开发-php教程我想要添加自定义代码处理yii2框架的Application::EVENT_BEFORE_REQUEST时触发的事件,但是不 ... [详细]
  • java线条处理技术_Java使用GUI绘制线条的示例
    在Java的GUI编程中,如何使用GUI绘制线条?以下示例演示了如何使用Graphics2D类的Line2D对象的draw()方法作为参数来绘制一条线。 ... [详细]
  • 讨伐Java多线程与高并发——MQ篇
    本文是学习Java多线程与高并发知识时做的笔记。这部分内容比较多,按照内容分为5个部分:多线程基础篇JUC篇同步容器和并发容器篇线程池篇MQ篇本篇 ... [详细]
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社区 版权所有