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 实现计数器,可以简单高效实现各种计数功能。
Redis,使用模式,计数器模式
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]