• RedisJSON的安装和使用
  • 发布于 2个月前
  • 390 热度
    0 评论
RedisJSON 是Redis的第三方拓展模块,它实现了JSON数据类型的支持,允许对JSON数据进行快速增、删、改、查操作,它比在MongoDB读写分别快了12.7和5.4倍,比在ElasticSearch读写分别快了500和200倍,是一个高性能的操作模块。我看到这个噱头的时候,也很震惊,但是,一想,它是基于内存实现的,好像又见怪不怪了。

RedisJSON是专门对Redis支持的一个模块,只有有这个模块才能使用,否则,就只有普通的redis的功能,如果要自己配置的话,可以参考官方文档,我这边直接基于RedisJSON的Docker开始。

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)
        {
            //堆代码 duidaima.com
            //创建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
用户评论