文章目录

  • Redis应用场景-计数器
    • 计数器
      • 视频播放次数
      • 防止刷单
      • 限制登录失败次数
    • 参考文档

Redis应用场景-计数器

计数器

计数器可以分为:

  • 简单计数器,用incr就可以实现;
  • 有有效期的计数器,设置key的有效期就可以实现;
  • 简单的去重计数器,用set实现;
  • 高并发大数去重计数器,用hll实现;

视频播放次数

B站视频播放次数

简单的统计视频播放次数,不去重:

incr bilibili:counter:play:vedio:bv001

优点:精确统计,内存花销少;

缺点:不知道播放视频的都是哪些用户,不支持去重。

统计视频播放次数,按用户id去重:

# 模拟用户点播
sadd bilibili:played:vedio:bv001 uid001
sadd bilibili:played:vedio:bv001 uid002
sadd bilibili:played:vedio:bv001 uid003
sadd bilibili:played:vedio:bv001 uid001# 计算去重后的播放次数
scard bilibili:played:vedio:bv001

优点:精确统计,知道播放视频的都是哪些用户,支持去重。

缺点:内存花销大。

如果视频数量很大,且播放量很高时,又要求去重统计时,可以使用Redis HyperLogLog(HLL)来做概率计算:

# 模拟用户点播
pfadd bilibili:playedusers:vedio:bv001 uid001
pfadd bilibili:playedusers:vedio:bv001 uid002
pfadd bilibili:playedusers:vedio:bv001 uid003
pfadd bilibili:playedusers:vedio:bv001 uid001
pfadd bilibili:playedusers:vedio:bv001 uid002# 计算去重后的播放次数
pfcount bilibili:playedusers:vedio:bv001

优点:内存花销小,支持去重。

缺点:统计会有误差。

参考:

  • Reddit 如何统计每个帖子的浏览量

防止刷单

秒杀活动时,限制单个IP或用户单位时间内请求接口的次数。

特点:一个有有效期的计数器。

比如,10秒钟内单个IP请求接口次数超过5次时,提示操作过于频繁。

# 模拟客户端对商品product001发起下单
incr iplimit:product001:192.168.0.31# 设置限制有效期为10妙
expire iplimit:product001:192.168.0.31 10# 模拟客户端继续发起请求
incr iplimit:product001:192.168.0.31
incr iplimit:product001:192.168.0.31
incr iplimit:product001:192.168.0.31
incr iplimit:product001:192.168.0.31# 判断是否达到限制次数
get iplimit:product001:192.168.0.31

也可以根据用户id进行限制

incr uidlimit:product001:uid001

参考:

  • 基于Redis的防刷票、防刷短信、及所有防刷系统的设计

限制登录失败次数

3分钟内连续3次登录失败,账号被锁定5分钟。

特点:一个有效期定时器 + 一个有效期的黑名单。

# 模拟首次登录失败,设置登录失败有效期为3分钟(180秒)
incr loginfailed:user01
expire loginfailed:user01 180# 模拟继续登录失败
incr loginfailed:user01
incr loginfailed:user01# 判断登录失败次数是否达到限制
get loginfailed:user01# 锁定账号5分钟(300秒)
setex lockeduser:user01 300 user01# 判断账号是否已锁定
get lockeduser:user01

参考文档

  • https://www.tutorialspoint.com/redis/redis_hyperloglog.htm

Redis应用场景-计数器相关推荐

  1. 转载:Redis 应用场景

    2019独角兽企业重金招聘Python工程师标准>>> 1.  MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载 ...

  2. redis 数据类型详解 以及 redis适用场景场合

    redis 数据类型详解 以及 redis适用场景场合 1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访 ...

  3. 详解 Redis 应用场景及应用实例

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...

  4. Redis 应用场景和应用实例详解

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...

  5. 详解 Redis 应用场景及原理

    本文转自https://blog.csdn.net/niucsd/article/details/50966733,描述了redis实现原理和应用场景,篇幅较长,有意学习redis的同学可耐心阅读. ...

  6. 聊聊 Redis 使用场景 1

    原文地址:Redis实战(五) 聊聊Redis使用场景 博客地址:http://blog.720ui.com/ 使用场景说明 计数器 数据统计的需求非常普遍,通过原子递增保持计数.例如,点赞数.收藏数 ...

  7. redis mysql 原子计数器_使用redis的increment()方法实现计数器功能案例

    一直知道redis可以用来实现计数器功能,但是之前没有实际使用过,昨天碰到一个需求:用户扫码当天达到20次即提示:当日扫码次数达到上限! 当时就想到使用redis的递增方法increment()来实现 ...

  8. redis应用场景及实例

    redis应用场景及实例 前言 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.在这篇文章中,我们将阐述 Re ...

  9. 【转载】Redis应用场景

    NoSQL主要用于解决以下几种问题 1.少量数据存储,高速读写访问.此类产品通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景. 2.海 ...

最新文章

  1. 记录Hibernate的缓存知识
  2. mysql goldengate_oracle GoldenGate实现Oracle到MySQL数据平滑迁移
  3. 8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset
  4. 仿百度文库解决方案(一)——总体思路
  5. oss读取txt文件
  6. CPU负载均衡之EAS
  7. WordPress Exploit Scanner插件安全绕过漏洞
  8. Atitit 高级人员要看哪些源码 目录 1. Ati看过的源码 1 1.1. Ui类 1 1.2. Mvc类 1 1.3. 数据库类 1 1.4. 算法类 1 2. 看源码的意义 2 2.1. 一
  9. Pytorch中文视频教程,Pytorch实战视频教程
  10. 腾讯地图基于 WebGL实现自定义栅格图层踩坑实录
  11. 用VB打造个人版恺撒密码转换器
  12. sql注入开源网站包
  13. 英语作文计算机国际会议开幕词,英文国际会议演讲稿范文
  14. 【JAVA】-- 黄金矿工小游戏(二)(实现思路+每步代码)
  15. Vue template挂载中el和mouted的使用和区别
  16. 4.2 APIC 虚拟化
  17. 《面试无忧》--DCL单例模式为什么要用volatile修饰?
  18. DVWA关卡11:Reflected Cross Site Scripting (XSS)(反射型XSS)
  19. 常用广域网协议配—Vecloud
  20. ROS官网使用方式以及问题?

热门文章

  1. 【Zookeeper】JAVA通过ZK实现服务注册和服务发现
  2. ​AI大事件 | 特斯拉开发人工智能芯片,智能爆炸论再引热议,Pytorch新版本发布
  3. php如何将数组保存为文件的方法
  4. 被称为下一代风口的AIGC到底是什么?
  5. [多项式前缀和差分]智乃酱的静态数组维护问题多项式
  6. 下载网站风格的工具httrack
  7. python import 包_Python 基础之import导包
  8. C#操作office进行Excel图表创建,保存本地,word获取
  9. 磁盘管理—交换分区与逻辑卷
  10. 《AUTOSAR谱系分解(ETAS工具链)》之Ecus