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') ;