为 Redis 添加 JSON 数据类型
1. 简介
Redis 本身有比较丰富的数据类型,例如 String、Hash、Set、List
JSON 是我们常用的数据类型,当我们需要在 Redis 中保存 json 数据时是怎么存放的呢?
一般是用 String 或者 Hash,但还是不太方便,无法灵活的操作 json 数据
在 Redis 4.0 中,有一个重大改进:modules 模块系统,可以让我们开发新的功能,集成到 redis 中
rejson
就是一个新的模块,为 redis 提供了 json 存储能力
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}"
先看下第一条命令的含义:
-
JSON.SET
是json设置命令 -
object
是 key -
.
是json文档的root,后面的一串是具体的 json 数据值
第二条命令是获取 key 为 object
的json数据
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)安装流程
- 安装 redis 4.0
- 安装相关系统依赖
- 安装 rejson 模块
- 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/
- 人民日报发布周鸿祎署名文章:迎接“大安全”时代的新威胁
- Mono 3.2 上跑NUnit测试
- 为WordPress 文章中的链接自动添加 nofollow标签
- 腾讯刘炽平:海外用户破7000万 微信带开发者“出海”
- 研究称性别不均衡或导致人工智能持有性别偏见
- ASP.NET 2.0加密Web.config 配置文件
- .Net 跨平台可移植类库正在进行
- 掌握机器学习数学基础之概率统计(三)
- IBatisNet 之 自动生成主关键字
- IBatisNet之获取和操作SQL语句
- 大数据研究学者谈城市运行安全:要将应急处置转化为风险管理
- Castle.MVC框架介绍
- 在 .Net 设定 proxy 的方法
- MVC结构简介
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php使用QueryList轻松采集js动态渲染页面方法
- PHP convert_uudecode()函数讲解
- php实现在线考试系统【附源码】
- 实例介绍PHP中zip_open()函数用法
- php实现数字补零的方法总结
- PHP配置ZendOpcache插件加速
- 详解php用static方法的原因
- phpinfo无法显示的原因及解决办法
- 在php的yii2框架中整合hbase库的方法
- PHP安装memcache扩展的步骤讲解
- python退出循环的方法
- PHP crypt()函数的用法讲解
- Python如何自动获取目标网站最新通知
- PHP+mysql实现的三级联动菜单功能示例
- Python调用shell cmd方法代码示例解析