FSET语法
FSET key id [XX] field value [field value ...] 复制代码
设置id的一个或多个字段的值。值的类型是双精度浮点型。
示例
FSET fleet truck1 speed 16 wheels 8 复制代码
我们对fleet
下面的truck1
设置了两个字段值;一个是speed
为16,一个是wheels
为8。
如果对一个不存在的id进行设置,那么会抛出错误。我们可以使用参数XX
来避免程序抛出错误。
FSET fleet trunk100 speed 90 复制代码
如果trunk100
不存在,那么上面的命令就会发生错误,为了避免这个错误,我们可以用下面这个命令:
FSET fleet trunk100 XX speed 90 复制代码
这样的话,即使trunk100
这个id不存在,执行这个命令也不会报错,当然也不会成功,相当于啥也没做。
JSET语法
JSET key id path value [RAW|STR] 复制代码
JSET
的作用就是在一个JSON文档中设置一个值。
示例
通过JSET
命令,我们可以构建一个JSON文档
127.0.0.1:9851> JSET user 901 name Tom {"ok":true,"elapsed":"64.751µs"} 127.0.0.1:9851> JGET user 901 {"ok":true,"value":"{"name":"Tom"}","elapsed":"17.864µs"} 复制代码
除了上面这样针对一个简单字段创建JSON文档,我们还可以针对更深层次的path进行设置:
127.0.0.1:9851> JSET user 901 name.first Tom {"ok":true,"elapsed":"70.712µs"} 127.0.0.1:9851> JGET user 901 {"ok":true,"value":"{"name":{"first":"Tom"}}","elapsed":"21.651µs"} 127.0.0.1:9851> JSET user 901 name.last Anderson {"ok":true,"elapsed":"53.741µs"} 127.0.0.1:9851> JGET user 901 {"ok":true,"value":"{"name":{"first":"Tom","last":"Anderson"}}","elapsed":"17.704µs"} 复制代码
上面的示例就是通过name.first
、name.last
的方式来实现深层次的JSON文档。
- RAW
SET linestrings 1 OBJECT {"type": "LineString", "coordinates": [[0, 0], [1, 1]]} JSET linestrings 1 coordinates.-1 [2,2] RAW JGET linestrings 1 > {"type":"LineString","coordinates":[[0,0],[1,1],[2,2]]} 复制代码
RAW
允许将值解释为序列化的JSON对象。上面的JSET
命令作用就是给coordinates数组的最后加上一个元素[2,2]- STR
JSET test 1 properties.bool true JGET test 1 properties.bool > {"value":true} JSET test 1 properties.bool true STR JGET test 1 properties.bool > {"value":"true"} 复制代码
- 如果没有在命令中加上
STR
,那么properties.bool的值就是true;加上STR
就把properties.bool改变成了字符串的"true",而不是一个真正的布尔值。针对于整型数值,如果有需要的话,也可以通过添加STR
的方式,将它们改变成字符串类型。
需要补充介绍的另外两个命令JGET、JDEL:
- JGET语法:
JGET key id path [RAW] 复制代码
- 从 JSON 文档中获取值。
JSET user 901 name Tom JGET user 901 > {"name":"Tom"} JSET user 901 name.first Tom JSET user 901 name.last Anderson JGET user 901 name.last > {"ok":true,"value":"Anderson","elapsed":"12.724µs"} 复制代码
- 我们既可以通过
JGET key id
获取整个JSON文档,也可以通过JGET key id path
获取指定的JSON文档中的字段值。 - JDEL语法:
JDEL key id path 复制代码
- JDEL的作用就是从JSON文档中删除目标字段及相关值。
JSET user 901 name.first Tom JSET user 901 name.last Anderson JGET user 901 > {"name":{"first":"Tom","last":"Anderson"}} JDEL user 901 name.last JGET user 901 > {"name":{"first":"Tom"}} 复制代码
- 在上面示例中,我们通过
JSET
产生了两个值,后续通过JDEL
命令删掉了其中的name.last
。