加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Redis 多方法实现计数器成果

发布时间:2019-10-17 10:28:59 所属栏目:编程 来源:yanglbme
导读:计数器在许多网站中都举办了普及的应用,好比文章的点赞数、页面的赏识数、网站的访客数、视频的播放数等等。在这篇文章里,我会行使 Redis 的三种数据范例,来别离实现计数器的成果。 请跟从我一路来看看吧。 行使字符串键 下面代码演示了怎样操作 Redis

在上面两个例子中,当举措被执行时,措施可以挪用一次 incr() 累加计数的要领。某些场景下,我们也许必要对特定的举措,仅仅计数一次。什么叫“仅仅计数一次”?就是说,统一个用户/IP,多次会见某个页面,计数器只会将计数值增进 1。来看看以下代码:

  1. from redis import Redis 
  2.  
  3. class Counter: 
  4.     def __init__(self, client: Redis, key: str): 
  5.         self.client = client 
  6.         self.key = key 
  7.  
  8.     def add(self, item: str) -> bool: 
  9.         """计数累加,若计数之前item已存在,放回False;不然返回True""" 
  10.         return self.client.sadd(self.key, item) == 1 
  11.  
  12.     def get_cnt(self): 
  13.         """获取当前计数的值""" 
  14.         return self.client.scard(self.key) 
  15.  
  16.  
  17. if __name__ == '__main__': 
  18.     client = Redis(decode_responses=True) 
  19.     counter = Counter(client, 'uv') 
  20.     counter.add('user1') 
  21.     counter.add('user2') 
  22.     counter.add('user1')  # 一再放入 
  23.     print(counter.get_cnt())  # 2 

在现实应用中,以上代码必要稍作窜改,但根基的思绪稳固。怎么样,你学会了吗?

【编辑保举】

  1. 什么?Redis的QPS是MySQL的100倍?
  2. 记一次找因Redis行使不妥导致应用卡死Bug的进程
  3. Redis内存满了怎么办……
  4. Redis缓存击穿、缓存穿透、缓存雪崩
【责任编辑:华轩 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读