我使用python以5分钟的间隔在redis中递增计数器,执行代码的速度非常重要。我将有一个看起来像这样的排序集:
1:30 incr 1:35 incr ...
其中incr是5分钟间隔之间的命中数。
让我们说我是在下午1:32,我希望在1:30到1:35之间将所有的点击放在那个桶中。
天真地,我可以循环浏览一个列表并检查30到35之间的分钟,并放在1:30桶中。有更多的pythonic方法吗?
答案 0 :(得分:4)
from redis import Redis
r = Redis(db=1)
r.flushdb()
def store(t):
h, m = map(int, t.split(':'))
m = m - m % 5
r.zincrby('tc', '%d:%02d' % (h, m), 1)
store('1:02')
store('1:30')
store('1:32')
store('1:35')
print r.zrange('tc', 0, -1, withscores=True)
输出:
[('1:00', 1.0), ('1:35', 1.0), ('1:30', 2.0)]