<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);  //获取需要移除令牌的idforeach ($sessions as $sess){$session_key [] = 'viewed:'.$sess;  //删除会话$session_key [] = 'cart:'.$sess;  //删除旧的会话对应用户的购物车}$redis->delete($session_key);$redis->del('login:',$sessions);$redis->zrem('recent:',$sessions);  //移除最旧的令牌}

redis学习(五) redis实现购物车相关推荐

  1. 深入剖析Redis系列(五) - Redis数据结构之字符串

    前言 字符串类型 是 Redis 最基础的数据结构.字符串类型 的值实际可以是 字符串(简单 和 复杂 的字符串,例如 JSON.XML).数字(整数.浮点数),甚至是 二进制(图片.音频.视频),但 ...

  2. Redis学习笔记~Redis在windows环境下的安装

    Redis是一个key-value的存储系统,它最大的特点就是可以将数据序列化到文件中. redis存储在服务器的内存或者文件中,它不是session,不是cookies,它只是个更安全,更稳定,更可 ...

  3. Redis学习笔记---Redis的主从复制

    Redis学习笔记-Redis的主从复制 1.Redis的高可用性 高可用性(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性. Rei ...

  4. Redis学习笔记---Redis的模式订阅与退订

    Redis学习笔记-Redis的模式订阅与退订 1.发布订阅简介 发布订阅是一种通信的模式,Redis提供了发布订阅功能,可以用于消息的传输 Redis的发布订阅机制包括三个部分,publisher( ...

  5. Redis学习笔记---Redis的事务

    Redis学习笔记-Redis的事务 1. Redis事务(弱事务)和Mysql事务对比 Atomicity(原子性):构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行. Redi ...

  6. 【Redis学习】Redis管理命令总结

    1.键管理 之前通过对五种数据类型的操作命令的学习发现,Redis在对每种数据进行处理之前,都要先指定该数据的key,然后再指定对该数据进行何种操作. Redis中的key有点类似于Java中的变量名 ...

  7. 【Redis学习】Redis数据类型及存储结构

    最近再进行redis相关的学习,在网上查阅资料,总结如下: Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及zset(sortedset:有序集 ...

  8. 【Redis学习】Redis的安装、管理、适用场合以及使用

    1.Redis概述 我们知道,内存是电脑主板上的存储部件,用于存储当前正在使用的数据和程序,CPU可以与内存直接沟通,所以访问速速非常高:而外存数据必须加载到内存以后程序才能使用.如果把CPU当做一个 ...

  9. Redis学习之Redis概述及原理、基本操作及持久化

    一.Redis介绍 Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 它通常被称为数据结构服务 ...

最新文章

  1. 改变TabNavigator控件第一个tab标签的偏移量.
  2. 【PC工具】常用USB转串口芯片CP210x驱动,CH340G驱动安装有可能遇到的问题及解决办法...
  3. 开机f8修复电脑步骤_知识 | 8种方法修复电脑无法开机问题
  4. linux中date函数的使用方法,linux date -d 的一些使用方法
  5. Electra 支持 iOS 11.4.1 正式版越狱
  6. bzoj2729: [HNOI2012]排队
  7. 项目中cxf和weblogic整合时报错的问题
  8. python循环三次跳出循环_Python3 跳出多重循环 for...else...
  9. Kettle:创建资源库
  10. 453.最小移动次数使数组元素相等
  11. 如何给PDF加水印,PDF加水印的快速方法
  12. 利用Bandzip批量解压缩文件
  13. À¸´£º¹²ÏíÖйúÐÅÏ¢²úÒµ´øÀ´µÄÓ°ÏìÁ¦
  14. 文学档次,也可以是背出来的【148…
  15. 读一部会让你惊叹的作品——《最后一个莫西干人》
  16. bzoj3265 志愿者招募加强版
  17. Linux之PyTorch安装
  18. android:使用TextView展示H5文本(含关键字点击和图片)
  19. 阿里云服务器托管-云服务器托管介绍
  20. bim技术需要的计算机语言是,浅述BIM技术中的对象

热门文章

  1. php 接口继承,详细对比php中类继承和接口继承
  2. mysql 查询语句执行顺序_MySQL 查询语句执行过程
  3. mysql创建库和表确保utf8_mysql创建utf8数据库
  4. cmenu 隐藏子项中的一个子项_QML中的模型-视图-代理
  5. parted新建分区_扩展分区及文件系统(Linux)
  6. tensorflow笔记
  7. AAAI 2022 | 可解释和鲁棒的联合文本分类及证据提取
  8. L0对抗攻击JSMA的算法盘点
  9. 小米知识图谱团队斩获CCKS 2020实体链指比赛冠军
  10. BERT原理、代码、相关模型、精调技巧,看这个就够了