PHP + redis 简单实现 队列-秒杀 哈希-购物车

redis 创建队列

//redis秒杀测试
    public function miaoshatest(){
        $goodsId = 10001;
        //把10个库存放入队列
        for ($i=1; $i <= 10; $i++) {
           $rpush = Redis::rpush($goodsId,$i);
        }
        //模拟100个人秒杀这个商品
        for ($i=1; $i <= 100; $i++) {
            $value = Redis::lpop($goodsId);
            if($value){
                echo "我是第".$i."个买到的人".'<br>';//创建订单操作
            }else{
                echo "没买到啊".'<br>';
            }
        }
    }

运行结果
在这里插入图片描述

redis 创建哈希 实现购物车

redis 哈希操作代码

#创建
	#单个设置hash内容,字段已存在会覆盖
	$redis->hset('hash','a','value');
	#只有当字段不存在时候才设置hash表中字段值
	$redis->hsetnx('hash','a','value');
	#批量设置hash内容
	$redis->hmset('hash',['a'=>12,'b'=>2,'c'=>3]);
#获取
	#获取hash指定字段的值
	$redis->hget('hash','a');
	#批量获取
	$redis->hmget('hash',['a','b','c']);
	#获取全部
	$redis->hgetall('hash');
	#获取hash表中所有字段的值
	$redis->hvals('hash');
	#获取hash表中所有的字段
	$redis->hkeys('hash');
#删除
    $redis->hdel('hash','a');
    #判断hash指定字段的值是否存在
    $redis->hexists('hash','a');
    #获取hash表中字段个数
    $redis->hlen('hash');
//加入购物车
	$uid = "123";  //用户id
	$goodsid = "1001";//商品id
	$value = ['size'=>"20",'color'=>'green','price'=>'50','num'=>'3','total_price'=>'150'];//商品规格参数
	$value = json_encode($value);//哈希的value只能是字符串,这里转了json
	Redis::hset($uid.' ShoppingCart',$goodsid,$value);//加入购物车,直接创建哈希
	$data = Redis::hgetall($uid.' ShoppingCart');//获取该用户购物车内容
    dump($data);

加入了两次购物车,打印存储的哈希表 ,这个Key就是商品id,value就是商品的规格了.
在这里插入图片描述
//购物车内商品加减 换参数规格

		$data = Redis::hgetall($uid.' ShoppingCart') ;//加入购物车,直接创建哈希
        $goods = json_decode($data['1002'],true);
        $goods['num'] = $goods['num'] + 1; //数量加一
        $goods['total_price'] = $goods['price'] * 1 + $goods['total_price']; //总价格加上
        $value = json_encode($goods);
        Redis::hset($uid.' ShoppingCart',$goodsid,$value);//获取购物车内容
        $datas = Redis::hgetall($uid.' ShoppingCart') ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值