当前位置:   article > 正文

C# Redis NReJSON 实现对RedisJson的使用,听说比ES快500倍_redisjson能代替es吗

redisjson能代替es吗

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
  • 1

然后,服务就启动了。

简单的很

现在服务已经运行了。

以下是 Another Redis Desktop Manager 看到的信息

NReJSON 代码操作

安装Nuget

Install-Package NReJSON -Version 4.0.0
  • 1

具体的代码

实体类

    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; }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

测试代码

        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();
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

测试结果

可以看到可以通过指定json路径来进行查询相关的信息,也可以根据节点来设置相关的信息。

相对来讲还是很方便的。

有点mangodb的文档的概念,具体其他API大家可以多多尝试。

通过 Another Redis Desktop Manager 可以看到 具体存储的内容结构是啥子

总结

这个功能内存越大越好,如果内存不大,存储一些特殊结构的文档信息,还是很方便的,比如存储某些对象的影子信息。

代码地址

https://github.com/kesshei/RedisJsonDemo.git

https://gitee.com/kesshei/RedisJsonDemo.git

一键三连呦!,感谢大佬的支持,您的支持就是我的动力!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/583018
推荐阅读
相关标签
  

闽ICP备14008679号