RedisJSON是专门对Redis支持的一个模块,只有有这个模块才能使用,否则,就只有普通的redis的功能,如果要自己配置的话,可以参考官方文档,我这边直接基于RedisJSON的Docker开始。
RedisJSON 是Redis的第三方拓展模块,它实现了JSON数据类型的支持,对JSON数据进行快速增、删、查改操作,比在MongoDB读写分别快了12.7和5.4倍,比在ElasticSearch读写分别快了500和200倍,是一个高性能的操作模块。
我看到这个噱头的时候,也很震惊,但是,一想,它是基于内存实现的,好像又见怪不怪了。
RedisJSON 安装
直接docker 一行命令
也可以去官网查看具体详情
https://hub.docker.com/r/redislabs/rejson
docker run -p 6379:6379 --name redis-redisjson -d redislabs/rejson:latest
然后,服务就启动了。
简单的很
现在服务已经运行了。
以下是 Another Redis Desktop Manager 看到的信息
NReJSON 代码操作
安装Nuget包
Install-Package NReJSON -Version 4.0.0
具体的代码
实体类
public class UserInfo
{
public int Age { get; set; }
public string Name { get; set; }
public DateTime Time { get; set; }
public object Address { get; set; }
}
public class Address
{
public string Name { get; set; }
}
测试代码
static async Task Main(string[] args)
{
//创建redis对象
var db = ConnectionMultiplexer.Connect("127.0.0.1").GetDatabase();
var key = "test";
string json = JsonConvert.SerializeObject(new UserInfo() { Age = 19, Name = "张三", Time = DateTime.Now, Address = new Address() { Name = "北京" } }, new JsonSerializerSettings() { DateFormatString = "yyyy-MM-dd HH:mm:ss" });
OperationResult result = await db.JsonSetAsync(key, json);
if (result.IsSuccess)
{
Console.WriteLine("json保存成功!");
}
RedisResult result2 = await db.JsonGetAsync(key, ".");
if (!result2.IsNull)
{
Console.WriteLine($"获取成功:{result2}");
}
OperationResult result3 = await db.JsonSetAsync(key, JsonConvert.SerializeObject("成都"), ".Address.Name");
OperationResult result4 = await db.JsonSetAsync(key, JsonConvert.SerializeObject("王五"), ".Name");
if (result3.IsSuccess && result4.IsSuccess)
{
Console.WriteLine("json修改成功!");
}
RedisResult result5 = await db.JsonGetAsync(key, ".Name", ".Age", ".Time", ".Address.Name");
if (!result5.IsNull)
{
Console.WriteLine($"获取成功:{result5}");
}
Console.WriteLine("redis json 测试!");
Console.ReadLine();
}
测试结果
可以看到可以通过指定json路径来进行查询相关的信息,也可以根据节点来设置相关的信息。
相对来讲还是很方便的。
有点mangodb的文档的概念,具体其他API大家可以多多尝试。
通过 Another Redis Desktop Manager 可以看到 具体存储的内容结构是啥子
总结
这个功能内存越大越好,如果内存不大,存储一些特殊结构的文档信息,还是很方便的,比如存储某些对象的影子信息。
代码地址
https://github.com/kesshei/RedisJsonDemo.git
https://gitee.com/kesshei/RedisJsonDemo.git
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有