Redis计数器与数量控制

概要:
  1. 认识Redis的本质:设计目标,应用场景
  2. 理解为Redis的工作模式
  3. 认识Redis计数器
  4. 如何用Redis计数器实现并发场景下的数量控制
 
 
  1. Redis是什么
    1. 缓存
    2. 数据库
    3. 消息代理
  2. Redis和Memcache对比
    1. Memcache是内存对象缓存系统,设计目标为了通过缓解数据库的压力来加快web应用的响应速度
    2. Redis应用场景更丰富,Memcache仅适合作为缓存使用
  3. Redis的工作模式
    1. 单进程(仅有一个进程处理请求)
    2. 阻塞式(处理请求时具有原子性)
    3. Memcache与之相反,多进程非阻塞式
  4. Redis优缺点
    1. 优点:无需处理并发问题,降低系统复杂度
    2. 缺点:不适合缓存大尺寸对象(100KB 可修改配置)
  5. Redis计数器
    1. 存储类型:整数型String
    2. 应用场景
      1. 频率控制
        1. 接口防刷(key为IP地址,value为访问次数,key生成时间可设置为1s)
        2. 密码尝试次数限制(防止密码被暴力破解)
      2. 数量统计:请求量统计(类似频率控制)
      3. 数量控制:商品抢购,奖励额度控制
    3. 涉及命令
      1. exists key //检查key是否存在
      2. setnx key value //当key不存在时进行set操作
      3. expire key seconds //设置key的生存时间,没有ttl返回-1,过期返回-2
      4. ttl ksy //查看key的生存时间
  6. Redis数量控制器
    1. 应用场景
      1. 商品抢购,库存发生超买超卖
      2. 抽奖限量
      3. 抢红包
      4. ...
    2. 抽奖限额场景v1版本流程图
    1. 抽奖限额场景v2版本流程图
  1. 抽奖限额源码
 1 <?php
 2 require_once('vender/autoload.php');//引入自动加载类
 3 use Predis\Client;//引入Predis包
 4 
 5 //获取计数器名称
 6 function getKeyName($v){
 7     return "mycounter_".$v;
 8 }
 9 //生成redis客户端
10 function getRedisClient(){
11     return new Client([
12         'host'=>'127.0.0.1',
13         'port'=>'6379'
14     ]);
15 }
16 //记录中奖日志
17 function writeLog($msg, $v){
18     $log = $msg.PHP_EOL;
19     file_put_contents("log/$v.log", $log, FILE_APPEND);
20 }
21 //v1版本计数器
22 function v1(){
23     
24 }
  1. 请问
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/qiusanqi/p/11947209.html