摘要:高斯Redis,计数的最佳选择! 一、背景
当我们打开手机刷微博时,就要开始和各种各样的计数器打交道了。我们注册一个帐号后,微博就会给我们记录一组数据:关注数、粉丝数、动态数…;我们刷帖时,关注每天的热搜情况,微博需要为每个热搜记录一组搜索量。在这一串数据后面,是一个个计数器在工作。
计数器可以分为常规计数器和基数计数器,对于常规计数器,只需要对计数器进行简单的增减即可;对于基数计数器,需要对元素进行去重,比如统计搜索量时,需要保证每个用户的多次搜索只统计一次。对于这两种需求,Redis 都有对应的数据类型进行统计。然而开源 Redis 是一个弱一致性的数据库,在特定的场景下,弱一致的计数不能满足业务需求,为此,我们需要一个强一致的数据库进行计数。
GaussDB(for Redis)(下文简称高斯Redis),是华为自研的强一致、持久化 NoSQL 数据库,兼容 Redis5.0 协议。本文将介绍常规计数器与基数计数器的应用场景及使用高斯 Redis 实现计数。
二、常规计数器 2.1如何使用 Redis 进行常规计数Redis 实现常规计数器有两种数据类型适合:String 和 Hash。
2.1.1使用string 计数当我们需要维护的计数器数目较少,比如统计网站的注册用户数时,适合使用 String 类型的计数器。Redis 提供的 Incr 和 Decr 命令分别对 String 类型的 key 值进行增一与减一操作:
127.0.0.1:6379> SET counter 100 OK 127.0.0.1:6379> INCR counter (integer) 101 127.0.0.1:6379> DECR counter (integer) 100