随笔分类 - redis
摘要:通过php和redis实现一个小功能排行榜,用的数据类型是有序集合:zrevrange 递增排序,zrange 递减排序 /** * 排行榜 */ public function rank() { // $this->zrem($this->cachekey); $this->redis->del(
阅读全文
摘要:思路: 1. 初始化:先将10件商品push到商品列表(seckill_goods:1)。 2. 抢购:利用pop操作的原子性,每成功抢购1件商品就从该列表pop一个数,并将该用户push到订单列表(seckill_order:1)。当商品redis列表pop空了,返回false。 代码: clas
阅读全文
摘要:redis目前已经到了3.2版本,3.2版本里面新增的一个功能就是对GEO(地理位置)的支持。 地理位置大概提供了6个命令,分别为: GEOADD GEODIST GEOHASH GEOPOS GEORADIUS GEORADIUSBYMEMBER 具体的功能如下: 1. 命令:GEOADD key
阅读全文
摘要:策略 假象把中国分成,若干个一平方公里的单元格 1)、用户位置的变更,理解为一个单元格移动到另外一个单元格(或者不移动) 2)、用户查找附近,理解为查找,自己所在方块的的所有人 数据结构 1)、用户基本信息 纬度、经度、GeoHash值(经纬度,仅用于后期距离计算) 2)、单元格 集合(用户1,用户
阅读全文
摘要:Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。 服务端处理命令,并将结果返回给客户端。 Redis 管道技术可以在服务端未响应时,客户端可以继
阅读全文
摘要:抢购、秒杀是平常很常见的场景,面试的时候面试官也经常会问到,比如问你淘宝中的抢购秒杀是怎么实现的等等。抢购、秒杀实现很简单,但是有些问题需要解决,主要针对两个问题: 一、高并发对数据库产生的压力二、竞争状态下如何解决库存的正确减少("超卖"问题)第一个问题,对于PHP来说很简单,用缓存技术就可以缓解
阅读全文
摘要:thinkphp版 //避免频繁请求 (ThinkPHP) $sessID = 'register' . $data['mobile_code_id'] . $data['mobile'] . $data['password']; if(!(new \think\session\driver\Red
阅读全文
摘要:/*1.Connection*/$redis = new Redis();$redis->connect('127.0.0.1',6379,1);//短链接,本地host,端口为6379,超过1秒放弃链接$redis->open('127.0.0.1',6379,1);//短链接(同上)$redis
阅读全文
摘要:简介:队列要遵守先进先出的原则 demo.php demo2.php(定时执行脚本)
阅读全文
摘要:1、键值相关命令 keys * 取出当前所有的key exists name 查看n是否有name这个key del name 删除key name expire confirm 100 设置confirm这个key100秒过期 ttl confirm 获取confirm 这个key的有效时长 se
阅读全文
摘要:项目开发过程中需要设计提供可平衡的处理多个用户请求的队列。 需求: 当用户登录后,查看系统中已经登录的管理员队列,然后查看后台管理员的处理能力,如果已经不能处理新的请求,则把该管理员从处理队列中删除,否则把 该管理员分配给该用户,管理员的处理能力减一,系统当前所指向的管理员+1即指向下一位可以处理问
阅读全文
摘要:序号 命令及描述 1 BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 2 BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发
阅读全文
摘要:如何获取一个学生排行榜? 要用到2个关键词 zrangebyscore (升序排列) zrevrangebyscore (倒序排列) 下面我们给定一个分数范围来升序 或者 倒序得到一个排行榜. 192.168.1.175:6377> zrangebyscore testset 80 150 1) "
阅读全文