返回顶部
首页 > 资讯 > 数据库 >Redis的使用模式之计数器模式实例
  • 246
分享到

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

模式计数器实例 2022-06-04 17:06:01 246人浏览 独家记忆
摘要

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

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

常见汇总计数器

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

比如注册用户数,基本操作命令如下:

# 获取注册用户数

  get total_users

  # 注册用户数增加一位

  incr total_users

按时间汇总的计数器

通常计数还要按时间统计,比如注册用户数需要按日统计,处理方法比较简单,把日期带入计数器 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

为计数器设置一个 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

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

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

比如,对应论坛主题查看计数,可以由模式

key: topic:<topic_id>:views

  value: view count (integer)

转换为模式:

key: topic:views

  value: hash

    hash key: <topic_id>

    hash value: view count (integer)

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

您可能感兴趣的文档:

--结束END--

本文标题: Redis的使用模式之计数器模式实例

本文链接: https://lsjlt.com/news/11723.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Redis的使用模式之计数器模式实例
    Redis 是目前 NoSQL 领域的当红炸子鸡,它象一把瑞士军刀,小巧、锋利、实用,特别适合解决一些使用传统关系数据库难以解决的问题。打算写一系列 Redis 使用模式的文章,深入总结介绍 Redis 常...
    99+
    2022-06-04
    模式 计数器 实例
  • Android设计模式之单例模式实例
    目录一、概念1.1 单例类1.2 优缺点1.2.1 优点1.2.2 缺点二、创建单例模式的方法2.1 饿汉式2.2 懒汉式2.2.1 懒汉式(非线程安全)2.2.2 懒汉式(线程安全...
    99+
    2023-05-16
    Android单例模式 Android设计模式单例模式
  • Android设计模式之单例模式
      1、单例模式常见情景   设计模式中,简单不过的是单例模式。先看看单例模式   Singleton模式可以是很简单的,它的全部只需要一个类可以完成(看看这章可怜的U...
    99+
    2022-06-06
    单例模式 Android
  • Java设计模式之单例模式
    目录什么是设计模式?单例模式是什么?单例模式设计的原则是什么?Java实现单例模式的5种方式?懒汉饿汉静态内部类双重校验锁DCL(Double Check Lock)枚举(num)总...
    99+
    2024-04-02
  • C#设计模式之单例模式
    单例模式也是创建型模式的一种,也是23种设计模式中比较简单的一种。见名思意,在整个软件系统中,只有某个类型的一个对象,并且访问他的地方也只有一个,也就是只有一个全局对象访问点,这个实...
    99+
    2024-04-02
  • python设计模式之单例模式
    单例模式是一种创建型设计模式,它确保一个类有且只有一个特定类型的对象,并提供全局访问点。其意图为: 确保类有且只有一个对象被创建 为对象提供一个访问点,使程序可以全局访问该对象 控制共享资源的并行访问 简单理解:单例...
    99+
    2023-01-30
    模式 python
  • JavaScript设计模式之单例模式
    目录单例模式实现单例模式透明的单例模式用代理实现单例模式惰性单例通用的惰性单例小结单例模式 单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池、全局缓存、浏览器中的 ...
    99+
    2022-11-13
    JavaScript设计模式 JavaScript单例模式
  • PHP设计模式之迭代器模式的使用
    目录Gof类图及解释实例一说到这个模式,就不得不提循环语句。在《大话设计模式》中,作者说道这个模式现在的学习意义更大于实际意义,这是为什么呢?当然就是被foreach这货给整得。任何...
    99+
    2024-04-02
  • C#设计模式之装饰器模式实例详解
    最近踢了场球,9人制比赛,上半场我们采用防守阵型效果不佳,下半场采用进攻阵型取得了比赛的主动。我们上下半场所采取的策略,似乎可以用"装饰器"模式实现一遍。 首先肯...
    99+
    2024-04-02
  • 如何使用设计模式系列之单例模式
    这篇文章主要介绍“如何使用设计模式系列之单例模式”,在日常操作中,相信很多人在如何使用设计模式系列之单例模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用设计模式系列...
    99+
    2024-04-02
  • .Net设计模式之单例模式(Singleton)
    一、动机(Motivation) 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。 如何绕过常规的构造器,提供一种...
    99+
    2024-04-02
  • 【Java】设计模式之单例模式与工厂模式
    ✅作者简介:热爱后端语言的大学生,CSDN内容合伙人 ✨精品专栏:C++面向对象 🔥系列专栏:JavaSE精品总结 文章目录   前言1、设计模式概念及分类2、单例模式2...
    99+
    2023-10-04
    java 单例模式 设计模式
  • Java设计模式之模板方法模式实例分析
    本文小编为大家详细介绍“Java设计模式之模板方法模式实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java设计模式之模板方法模式实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。模板方法模式模板方...
    99+
    2023-06-29
  • Java设计模式之组合模式实例分析
    这篇文章主要介绍“Java设计模式之组合模式实例分析”,在日常操作中,相信很多人在Java设计模式之组合模式实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java设计模式之组合模式实例分析”的疑惑有所...
    99+
    2023-06-30
  • Java设计模式之策略模式实例分析
    这篇文章主要介绍“Java设计模式之策略模式实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java设计模式之策略模式实例分析”文章能帮助大家解决问题。1.基本介绍1)策略模式(Strateg...
    99+
    2023-06-30
  • java设计模式之怎么实现单例模式
    这篇文章主要介绍了java设计模式之怎么实现单例模式的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java设计模式之怎么实现单例模式文章都会有所收获,下面我们一起来看看吧。单元素的枚举类型经常成为实现 Sing...
    99+
    2023-07-04
  • JavaScript设计模式适配器模式实例
    前言: 适配器设计模式可以用生活中常用的笔记本电脑来做例子,笔记本使用电压在20v左右,但是我们家用电压在220v左右,所以我们希望用家用电适配对应的笔记本电压,这个时候就需要使用电...
    99+
    2024-04-02
  • Android设计模式系列之单例模式
     单例模式,可以说是GOF的23种设计模式中最简单的一个。 这个模式相对于其他几个模式比较独立,它只负责控制自己的实例化数量单一(而不是考虑为用户产生什么样的实例),...
    99+
    2022-06-06
    单例模式 Android
  • Java设计模式之单例模式简介
    目录一、饿汉式(静态常量)二、饿汉式(静态代码块)三、懒汉式(线程不安全)四、懒汉式(线程安全,同步方法)五、懒汉式(线程不安全,同步代码块)六、双重检查( DCL )七、静态内部类...
    99+
    2024-04-02
  • JAVA设计模式之单例模式详解
    目录前言一、单例模式是什么?二、懒汉式单例三、饿汉式单例四、双重校验锁总结前言 在之前的文章里已经介绍了设计模式以及设计原则的概念,接下来我们从单例模式入手深入学习几种常用的JAVA...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作