美文网首页PHP开发PHP实战PHP经验分享
redis 哈希数据类型简单操作(实现购物车案例)

redis 哈希数据类型简单操作(实现购物车案例)

作者: MacLin | 来源:发表于2017-03-30 16:56 被阅读453次

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

    如图

    简单方法操作如下

    1:hSet 

    2:hGet

    4:hDel

    5:hGetAll

    4:hExists

    5:hIncrBy

    简单购物车实现

    namespaceHome\Controller;

    useThink\Controller;

    useOrg\Net\Http;

    useThink\Cache\Driver\Redis;

    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 functionedit_goods_num()

    {

    }

    }

    相关文章

      网友评论

      本文标题:redis 哈希数据类型简单操作(实现购物车案例)

      本文链接:https://www.haomeiwen.com/subject/ryrpottx.html