代码清单 2-7 展示了一个计数器实现,这个程序把计数器的值储存在一个字符串键里面,并通过 命令和 DECRBY 命令,对计数器的值执行加法操作和减法操作;在有需要的时候,用户还可以通过调用 GETSET 方法来清零计数器并取得清零之前的旧值。


    代码清单 2-7 使用字符串键实现的计数器:/string/counter.py


    1. def increase(self, n=1):

    以上定义表明,如果用户直接以无参数的方式调用 increase() 或者 decrease() ,那么参数 n 的值将会被设置为 1

    在设置了参数 n 之后, 方法和 decrease() 方法会分别调用 INCRBY 命令和 DECRBY 命令,根据参数 n 的值,对给定的键执行加法或减法操作:

    1. # increase() 方法
    2. return self.client.incr(self.key, n)
    • 如果用户在调用 incr() 方法时没有给定增量,那么 incr() 方法就默认用户指定的增量为 1 ,并执行 INCR 命令;

    • 另一方面,如果用户在调用 incr() 方法时给定了增量,那么 incr() 方法就会执行 INCRBY 命令,并根据给定的增量执行加法操作;

    以下代码展示了这个计数器的使用方法:

    1. >>> from redis import Redis
    2. >>> from counter import Counter
    3. >>> counter = Counter(client, "counter::page_view")
    4. >>> counter.increase() # 将计数器的值加上 1
    5. 1
    6. >>> counter.increase() # 将计数器的值加上 1
    7. 2
    8. >>> counter.increase(10) # 将计数器的值加上 10
    9. 12
    10. 11
    11. >>> counter.decrease(5) # 将计数器的值减去 5
    12. 6
    13. >>> counter.reset() # 重置计数器,并返回旧值
    14. 6
    15. >>> counter.get() # 返回计数器当前的值
    16. 0