RedisJSON 是一种高性能 JSON 文档存储,允许开发人员构建现代应用程序。它在内存中存储和处理 JSON,以亚毫秒级支持每秒数百万次操作响应时间。 JSON 文档的原生索引、查询和全文搜索允许开发人员创建二级索引,快速查询数据。
安装:
拉取镜像
docker pull docker.io/redislabs/rejson
查看一下镜像
docker images
启动
docker run -d -p 6739:6379 --name rejson redislabs/rejson:latest
使用RedisJson
进入容器内部
docker exec -it rejson bash
连接:
redis-cli
添加json
JSON.SET testjson . '{"key1":11,"key2":22}'
取出json中全部的值
JSON.GET testjson
取出json中其中一个key,key1 的值 注意空格
路径总是从JSON值的根开始。根由字符(.)表示。对于引用根的子级的路径,可以选择在路径前面加上根前缀。
JSON.GET testjson .key1
更多api命令:
命令和子命令的名称是大写的,例如JSON.SET 和INDENT
强制参数用尖括号括起来,例如<path>
可选参数用方括号括起来,例如[index]
其他可选参数由三个句点字符表示,即...
管道字符|表示异或
##标量命令
#设置json值
JSON.SET <key> <path> <json> [NX | XX]
说明:
NX: 如果不存在就添加
XX: 如果存在就更新
#查询key的值
JSON.GET <key> [INDENT indentation-string] [NEWLINE line-break-string] [SPACE space-string] [path ...]
说明:
可以接受多个path,默认是root
INDENT: 设置嵌套级别
NEWLINE: 每行末尾打印的字符串
SPACE: 设置key和value之间的字符串
JSON.GET myjsonkey INDENT "\t" NEWLINE "\n" SPACE " " .
JSON.SET doc $ '{"a":2, "b": 3, "nested": {"a": 4, "b": null}}'
JSON.GET doc $..b
JSON.GET doc ..a $..b
#查询指定路径下的多个key,不存在的key或path返回null
JSON.MGET <key> [key ...] <path>
JSON.SET doc1 $ '{"a":1, "b": 2, "nested": {"a": 3}, "c": null}'
JSON.SET doc2 $ '{"a":4, "b": 5, "nested": {"a": 6}, "c": null}'
JSON.MGET doc1 doc2 $..a
#删除值
JSON.DEL <key> [path]
说明:
不存在的key或path会被忽略
返回integer
#增加数字的值
JSON.NUMINCRBY <key> <path> <number>
#数字乘法,过时了
JSON.NUMMULTBY <key> <path> <number>
#追加字符串
JSON.STRAPPEND <key> [path] <json-string>
#字符串的长度
JSON.STRLEN <key> [path]
##数组命令
#追加数组元素
JSON.ARRAPPEND <key> <path> <json> [json ...]
#搜索指定元素在数组中第一次出现的位置,如果存在返回索引,不存在返回-1
JSON.ARRINDEX <key> <path> <json-scalar> [start [stop]]
说明:
[start [stop]] 从start开始(包含)到stop(不包含)的范围
#在数组指定位置插入元素
JSON.ARRINSERT <key> <path> <index> <json> [json ...]
说明:
index: 0是数组第一个元素,负数表示从末端开始计算
#数组的长度
JSON.ARRLEN <key> [path]
说明:
如果key或path不存在,返回null
#删除返回数组中指定位置的元素
JSON.ARRPOP <key> [path [index]]
说明:
index: 默认是-1,最后一个元素
#去掉元素,使其仅包含指定的包含范围的元素
JSON.ARRTRIM <key> <path> <start> <stop>
##对象命令
#返回对象中的key
JSON.OBJKEYS <key> [path]
#返回对象key的数量
JSON.OBJLEN <key> [path]
##模块命令
#返回json value的数据类型
JSON.TYPE <key> [path]
#返回key的字节数
JSON.DEBUG MEMORY <key> [path]