3.2 HSET:为字段设置值
用户可以通过执行HSET命令为散列中的指定字段设置值:
HSET hash field value
根据给定的字段是否已经存在于散列中,HSET命令的行为也会有所不同:
●如果给定字段并不存在于散列当中,那么这次设置就是一次创建操作,命令将在散列里面关联起给定的字段和值,然后返回1。
●如果给定的字段原本已经存在于散列里面,那么这次设置就是一次更新操作,命令将使用用户给定的新值去覆盖字段原有的旧值,然后返回0。
举个例子,通过执行以下HSET命令,我们可以创建出一个包含了4个字段的散列,这4个字段分别存储了文章的标题、内容、作者以及创建日期:
redis> HSET article::10086 title "greeting" (integer) 1 redis> HSET article::10086 content "hello world" (integer) 1 redis> HSET article::10086 author "peter" (integer) 1 redis> HSET article::10086 created_at "1442744762.631885" (integer) 1
图3-3展示了以上HSET命令对散列article::10086进行设置的整个过程。
图3-3 HSET命令对article::10086进行设置的整个过程
图3-3(续)
提示
散列包含的字段就像数据库包含的键一样,在实际中都是以无序方式进行排列的,不过本书为了展示方便,一般都会把新字段添加到散列的末尾,排在所有已有字段的后面。
3.2.1 使用新值覆盖旧值
正如之前所说,如果用户在调用HSET命令时给定的字段已经存在于散列当中,那么HSET命令将使用用户给定的新值去覆盖字段已有的旧值,并返回0表示这是一次更新操作。
比如,以下代码就展示了如何使用HSET命令去更新article::10086散列的title字段以及content字段:
redis> HSET article::10086 title "Redis Tutorial" (integer) 0 redis> HSET article::10086 content "Redis is a data structure store, ..." (integer) 0
图3-4展示了被更新之后的article::10086散列。
图3-4 被更新之后的article::10086散列
3.2.2 其他信息
复杂度:O(1)。
版本要求:HSET命令从Redis 2.0.0版本开始可用。