爲 Redis 添加 JSON 數據類型

1. 簡介

Redis 自己有比較豐富的數據類型,例如 String、Hash、Set、List git

JSON 是咱們經常使用的數據類型,當咱們須要在 Redis 中保存 json 數據時是怎麼存放的呢?github

通常是用 String 或者 Hash,但仍是不太方便,沒法靈活的操做 json 數據redis

在 Redis 4.0 中,有一個重大改進:modules 模塊系統,可讓咱們開發新的功能,集成到 redis 中json

rejson 就是一個新的模塊,爲 redis 提供了 json 存儲能力bootstrap

2. 示例

2.1)基礎操做

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

2.2)json 內部操做

  • 獲取某字段的值

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\"}"

還有不少其餘操做命令,具體能夠查看項目文檔

3. 安裝

由於使用了模塊功能,因此須要 redis 4.0 以上版本

3.1)安裝流程

  1. 安裝 redis 4.0

  2. 安裝相關係統依賴

  3. 安裝 rejson 模塊

  4. redis 加載 rejson 模塊

3.2)詳細安裝過程

安裝 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 命令了

5. 小結

rejson 讓咱們能夠在 redis 中存儲和操做 json 數據,很是方便

並且經過體驗 rejson 模塊,還能夠感覺到 redis 模塊系統的強大,之後將會出現各類基於redis的強大功能

rejson 項目地址:

https://redislabsmodules.github.io/rejson/
相關文章
相關標籤/搜索