Redis 自己有比較豐富的數據類型,例如 String、Hash、Set、List git
JSON 是咱們經常使用的數據類型,當咱們須要在 Redis 中保存 json 數據時是怎麼存放的呢?github
通常是用 String 或者 Hash,但仍是不太方便,沒法靈活的操做 json 數據redis
在 Redis 4.0 中,有一個重大改進:modules 模塊系統,可讓咱們開發新的功能,集成到 redis 中json
rejson
就是一個新的模塊,爲 redis 提供了 json 存儲能力bootstrap
127.0.0.1:6379> JSON.SET object . '{"foo": "bar", "ans": 42}' OK 127.0.0.1:6379> JSON.GET object "{\"foo\":\"bar",\"ans\":42}"
先看下第一條命令的含義:ubuntu
JSON.SET
是json設置命令centos
object
是 key ide
.
是json文檔的root,後面的一串是具體的 json 數據值ui
第二條命令是獲取 key 爲 object
的json數據spa
獲取某字段的值
127.0.0.1:6379> JSON.GET object .ans "42"
命令中的 .ans
是目標路徑,表示 root
下面的 ans
設置某字段值
127.0.0.1:6379> json.set object .name '"bill"' OK 127.0.0.1:6379> json.get object "{\"foo\":\"bar\",\"ans\":42,\"hi\":\"hello\",\"name\":\"bill\"}"
這個命令是在 root 下新增了一個字段 name
,值爲 bill
也能夠修改已有字段的值,用法相同
刪除字段
127.0.0.1:6379> json.del object .name (integer) 1 127.0.0.1:6379> json.get object "{\"foo\":\"bar\",\"ans\":42,\"hi\":\"hello\"}"
這個命令使用 del
把 root 下的 name
字段刪除了
數字操做
ans
字段是數字類型,值爲 42,下面對其執行 +3 操做
127.0.0.1:6379> json.numincrby object .ans 3 "45" 127.0.0.1:6379> json.get object "{\"foo\":\"bar\",\"ans\":45,\"hi\":\"hello\"}"
還能夠進行乘法操做
127.0.0.1:6379> json.nummultby object .ans 2 "90" 127.0.0.1:6379> json.get object "{\"foo\":\"bar\",\"ans\":90,\"hi\":\"hello\"}"
還有不少其餘操做命令,具體能夠查看項目文檔
由於使用了模塊功能,因此須要 redis 4.0 以上版本
安裝 redis 4.0
安裝相關係統依賴
安裝 rejson 模塊
redis 加載 rejson 模塊
安裝 redis 4.0
wget https://github.com/antirez/redis/archive/4.0-rc2.tar.gz tar xzf 4.0-rc2.tar.gz cd redis-4.0-rc2/ make
安裝依賴
yum groupinstall "Development Tools"
(這是 centos 中的安裝方法,ubuntu 能夠使用這個命令 apt-get install build-essential )
安裝cmake
# wget https://cmake.org/files/v3.8/cmake-3.8.0-rc3.tar.gz # tar -xzvf cmake-2.8.11.2.tar.gz # cd cmake-2.8.11.2 # ./bootstrap # make # make install
安裝 rejson 模塊
git clone https://github.com/RedisLabsModules/rejson.git cd rejson ./bootstrap.sh cmake --build build --target rejson
安裝完成後,rejson 目錄中的 lib
下便會生成 rejson.so
啓動 redis 時加載 rejson.so
redis-server --loadmodule /path/to/module/rejson.so
在啓動信息中會看到 rejson 的相關信息
... <ReJSON> JSON data type for Redis ...
安裝完成,能夠登陸 redis 執行 json 命令了
rejson 讓咱們能夠在 redis 中存儲和操做 json 數據,很是方便
並且經過體驗 rejson 模塊,還能夠感覺到 redis 模塊系統的強大,之後將會出現各類基於redis的強大功能
rejson 項目地址:
https://redislabsmodules.github.io/rejson/