• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Redis > Redis的使用模式之计数器模式实例

Redis的使用模式之计数器模式实例

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了redis 计数器,redis 计数,redis实例,redis应用实例,redis多实例等相关知识,希望本文的分享对您有所帮助

Redis 是目前 NoSQL 领域的当红炸子鸡,它象一把瑞士军刀,小巧、锋利、实用,特别适合解决一些使用传统关系数据库难以解决的问题。打算写一系列 Redis 使用模式的文章,深入总结介绍 Redis 常见的使用模式,以供大家参考。

常见汇总计数器

汇总计数是系统常见功能,比如网站通常需要统计注册用户数,网站总浏览次数等等。 使用 Redis 提供的基本数据类型就能实现汇总计数器,通过 incr 命令实现增加操作。

比如注册用户数,基本操作命令如下:
 # 获取注册用户数
  get total_users
  # 注册用户数增加一位
  incr total_users
</div>

按时间汇总的计数器

通常计数还要按时间统计,比如注册用户数需要按日统计,处理方法比较简单,把日期带入计数器 key 就可以。

还是注册用户计数的例子,基本操作命令如下:
# 假定操作 2014-07-06 数据
  # 获取注册用户数
  get total_users:2014-07-06
  # 2014-07-06 注册用户数增加一位
  incr total_users:2014-07-06
  # 设置 48 小时过期时间 172800 = 48 * 60 * 60
  expire total_users:2014-07-06 172800
</div>

为计数器设置一个 48 小时的过期时间是为了节省计数器占用空间,毕竟 redis 是内存数据库,可以在过期前执行一个任务把计数器存入关系数据库。

速度控制

速度控制也是 Redis 一种常见的计数用途,比如有一个 API 服务,希望控制每一个 IP 每秒请求数不超过 10 次,可以用 IP 和 时间秒作为 key 设置一个计数器,实现控制,伪代码如下所示:
 # 每秒最大请求数
  MAX_REQUESTS_PER_SECOND = 10

  # 检查 ip 请求限制
  # @param ip
  # @raise 超过限制,抛出 RuntimeError 异常

  def check_request_limitation_for_ip(ip)
    time_tick = Time.now.to_i
    key = "#{ip}:#{time_tick}"
    num = $redis.get(key).to_i
    if num > MAX_REQUEST_PER_SECOND
      raise 'too many requests'
    else
      $redis.incr(key)
      $redis.expire(key, 10)
    end
  end
</div>

使用 Hash 数据类型维护大量计数器

有时候需要维护大量计数器,比如每一个论坛主题的查看数,比如每一个用户访问页面次数,因为论坛主题和用户基数可能很大,直接基于论坛主题或用户 ID 生成计数器的话,占用 Redis 资源还是相当可观的,这时可以用 Hash 数据类型压缩所需资源。

比如,对应论坛主题查看计数,可以由模式
  key: topic:<topic_id>:views
  value: view count (integer)
</div>

转换为模式:
 key: topic:views
  value: hash
    hash key: <topic_id>
    hash value: view count (integer)
</div>

总结:利用 Redis 实现计数器,可以简单高效实现各种计数功能。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Redis的使用模式之计数器模式实例

相关文章

  • 2017-05-11Centos7下Redis3.2.8最新版本安装教程
  • 2017-05-11一起raid数据恢复及回迁成功的案例
  • 2017-05-11Windows下Redis的安装使用教程
  • 2017-08-28centos安装redis
  • 2017-05-11redis中使用java脚本实现分布式锁
  • 2017-05-11Redis服务器的启动过程分析
  • 2017-05-11Redis批量删除KEY的方法
  • 2017-05-11Redis配置文件详解
  • 2017-10-15redis 自动关闭订单
  • 2017-05-11Redis主从复制问题和扩容问题的解决思路

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • CentOS 7下安装 redis 3.0.6并配置集群的过程详解
    • Redis中的动态字符串学习教程
    • CentOS下Redis数据库的基本安装与配置教程
    • Redis 命令整理并说明如何使用
    • 浅谈redis的maxmemory设置以及淘汰策略
    • 通过 Redis 实现 RPC 远程方法调用(支持多种编程语言)
    • 用Redis实现微博关注关系
    • Redis教程(一):Redis简介
    • Redis教程(十三):管线详解
    • 在Redis数据库中实现分布式速率限制的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有