ID 通常会以数字形式出现,并且通过递增的方式来创建出新的 ID 。比如说,如果当前最新的 ID 值为 ,那么下一个 ID 就应该是 10087 ,而再下一个 ID 则是 10088 ,以此类推。

    代码清单 2-6 展示了一个使用字符串键实现的 ID 生成器,这个生成器通过执行 INCR 命令来产生新的 ID ,并且它还可以通过执行 SET 命令来保留指定数字之前的 ID ,从而避免用户为了得到某个指定的 ID 而生成大量无效 ID 。



    在这个 ID 生成器程序中,produce() 方法要做的就是调用 命令,对字符串键储存的整数值执行加一操作,并将执行加法操作之后得到的新值用作 ID 。

    另一方面,用于保留指定 ID 的 reserve() 方法是通过执行 SET 命令为键设置值来实现的:当用户把一个字符串键的值设置为 N 之后,对这个键执行 INCR 命令总是会返回比 N 更大的值,因此在效果上就相当于把所有小于等于 N 的 ID 都保留下来了。

    为此,reserve() 方法在设置字符串键时使用了带有 NX 选项的 SET 命令,从而确保了对键的设置操作只会在键不存在的情况下执行:

    以下代码展示了这个 ID 生成器的使用方法: