Redis Modules System是4.0出现一大改动点,使得可以通过外部模块对Redis进行功能性扩展。在使用 Redis 中,我们可以使用大量的 Redis 模块来扩展 Redis 的功能,这里安装使用 ReJSON模块。
RedisJSON简介
RedisJSON是RedisLabs公司开发的一款用于扩展Redis的JSON处理模块,RedisJSON模块为Redis提供JSON支持。RedisJSON允许您在Redis数据库中存储、更新和检索JSON值,类似于任何其他Redis数据类型。RedisJSON还可以与RediSearch无缝协作,让您可以索引和查询JSON文档。
一、安装ReJSON
github上下载ReJSON的源码:Releases · RedisJSON/RedisJSON · GitHub
官方使用文档: http://redisjson.io
make编译,生成二进制文件 rejson.so
由于我们下载的是RedisJSON的源码,因此我们需要手动编译出Redis需要的模块库,这里需要说明一下,默认下载的master分支的代码,不知道是什么原因一直编译报错,这里我们使用 1.0分支的源码进行编译,如下所示:
cd rejson
git checkout 1.0
make
编译完成后,我们就可以在rejson/src目录下找到 rejson.so文件了,这正是我们需要的。
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379>
加载模块
1)使用 MODULE LOAD 命令。注意: MODULE LOAD 是一个危险命令,不推荐使用:
module load /path/rejson/src/rejson.so
成功加载后返回 OK
2)在 redis.conf 配置文件中添加:loadmodule /usr/local/redis/module/rejson.so ,搞定
重启,查看Redis 已经加载的所有模块:> module list
192.168.198.20:6379> module list
1) 1) "name"
2) "ReJSON"
3) "ver"
4) (integer) 10004
二、使用ReJson
简单set/get使用
192.168.198.20:6379> JSON.SET jsonkey . '{"a":"b","c":["1","2","3"]}'
OK
192.168.198.20:6379> JSON.GET jsonkey
"{\"a\":\"b\",\"c\":[\"1\",\"2\",\"3\"]}"
192.168.198.20:6379> JSON.GET jsonkey .a
"\"b\""
192.168.198.20:6379> JSON.GET jsonkey .c
"[\"1\",\"2\",\"3\"]"
官方模块仓库
官方模块仓库收录很多优质的模块:
新数据结构
rejson 提供了对原生 JSON 格式支持,允许对 JSON 数据内的值进行获取与修改
Redis Graph 添加了对图数据库的支持 等等
对现有数据结构功能的扩展
rxkeys 提供了按正则表达式批量获取与删除条目的功能 rxhashes 提供了在 Hash 中改变现有条目的值并返回原值的原子操做 rxlists 提供了 7 个新的列表操作方法。