代码清单 2-7 展示了一个计数器实现,这个程序把计数器的值储存在一个字符串键里面,并通过 命令和 DECRBY
命令,对计数器的值执行加法操作和减法操作;在有需要的时候,用户还可以通过调用 GETSET
方法来清零计数器并取得清零之前的旧值。
代码清单 2-7 使用字符串键实现的计数器:/string/counter.py
- def increase(self, n=1):
以上定义表明,如果用户直接以无参数的方式调用 increase()
或者 decrease()
,那么参数 n
的值将会被设置为 1
。
在设置了参数 n
之后, 方法和 decrease()
方法会分别调用 INCRBY
命令和 DECRBY
命令,根据参数 n
的值,对给定的键执行加法或减法操作:
- # increase() 方法
- return self.client.incr(self.key, n)
如果用户在调用
incr()
方法时没有给定增量,那么incr()
方法就默认用户指定的增量为1
,并执行INCR
命令;另一方面,如果用户在调用
incr()
方法时给定了增量,那么incr()
方法就会执行INCRBY
命令,并根据给定的增量执行加法操作;
以下代码展示了这个计数器的使用方法:
- >>> from redis import Redis
- >>> from counter import Counter
- >>> counter = Counter(client, "counter::page_view")
- >>> counter.increase() # 将计数器的值加上 1
- 1
- >>> counter.increase() # 将计数器的值加上 1
- 2
- >>> counter.increase(10) # 将计数器的值加上 10
- 12
- 11
- >>> counter.decrease(5) # 将计数器的值减去 5
- 6
- >>> counter.reset() # 重置计数器,并返回旧值
- 6
- >>> counter.get() # 返回计数器当前的值
- 0