redis学习(五) redis实现购物车

<redis实战> 第二章

  • 每个用户的购物车都是一个散列,这个散列存储了商品ID与商品订购数量之间的映射
    
    
  • 对商品数量的验证由web应用程序负责,我们要做的就是在商品订购的数量出现变化时,对购物车进行更新
<?php

$redis = new Redis();
$redis->connect('127.0.0.1',6379);

function add_to_cart($redis,$session,$item,$count)
{
    if ($count<=0)
    {
        $redis->hDel('cart:'.$session,$item);  //从购物车中移除指定的商品
    }else{
        $redis->hSet('cart:'.$session,$item,$count);  //将指定的商品添加到购物车
    }
}


//守护进程方式运行
//定时任务(cron)运行
/**
 * 定期清理旧的会话数据
 * @param $redis
 */
function clean_full_sessions($redis)
{


        $quit = false;
        $limit = 1000000;
        while (!$quit)
        {
            $size = $redis->zCard('recent:');  //找出当前已有令牌的数量
            if ($size < $limit)  // 令牌未超过限制,休眠并在之后重新检查
            {
                sleep(1);
                continue;
            }else{
                $quit = true;
            }
        }
        $end_index = min($size-$limit,100);

        $sessions = $redis->zRange('recent:',0,$end_index-1);  //获取需要移除令牌的id

        foreach ($sessions as $sess)
        {
            $session_key [] = 'viewed:'.$sess;  //删除会话
            $session_key [] = 'cart:'.$sess;  //删除旧的会话对应用户的购物车
        }
        $redis->delete($session_key);
        $redis->del('login:',$sessions);
        $redis->zrem('recent:',$sessions);  //移除最旧的令牌


}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值