zoukankan      html  css  js  c++  java
  • redis 哈希数据类型简单操作(实现购物车案例)

    这里不累赘如何安装redis和php  redis扩展,主要熟悉调用redis哈希数据类型

    简单方法操作如下

    1:hSet 

    2:hGet

    4:hDel

    5:hGetAll

    4:hExists

    5:hIncrBy

    简单购物车实现

    namespaceHomeController;
    useThinkController;
    useOrgNetHttp;
    useThinkCacheDriverRedis;
    classIndexControllerextendsController
    {
    private$redis_obj=null;
    public function__construct()
    {
    $this->redis_obj=newRedis();
    }
    
    /**
    *@file:判断购物车是否存在这减商品
    *@param$user_id
    *@param$goods_id
    */
    public functiongoods_is_exist($user_id,$goods_id)
    {
    $r1=$this->redis_obj->hExists($user_id,$goods_id);
    return$r1;
    }
    /** *@file:增加购物车商品 * */ public functionadd_goods() { $user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0; $goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0; $exist=$this->goods_is_exist($user_id,$goods_id); if(!empty($user_id) &&$goods_id) { //不存在 增加商品 if(!$exist) { $add_return=$this->redis_obj->hSet($user_id,$goods_id,1); if($add_return) { $this->ajaxReturn(array('code'=>0,'msg'=>'success')); }else{ $this->ajaxReturn(array('code'=>1,'msg'=>'error')); } }elseif($exist) { //存在的商品增加1 $add_exist_result=$this->redis_obj->hIncrBy($user_id,$goods_id,1); if($add_exist_result) { $this->ajaxReturn(array('code'=>0,'msg'=>'success','1'=>$add_exist_result)); }else{ $this->ajaxReturn(array('code'=>1,'msg'=>'error')); } } } } //减少购物车的商品 public functionreduce_goods() { $user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0; $goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0; if(!empty($user_id) &&$goods_id) { $exist=$this->goods_is_exist($user_id,$goods_id); //不存在 if(!$exist) { $this->ajaxReturn(array('code'=>1,'msg'=>'goods is not exist ')); }elseif($exist) { $val=$this->redis_obj->hGet($user_id,$goods_id); if($val==1) {//购物车商品只有一件的时候 减少到0就是删除 $del_result=$this->redis_obj->hDel($user_id,$goods_id); if($del_result==1) { $this->ajaxReturn(array('code'=>0,'msg'=>'success','num'=>0)); } }elseif($val>1) { $new_value=$this->redis_obj->hIncrBy($user_id,$goods_id,-1); if($new_value>0) { $this->ajaxReturn(array('code'=>0,'msg'=>'success','num'=>$new_value)); }else{ $this->ajaxReturn(array('code'=>1,'msg'=>'error')); } } } }else{ $this->ajaxReturn(array('code'=>1,'msg'=>'param is empty')); } } //移除商品 public functionrm_goods() { $user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0; $goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0; if(!empty($user_id) && !empty($goods_id)) { $arr= explode(',',$goods_id); array_unshift($arr,$user_id); $rm_result= call_user_func_array(array($this->redis_obj,"hDel"),$arr); if($rm_result>=0) { $this->ajaxReturn(array('code'=>0,'msg'=>'remove success')); } }else{ $this->ajaxReturn(array('code'=>1,'msg'=>'param is empty')); } } //购物车列表 public functioncart_list() { $user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0; if(!empty($user_id)) { $goods_list=$this->redis_obj->hGetAll($user_id); $this->ajaxReturn(array('code'=>0,'list'=>$goods_list)); }else{ $this->ajaxReturn(array('code'=>1,'msg'=>'param is empty')); } } //设置一个商品的数量 public function edit_goods_num()   {   } }
  • 相关阅读:
    (转载)Android多渠道打包飞一般的感觉
    (转载)【笨木头Lua专栏】基础补充22:弱引用table
    (转载)【笨木头Lua专栏】基础补充21:面向对象——多重继承、私密性
    (转载)【笨木头Lua专栏】基础补充20:面向对象——类和继承
    (转载)【笨木头Lua专栏】基础补充19:调用函数时用点号还是用冒号
    (转载)【笨木头Lua专栏】基础补充18:Lua的模块编写与module函数
    (转载)【笨木头Lua专栏】基础补充16:__index和__newindex的沉默与合作
    (转载)【笨木头Lua专栏】基础补充17:全局变量与非全局环境
    自定义web浏览器(五)
    第九课时之错误和异常
  • 原文地址:https://www.cnblogs.com/aksir/p/6781250.html
Copyright © 2011-2022 走看看