diff --git a/index.rst b/index.rst index 17f5511..9c44a73 100644 --- a/index.rst +++ b/index.rst @@ -8,7 +8,7 @@ Redis命令参考简体中文版 本文是\ `《Redis Command Reference》 `_\ 的简体中文翻译版,原文共十个部分的\ **所有命令均已翻译完毕** 。 -本文所有示例代码均经过Redis 2.4.4版本测试,质量保证。 提交翻译问题、加入本项目或联系译者,请阅读\ :ref:`readme`\ 页面。 +本文所有示例代码均经过 Redis 2.4.4 版本测试,质量保证。 提交翻译问题、加入本项目或联系译者,请阅读\ :ref:`readme`\ 页面。 **目录(使用CTRL+F快速查找命令):** diff --git a/list.rst b/list.rst index 23b7e62..b63f438 100644 --- a/list.rst +++ b/list.rst @@ -11,7 +11,7 @@ **空列表** -指不包含任何元素的列表,Redis将不存在的\ ``key``\ 也视为空列表。 +指不包含任何元素的列表,Redis 将不存在的\ ``key``\ 也视为空列表。 .. include:: list/lpush.rst diff --git a/readme.rst b/readme.rst index 940cda4..04f7638 100644 --- a/readme.rst +++ b/readme.rst @@ -22,7 +22,7 @@ 报告翻译错误或加入本项目 ======================== -提交翻译错误、意见、建议,或加入本项目,请到\ `项目Github页面 `_\ 。 +提交翻译错误、意见、建议,或加入本项目,请到\ `项目 Github 页面 `_\ 。 或直接联系译者。 diff --git a/set.rst b/set.rst index 1b88210..188a57d 100644 --- a/set.rst +++ b/set.rst @@ -10,19 +10,19 @@ A = {'a', 'b', 'c'} B = {'a', 'e', 'i', 'o', 'u'} - inter(x, y): 交集,在集合x和集合y中都存在的元素。 + inter(x, y): 交集,在集合 x 和集合 y 中都存在的元素。 inter(A, B) = {'a'} - union(x, y): 并集,在集合x中或集合y中的元素,如果一个元素在x和y中都出现,那只记录一次即可。 + union(x, y): 并集,在集合 x 中或集合 y 中的元素,如果一个元素在 x 和 y 中都出现,那只记录一次即可。 union(A,B) = {'a', 'b', 'c', 'e', 'i', 'o', 'u'} - diff(x, y): 差集,在集合x中而不在集合y中的元素。 + diff(x, y): 差集,在集合 x 中而不在集合 y 中的元素。 diff(A,B) = {'b', 'c'} card(x): 基数,一个集合中元素的数量。 card(A) = 3 - 空集: 基数为0的集合。 + 空集: 基数为 0 的集合。 .. include:: set/sadd.rst diff --git a/string/append.rst b/string/append.rst index 25299e2..dcef1a7 100644 --- a/string/append.rst +++ b/string/append.rst @@ -17,16 +17,16 @@ APPEND :: - # 情况1:对不存在的key执行APPEND + # 情况1:对不存在的 key 执行 APPEND - redis> EXISTS myphone # 确保myphone不存在 + redis> EXISTS myphone # 确保 myphone 不存在 (integer) 0 - redis> APPEND myphone "nokia" # 对不存在的key进行APPEND,等同于SET myphone "nokia" + redis> APPEND myphone "nokia" # 对不存在的 key 进行 APPEND,等同于 SET myphone "nokia" (integer) 5 # 字符长度 - # 情况2:对字符串进行APPEND + # 情况2:对字符串进行 APPEND redis> APPEND myphone " - 1110" (integer) 12 # 长度从5个字符增加到12个字符 diff --git a/string/decr.rst b/string/decr.rst index 697cb28..84fe400 100644 --- a/string/decr.rst +++ b/string/decr.rst @@ -23,7 +23,7 @@ DECR :: - # 情况1:对存在的数字值key进行DECR + # 情况1:对存在的数字值 key 进行 DECR redis> SET failure_times 10 OK @@ -32,7 +32,7 @@ DECR (integer) 9 - # 情况2:对不存在的key值进行DECR + # 情况2:对不存在的 key 值进行 DECR redis> EXISTS count (integer) 0 @@ -41,7 +41,7 @@ DECR (integer) -1 - # 情况3:对存在但不是数值的key进行DECR + # 情况3:对存在但不是数值的 key 进行 DECR redis> SET company YOUR_CODE_SUCKS.LLC OK diff --git a/string/decrby.rst b/string/decrby.rst index b3c43f9..a330f0a 100644 --- a/string/decrby.rst +++ b/string/decrby.rst @@ -23,7 +23,7 @@ DECRBY :: - # 情况1:对存在的数值key进行DECRBY + # 情况1:对存在的数值 key 进行 DECRBY redis> SET count 100 OK @@ -32,7 +32,7 @@ DECRBY (integer) 80 - # 情况2:对不存在的key进行DECRBY + # 情况2:对不存在的 key 进行DECRBY redis> EXISTS pages (integer) 0 diff --git a/string/getbit.rst b/string/getbit.rst index 87dc322..157d0cf 100644 --- a/string/getbit.rst +++ b/string/getbit.rst @@ -17,7 +17,7 @@ GETBIT :: - # 情况1:对不存在的key/不存在的offset进行GETBIT, + # 情况1:对不存在的 key 或不存在的 offset 进行 GETBIT, # 默认为0 redis> EXISTS bit @@ -27,7 +27,7 @@ GETBIT (integer) 0 - # 情况2:对已存在的offset进行GETBIT + # 情况2:对已存在的 offset 进行 GETBIT redis> SETBIT bit 10086 1 (integer) 0 diff --git a/string/getrange.rst b/string/getrange.rst index c9a1510..54a1d53 100644 --- a/string/getrange.rst +++ b/string/getrange.rst @@ -19,7 +19,7 @@ GETRANGE 截取得出的子字符串。 .. note:: - 在<=2.0的版本里,GETRANGE被叫作SUBSTR。 + 在<=2.0的版本里,GETRANGE 被叫作 SUBSTR。 :: diff --git a/string/getset.rst b/string/getset.rst index 71636c3..a2708bf 100644 --- a/string/getset.rst +++ b/string/getset.rst @@ -21,10 +21,10 @@ GETSET redis> EXISTS mail (integer) 0 - redis> GETSET mail xxx@google.com # 因为mail之前不存在,没有旧值,返回nil + redis> GETSET mail xxx@google.com # 因为 mail 之前不存在,没有旧值,返回 nil (nil) - redis> GETSET mail xxx@yahoo.com # mail被更新,旧值被返回 + redis> GETSET mail xxx@yahoo.com # mail 被更新,旧值被返回 "xxx@google.com" 模式 @@ -41,7 +41,7 @@ GETSET redis> INCR mycount (integer) 11 - redis> GETSET mycount 0 # 一个原子内完成GET mycount和SET mycount 0操作 + redis> GETSET mycount 0 # 一个原子内完成 GET mycount 和 SET mycount 0 操作 "11" redis> GET mycount diff --git a/string/incr.rst b/string/incr.rst index a8fa879..cc0505a 100644 --- a/string/incr.rst +++ b/string/incr.rst @@ -1,4 +1,4 @@ -.. _incr: + .. _incr: INCR ===== @@ -11,7 +11,7 @@ INCR 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 -本操作的值限制在64位(bit)有符号数字表示之内。 +本操作的值限制在 64 位(bit)有符号数字表示之内。 **时间复杂度:** O(1) @@ -20,7 +20,7 @@ INCR 执行\ `INCR`_\ 命令之后\ ``key``\ 的值。 .. note:: - 这是一个针对字符串的操作,因为Redis没有专用的整数类型,所以key内储存的字符串被解释为十进制64位有符号整数来执行INCR操作。 + 这是一个针对字符串的操作,因为 Redis 没有专用的整数类型,所以 key 内储存的字符串被解释为十进制 64 位有符号整数来执行 INCR 操作。 :: @@ -30,7 +30,7 @@ INCR redis> INCR page_view (integer) 21 - redis> GET page_view # 数字值在Redis中以字符串的形式保存 + redis> GET page_view # 数字值在 Redis 中以字符串的形式保存 "21" 模式:计数器 diff --git a/string/incrby.rst b/string/incrby.rst index 458e97c..dd69f78 100644 --- a/string/incrby.rst +++ b/string/incrby.rst @@ -11,7 +11,7 @@ INCRBY 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 -本操作的值限制在64位(bit)有符号数字表示之内。 +本操作的值限制在 64 位(bit)有符号数字表示之内。 关于更多递增(increment)/递减(decrement)操作信息,参见\ `INCR`_\ 命令。 @@ -23,7 +23,7 @@ INCRBY :: - # 情况1:key存在且是数字值 + # 情况1:key 存在且是数字值 redis> SET rank 50 # 设置rank为50 OK @@ -35,7 +35,7 @@ INCRBY "70" - # 情况2:key不存在 + # 情况2:key 不存在 redis> EXISTS counter (integer) 0 @@ -47,7 +47,7 @@ INCRBY "30" - # 情况3:key不是数字值 + # 情况3:key 不是数字值 redis> SET book "long long ago..." OK diff --git a/string/incrbyfloat.rst b/string/incrbyfloat.rst index 79b9f70..d9c84ea 100644 --- a/string/incrbyfloat.rst +++ b/string/incrbyfloat.rst @@ -17,7 +17,7 @@ INCRBYFLOAT 当以下任意一个条件发生时,返回一个错误: -- ``key`` 的值不是字符串类型(因为 redis 中的数字和浮点数都以字符串的形式保存,所以它们都属于字符串类型) +- ``key`` 的值不是字符串类型(因为 Redis 中的数字和浮点数都以字符串的形式保存,所以它们都属于字符串类型) - ``key`` 当前的值或者给定的增量 ``increment`` 不能解释(parse)为双精度浮点数(double precision floating point number) **可用版本:** diff --git a/string/mget.rst b/string/mget.rst index 70b7164..7d9ce04 100644 --- a/string/mget.rst +++ b/string/mget.rst @@ -16,7 +16,7 @@ MGET :: - redis> MSET name huangz twitter twitter.com/huangz1990 #用MSET一次储存多个值 + redis> MSET name huangz twitter twitter.com/huangz1990 #用 MSET 一次储存多个值 OK redis> MGET name twitter @@ -26,7 +26,7 @@ MGET redis> EXISTS fake_key (integer) 0 - redis> MGET name fake_key # 当MGET中有不存在key的情况 + redis> MGET name fake_key # 当 MGET 中有不存在 key 的情况 1) "huangz" 2) (nil) diff --git a/string/mset.rst b/string/mset.rst index f8b6c6f..a596adf 100644 --- a/string/mset.rst +++ b/string/mset.rst @@ -22,12 +22,12 @@ MSET redis> MSET date "2011.4.18" time "9.09a.m." weather "sunny" OK - redis> KEYS * # 确保指定的三个key-value对被插入 + redis> KEYS * # 确保指定的三个 key-value 对被插入 1) "time" 2) "weather" 3) "date" - redis> SET google "google.cn" # MSET覆盖旧值的例子 + redis> SET google "google.cn" # MSET 覆盖旧值的例子 OK redis> MSET google "google.hk" diff --git a/string/msetnx.rst b/string/msetnx.rst index 01c2b66..78c0b74 100644 --- a/string/msetnx.rst +++ b/string/msetnx.rst @@ -20,7 +20,7 @@ MSETNX :: - # 情况1:对不存在的key进行MSETNX + # 情况1:对不存在的 key 进行 MSETNX redis> MSETNX rmdbs "MySQL" nosql "MongoDB" key-value-store "redis" (integer) 1 @@ -28,13 +28,13 @@ MSETNX # 情况2:对已存在的key进行MSETNX - redis> MSETNX rmdbs "Sqlite" language "python" # rmdbs键已经存在,操作失败 + redis> MSETNX rmdbs "Sqlite" language "python" # rmdbs 键已经存在,操作失败 (integer) 0 - redis> EXISTS language # 因为操作是原子性的,language没有被设置 + redis> EXISTS language # 因为操作是原子性的,language 没有被设置 (integer) 0 - redis> GET rmdbs # rmdbs没有被修改 + redis> GET rmdbs # rmdbs 没有被修改 "MySQL" redis> MGET rmdbs nosql key-value-store diff --git a/string/set.rst b/string/set.rst index 1ea5896..7b97f64 100644 --- a/string/set.rst +++ b/string/set.rst @@ -17,7 +17,7 @@ SET :: - # 情况1:对字符串类型的key进行SET + # 情况1:对字符串类型的 key 进行 SET redis> SET apple www.apple.com OK @@ -26,7 +26,7 @@ SET "www.apple.com" - # 情况2:对非字符串类型的key进行SET + # 情况2:对非字符串类型的 key 进行 SET redis> LPUSH greet_list "hello" # 建立一个列表 (integer) 1 diff --git a/string/setbit.rst b/string/setbit.rst index bfecaa6..d8df894 100644 --- a/string/setbit.rst +++ b/string/setbit.rst @@ -22,7 +22,7 @@ SETBIT **返回值:** 指定偏移量原来储存的位。 -.. warning:: 对使用大的\ ``offset``\ 的\ `SETBIT`_\ 操作来说,内存分配可能造成Redis服务器被阻塞。具体参考\ `SETRANGE`_\ 命令,warning(警告)部分。 +.. warning:: 对使用大的\ ``offset``\ 的\ `SETBIT`_\ 操作来说,内存分配可能造成 Redis 服务器被阻塞。具体参考\ `SETRANGE`_\ 命令,warning(警告)部分。 :: diff --git a/string/setex.rst b/string/setex.rst index 39229c8..d59f2b6 100644 --- a/string/setex.rst +++ b/string/setex.rst @@ -16,7 +16,7 @@ SETEX SET key value EXPIRE key seconds # 设置生存时间 -不同之处是,\ `SETEX`_\ 是一个原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在Redis用作缓存时,非常实用。 +不同之处是,\ `SETEX`_\ 是一个原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在 Redis 用作缓存时,非常实用。 **时间复杂度:** O(1) @@ -27,7 +27,7 @@ SETEX :: - # 情况1:key不存在 + # 情况1:key 不存在 redis> SETEX cache_user_id 60 10086 OK @@ -39,7 +39,7 @@ SETEX (integer) 49 - # 情况2:key已经存在,key被覆写 + # 情况2:key 已经存在,key 被覆写 redis> SET cd "timeless" OK diff --git a/string/setnx.rst b/string/setnx.rst index f835e27..801dc27 100644 --- a/string/setnx.rst +++ b/string/setnx.rst @@ -9,7 +9,7 @@ SETNX 若给定的\ ``key``\ 已经存在,则\ `SETNX`_\ 不做任何动作。 -\ `SETNX`_\ 是"SET if Not eXists"(如果不存在,则SET)的简写。 +\ `SETNX`_\ 是"SET if Not eXists"(如果不存在,则 SET)的简写。 **时间复杂度:** O(1) @@ -20,13 +20,13 @@ SETNX :: - redis> EXISTS job # job不存在 + redis> EXISTS job # job 不存在 (integer) 0 - redis> SETNX job "programmer" # job设置成功 + redis> SETNX job "programmer" # job 设置成功 (integer) 1 - redis> SETNX job "code-farmer" # job设置失败 + redis> SETNX job "code-farmer" # job 设置失败 (integer) 0 redis> GET job # 没有被覆盖 @@ -47,31 +47,31 @@ SETNX 上面的锁算法有一个问题:如果因为客户端失败、崩溃或其他原因导致没有办法释放锁的话,怎么办? -这种状况可以通过检测发现——因为上锁的\ ``key``\ 保存的是unix时间戳,假如\ ``key``\ 值的时间戳小于当前的时间戳,表示锁已经不再有效。 +这种状况可以通过检测发现——因为上锁的\ ``key``\ 保存的是 unix 时间戳,假如\ ``key``\ 值的时间戳小于当前的时间戳,表示锁已经不再有效。 但是,当有多个客户端同时检测一个锁是否过期并尝试释放它的时候,我们不能简单粗暴地删除死锁的\ ``key``\ ,再用\ `SETNX`_\ 上锁,因为这时竞争条件(race condition)已经形成了: -* C1和C2读取\ ``lock.foo``\ 并检查时间戳,\ `SETNX`_\ 都返回\ ``0``\ ,因为它已经被C3锁上了,但C3在上锁之后就崩溃(crashed)了。 -* C1向\ ``lock.foo``\ 发送\ :ref:`del`\ 命令。 -* C1向\ ``lock.foo``\ 发送\ `SETNX`_\ 并成功。 -* C2向\ ``lock.foo``\ 发送\ :ref:`del`\ 命令。 -* C2向\ ``lock.foo``\ 发送\ `SETNX`_\ 并成功。 -* 出错:因为竞争条件的关系,C1和C2两个都获得了锁。 +* C1 和 C2 读取\ ``lock.foo``\ 并检查时间戳,\ `SETNX`_\ 都返回\ ``0``\ ,因为它已经被 C3 锁上了,但 C3 在上锁之后就崩溃(crashed)了。 +* C1 向\ ``lock.foo``\ 发送\ :ref:`del`\ 命令。 +* C1 向\ ``lock.foo``\ 发送\ `SETNX`_\ 并成功。 +* C2 向\ ``lock.foo``\ 发送\ :ref:`del`\ 命令。 +* C2 向\ ``lock.foo``\ 发送\ `SETNX`_\ 并成功。 +* 出错:因为竞争条件的关系,C1 和 C2 两个都获得了锁。 -幸好,以下算法可以避免以上问题。来看看我们聪明的C4客户端怎么办: +幸好,以下算法可以避免以上问题。来看看我们聪明的 C4 客户端怎么办: -* C4向\ ``lock.foo``\ 发送\ `SETNX`_\ 命令。 -* 因为崩溃掉的C3还锁着\ ``lock.foo``\ ,所以Redis向C4返回\ ``0``\ 。 -* C4向\ ``lock.foo``\ 发送\ `GET`_\ 命令,查看\ ``lock.foo``\ 的锁是否过期。如果不,则休眠(sleep)一段时间,并在之后重试。 -* 另一方面,如果\ ``lock.foo``\ 内的unix时间戳比当前时间戳老,C4执行以下命令: +* C4 向\ ``lock.foo``\ 发送\ `SETNX`_\ 命令。 +* 因为崩溃掉的 C3 还锁着\ ``lock.foo``\ ,所以 Redis 向 C4 返回\ ``0``\ 。 +* C4 向\ ``lock.foo``\ 发送\ `GET`_\ 命令,查看\ ``lock.foo``\ 的锁是否过期。如果不,则休眠(sleep)一段时间,并在之后重试。 +* 另一方面,如果\ ``lock.foo``\ 内的 unix 时间戳比当前时间戳老,C4 执行以下命令: ``GETSET lock.foo `` -* 因为\ `GETSET`_\ 的作用,C4可以检查看\ `GETSET`_\ 的返回值,确定\ ``lock.foo``\ 之前储存的旧值仍是那个过期时间戳,如果是的话,那么C4获得锁。 -* 如果其他客户端,比如C5,比C4更快地执行了\ `GETSET`_\ 操作并获得锁,那么C4的\ `GETSET`_\ 操作返回的就是一个未过期的时间戳(C5设置的时间戳)。C4只好从第一步开始重试。 +* 因为\ `GETSET`_\ 的作用,C4 可以检查看\ `GETSET`_\ 的返回值,确定\ ``lock.foo``\ 之前储存的旧值仍是那个过期时间戳,如果是的话,那么 C4 获得锁。 +* 如果其他客户端,比如 C5,比 C4 更快地执行了\ `GETSET`_\ 操作并获得锁,那么 C4 的\ `GETSET`_\ 操作返回的就是一个未过期的时间戳(C5 设置的时间戳)。C4 只好从第一步开始重试。 -| 注意,即便C4的\ `GETSET`_\ 操作对\ ``key``\ 进行了修改,这对未来也没什么影响。 -| (这里是不是有点问题?C4的确是可以重试,但C5怎么办?它的锁的过期被C4修改了。——译注) +| 注意,即便 C4 的\ `GETSET`_\ 操作对\ ``key``\ 进行了修改,这对未来也没什么影响。 +| (这里是不是有点问题?C4 的确是可以重试,但 C5 怎么办?它的锁的过期被 C4 修改了。——译注) .. warning:: 为了让这个加锁算法更健壮,获得锁的客户端应该常常检查过期时间以免锁因诸如\ :ref:`DEL`\ 等命令的执行而被意外解开,因为客户端失败的情况非常复杂,不仅仅是崩溃这么简单,还可能是客户端因为某些操作被阻塞了相当长时间,紧接着\ :ref:`DEL`\ 命令被尝试执行(但这时锁却在另外的客户端手上)。 diff --git a/string/setrange.rst b/string/setrange.rst index f21adfa..6c60c5b 100644 --- a/string/setrange.rst +++ b/string/setrange.rst @@ -11,23 +11,23 @@ SETRANGE \ `SETRANGE`_\ 命令会确保字符串足够长以便将\ ``value``\ 设置在指定的偏移量上,如果给定\ ``key``\ 原来储存的字符串长度比偏移量小(比如字符串只有\ ``5``\ 个字符长,但你设置的\ ``offset``\ 是\ ``10``\ ),那么原字符和偏移量之间的空白将用零比特(zerobytes,\ ``"\x00"``\ )来填充。 -注意你能使用的最大偏移量是2^29-1(536870911),因为Redis的字符串被限制在512兆(megabytes)内。如果你需要使用比这更大的空间,你得使用多个\ ``key``\ 。 +注意你能使用的最大偏移量是2^29-1(536870911),因为Redis的字符串被限制在 512 兆(megabytes)内。如果你需要使用比这更大的空间,你得使用多个\ ``key``\ 。 **时间复杂度:** | 对小(small)的字符串,平摊复杂度O(1)。(关于什么字符串是"小"的,请参考\ `APPEND`_\ 命令) - | 否则为O(M),M为value参数的长度。 + | 否则为O(M),M 为 value 参数的长度。 **返回值:** 被\ `SETRANGE`_\ 修改之后,字符串的长度。 .. warning:: - 当生成一个很长的字符串时,Redis需要分配内存空间,该操作有时候可能会造成服务器阻塞(block)。在2010年的Macbook Pro上,设置偏移量为536870911(512MB内存分配),耗费约300毫秒, - 设置偏移量为134217728(128MB内存分配),耗费约80毫秒,设置偏移量33554432(32MB内存分配),耗费约30毫秒,设置偏移量为8388608(8MB内存分配),耗费约8毫秒。 + 当生成一个很长的字符串时,Redis 需要分配内存空间,该操作有时候可能会造成服务器阻塞(block)。在2010年的Macbook Pro上,设置偏移量为 536870911(512MB 内存分配),耗费约 300 毫秒, + 设置偏移量为 134217728(128MB 内存分配),耗费约 80 毫秒,设置偏移量 33554432(32MB 内存分配),耗费约 30 毫秒,设置偏移量为 8388608(8MB 内存分配),耗费约 8 毫秒。 注意若首次内存分配成功之后,再对同一个\ ``key``\ 调用\ `SETRANGE`_\ 操作,无须再重新内存。 :: - # 情况1:对非空字符串进行SETRANGE + # 情况1:对非空字符串进行 SETRANGE redis> SET greeting "hello world" OK @@ -39,12 +39,12 @@ SETRANGE "hello Redis" - # 情况2:对空字符串/不存在的key进行SETRANGE + # 情况2:对空字符串/不存在的 key 进行 SETRANGE redis> EXISTS empty_string (integer) 0 - redis> SETRANGE empty_string 5 "Redis!" # 对不存在的key使用SETRANGE + redis> SETRANGE empty_string 5 "Redis!" # 对不存在的 key 使用 SETRANGE (integer) 11 redis> GET empty_string # 空白处被"\x00"填充 @@ -53,6 +53,6 @@ SETRANGE 模式 ------- -因为有了\ `SETRANGE`_\ 和\ `GETRANGE`_\ 命令,你可以将Redis字符串用作具有O(1)随机访问时间的线性数组。这在很多真实用例中都是非常快速且高效的储存方式。 +因为有了\ `SETRANGE`_\ 和\ `GETRANGE`_\ 命令,你可以将 Redis 字符串用作具有O(1)随机访问时间的线性数组。这在很多真实用例中都是非常快速且高效的储存方式。 diff --git a/transaction/discard.rst b/transaction/discard.rst index b22b843..4a5d312 100644 --- a/transaction/discard.rst +++ b/transaction/discard.rst @@ -7,7 +7,7 @@ DISCARD 取消事务,放弃执行事务块内的所有命令。 -如果正在使用 `WATCH`_ 命令监视某个(或某些) key ,那么取消所有监视,等同于执行命令 `UNWATCH`_ 。 +如果正在使用 `WATCH`_ 命令监视某个(或某些) key,那么取消所有监视,等同于执行命令 `UNWATCH`_ 。 **时间复杂度:** O(1)。