我正在使用Python在Redis中以5分钟间隔递增计数器,执行代码的速度非常重要。我将拥有一个排序集合,看起来像这样:
1:30 incr 1:35 incr ...
其中incr是该5分钟间隔内的点击数。
假设现在是下午1点32分,我想将1:30到1:35之间的所有点击放入该桶中。
天真地循环遍历列表并检查分钟是否在30到35之间,然后将其放入1:30桶中。是否有更Pythonic的方法来实现呢?
我正在使用Python在Redis中以5分钟间隔递增计数器,执行代码的速度非常重要。我将拥有一个排序集合,看起来像这样:
1:30 incr 1:35 incr ...
其中incr是该5分钟间隔内的点击数。
假设现在是下午1点32分,我想将1:30到1:35之间的所有点击放入该桶中。
天真地循环遍历列表并检查分钟是否在30到35之间,然后将其放入1:30桶中。是否有更Pythonic的方法来实现呢?
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)]
bucket.setdefault(minute, []).append(hit)
填充一个列表字典。 - Paulo Scardine