Redis 入门 3.2 字符串类型
3.2.2 命令
1. 获得符合规则的键名列表
SET key value
GET key
SET和GET是Redis中最简单的两个命令,他们实现的功能和编程语言中的读写变量相似。
2. 递增数字
INCR key
当储存的字符串是整数形式的,Redis提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增后的值。
有些读者回想到可以借助GET和SET两个命令自己实现incr函数,伪代码如下:
def incr($key)
$value = GET $key
if not $value
$value = 0
$value = $value + 1
SET $key, $value
return $value
如果Redis同时只连接了一个客户端,那么上面的代码没有任何问题(其实还没有加入错误处理,不过这并不是此处讨论的重点)。可当同一时间有多个客户端连接到Redis是则有坑出现竞态条件(race condition)。例如,有两个客户端A和B都要执行我们自己实现的incr函数并准备将同一个键的键值递增,当它们恰好同时执行到代码第二行时二者读取到的键值是一样的,如”5“,而后它们个自己讲该值递增到”6“并使用SET命令讲其赋值个原键,结果虽然对键执行了量词递增操作(atomic operation),无论多少个客户端同时连接,都不会出现上述情况。之后我们还会介绍利用事务和脚本实现自定义的原子操作的方法。
本文介绍了Redis中字符串类型的基本操作,包括SET和GET命令,以及递增数字的INCR命令。通过对比自定义incr函数和Redis内置INCR命令,阐述了原子操作的重要性,尤其是在多客户端并发场景下。

2460

被折叠的 条评论
为什么被折叠?



