RedisJson特性让我放弃了MongoDB,也让我放弃了Hash,我就问你们香不香?

C# C++ 笔记 变量自定义赋值​# 变量取值用$()​​​​​​clean:多个程序员分发同一程序时,由于不能直接在一个程序上进行功能的开发,所以就有了功能分支的概念。二维数组可以理解为是存储指针的一维数组,里面的每一个指针都指向一个一维数组的首地址存储多个一维数组的数据结构。array 是一个二维数组,它有3行和4列,总共可以存储12个整数。 阅读详情

1. mongodb介绍

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据NoSQL存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。

图片

MongoDB在高负载的情况下,可以添加更多的节点,以此来保证服务器性能。

既然MongoDB是以类JSON文档存储,那么更新文档,删除文档或者获取文档等都是在操作类JSON。我们可以看下MongoDB插入,以下事例摘自网络哈:

>db.col.insert({title: 'MongoDB', 
    description: 'MongoDB是一个Nosql数据库',
    by: 'baidu',
    tags: ['mongodb', 'database', 'NoSQL'],
})

复制代码

查询:

> db.col.find({"by":"baidu"}).pretty()
{
        "_id" : ObjectId("56063f17ade2f21f36b03133"),
        "description" : "MongoDB是一个Nosql数据库",
        "by" : "baidu",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ]
}

复制代码

这个类JSON文档其实它的数据结构和JSON基本一样,所有存储在集合中的数据都是BSON格式。

BSON是一种类似JSON的二进制形式的存储格式,是Binary JSON的简称。

2. RedisJson

RedisJSON - Redis的JSON数据类型

你没有看错,就是Redis最新出的一个特性:支持JSON存储和获取了。这个功能我觉得是王炸,对于我这种人来说存储json数据有很多好处,但是你可能会反对,redis已经有hash数据类型了,多一个json类型难免有点鸡肋,毕竟这么多年了,没有json类型大家也照样过来了,那么它到底解决什么问题呢?

别急,请往下看。

RedisJSON是一个Redis模块,实现了ECMA-404 JSON数据交换标准作为本地数据类型。它允许根据Redis键存储,更新和获取JSON值(文档)。

主要特性:

  • 完全支持JSON标准

  • 用类似JSONPath的语法在文档中选择元素

  • 文档以树状结构的二进制数据形式存储,可以快速访问子元素

  • 对于所有JSON值类型都定义了原子操作

RedisJSON是在Redis用<3开发的。源代码可以从github.com/RedisJSON/R…

<3:是什么意思呢?哈哈哈哈哈哈,知道这个的挺厉害的,不知道的下去查下哦。

接下来我们给大家演示下:

  1. 使用Docker启动RedisJSON

    使用Docker在Windows、MacOS或Linux上运行以下命令:

docker run -p 6379:6379 --name redis-redisjson redislabs/rejson:latest

复制代码

打印日志如下:

图片

  1. 使用RedisJSON

    用redis-cli可以直接进入:

//插入json数据 key是doc value是json
➜  ~ redis-cli
127.0.0.1:6379> JSON.SET doc . '{"name": "jamlee", "age": 18}'
OK

//获取json里面的field
127.0.0.1:6379> JSON.GET doc .name
"\"jamlee\""
127.0.0.1:6379> JSON.GET doc .age
"18"

//把我的年龄加1
127.0.0.1:6379> JSON.NUMINCRBY doc .age 1
"19"

//我想在json中在插入一个field属性:
127.0.0.1:6379> JSON.SET doc .array '[1,2,3]'
OK
127.0.0.1:6379> JSON.GET doc
"{\"name\":\"jamlee\",\"age\":19,\"array\":[1,2,3]}"

//给json中的array数组增加三个元素
127.0.0.1:6379> JSON.ARRAPPEND doc .array true null false
(integer) 6

//从json的array中pop一个元素出来
127.0.0.1:6379> JSON.ARRPOP doc .array
"false"

//查看json的array
127.0.0.1:6379> JSON.GET doc .array
"[1,2,3,true,null]"

//查看type
127.0.0.1:6379> JSON.TYPE doc
"object"

复制代码

再给大家展示一个比较厉害的:

//创建json 不过里面是list
127.0.0.1:6379> JSON.SET lst . '[ true, { "answer": 42 }, null ]'
OK
//获取第二个元素的answer属性
127.0.0.1:6379> JSON.GET lst [1].answer
"42"

复制代码

到这里我就不一一列举了,支持的操作非常多而且灵活,你就说用它来存储json香不香,我觉得太香了。

那大家可能会说你是docker启动的,我如果想用它但不想用docker启动怎么办?好说啊,上干货:

  1. 先从Redis下载中心下载预编译版本 redis.com/download-ce…

  2. 接下来,使用RedisJSON运行Redis

$ redis-server --loadmodule /path/to/module/rejson.so

复制代码

3. 小结

既然redis支持json了,你们还会用MongoDB吗?我相信大家通过上面的操作演示就可以看出来了,你们心里也一定有答案了。

而且通过上面演示,我相信你也立马看出来RedisJson和Hash的区别了,有时候hash做不了的,RedisJson非常轻松的都可以搞定。

参考:oss.redis.com/redisjson/#…

Redis Stack vs Elasticsearch:结构化搜索性能实测与选型指南 搜索引擎性能对比不能脱离场景空谈——结构化数据的精准匹配、前缀搜索、范围过滤和轻量聚合,是电商、后台管理等高频业务的核心需求。其底层原理依赖内存索引(如Trie树、B-Tree)与倒排索引的路径差异,技术价值在于低延迟、零同步、极简运维;典型应用场景包括商品列表筛选、标签检索、实时数据看板等。本文基于真实电商数据,在统一硬件与负载下实测Redis Stack与Elasticsearch 8.11在关键词匹配、前缀搜索、多条件组合等五类查询中的P95延迟,揭示‘快5倍’背后的适用边界与能力取舍。 阅读详情

相关推荐

qPCR定量方法在肠道微生物特定种属定量应用

大家都知道肠道中有上千种细菌,肠道微生物可参与人体代谢,促进营养物质的消化吸收,肠道微生态均衡关系到身体健康,肠道微生态失衡可能会导致疾病产生。此外有文献指出肠道微生物可能与人体免疫及炎性反应等有关。目前也越来越多人关注到疾病与肠道微生物的关系,也做了很多研究及实验,一般高通量结果得到的是每个物种在样本中的相对百分含量,而不同微生物的绝对含量其实也对疾病有很重要的影响。在此分享几篇有采用qPCR方法研究疾病与肠道微生物关系的文章。 早在2013年Kim-Anne Lê1、Yan Li等人发表文章Alter

tinygene的博客 2143

redis存储对象(通过JSON方式)

redis存储对象 在Java程序中,redis提供的方法插入的key,value要么是string,要么就是byte[]数组。那如果是要插入的value是个对象怎么办呢?网上的方法大多是对这个对象进行序列化。序列化还有一个作用是可以将对象序列化之后通过socket进行传输。那么,JSON也是一个进行数据交换的格式。何不将对象转为JSON字符串然后当作String存在Value中也是可以的。 我用...

qq_45142791的博客 2285

双通道中频信号数字下变频及相位差估计(FPGA)

双通道中频信号数字下变频及相位差估计实验 一、上框图(通俗易懂) 二、实验要求 1、 用点频信号模拟中频信号:中频信号由DDS1和DDS2产生。具体产生方法见第2点。 2、 DDS1和 DDS2:调用IPcore里的数字信号处理中的NCO模块,工作时钟为100MHz,数据率即为100MHz,DDS1和DDS2的频率为:(学号后三位+500)Khz+f0(可设为20MHz);输出为16位;DDS1...

qq_39809425的博客 6941

Redis使用字符串和hash存储JSON,那个更高效?

Redis使用字符串和hash存储JSON,那个更高效? 最近在排查一个线上问题,发现redis使用了一个hash key里面存储了600w的field,为啥这么多就是因为他把一个结构体中的字段分成了多个field存储。下面来看看到底应该怎么设计比较合理。 一、问题 一种使用简单的字符串键和值。 键:用户,值:payload(整个JSON,可以为100-200 KB) SET user:1 payload 使用哈希 HSET user:1 username "someone" HSET user

程序员学编程 的专栏 1万+

STM32 热敏电阻测量温度

1、硬件 STM32F103C8T6、热敏电阻传感器、OLED。 2、热敏电阻传感器的介绍

weixin_54721788的博客 1万+

ZYNQ出现问题及解决办法汇总(一直更新)

问题目录使用软件及开发板版本一,vitis在build project时卡住。二,Could not find FPGA device on the board for connection 'Local'三,FPGA configuration failed:DONE PIN is not high四,Could not find ARM device on the board for connection 'Local' 使用软件及开发板版本 开发板:MZ7XA-7020 软件:vitis2020.2(

qq_45057368的博客 1万+

今日热点 | RedisJson 横空出世,惊呆ES和Mongo

一、概述 近期官网给出了RedisJson(RedisSearch)的性能测试报告,可谓碾压其他NoSQL,下面是核心的报告内容,先上结论: 对于隔离写入(isolated writes),RedisJSON 比 MongoDB 快 5.4 倍,比 ElasticSearch 快 200 倍以上。 对于隔离读取(isolated reads),RedisJSON 比 MongoDB 快 12.7 倍,比 ElasticSearch 快 500 倍以上。 在混合工作负载场景中,实时更新不会影响 Redi

【优快云】 3771

PHP实战:5分钟搞定SM4国密加密算法集成(附完整代码)

本文提供了一份可直接用于生产环境的PHP SM4国密加密算法集成实战指南。文章详细解析了SM4算法核心,对比了ECB与CBC工作模式,并给出了包含完整代码、密钥管理、数据填充及性能优化的解决方案,帮助开发者快速、安全地在PHP项目中集成国密加密算法。

2a4s6d8f0g的博客 339

Redis 基础 -- Redis数据类型之hash、redis原则、string存储对象和hash存储对象对比

Redis数据类型之hash、redis原则、string存储对象和hash存储对象对比

天行健 君子以自强不息,地势坤 君子以厚德载物。 2046

Win10系统安装Ubuntu虚拟机,这回真的是零基础!(结尾附NS3的配置)

Win10系统安装Ubuntu虚拟机(结尾附NS3的配置) 序幕 本人现在还在念大二,有一门很有趣而且老师讲得也不错的课程《计算机网络原理》。这周老师布置了一个实验《NS3网络模拟》,为了详细记录本次实验过程,顺便也便于自己复习,就写了这篇博客,希望能够对你有帮助! NS3是什么呢?实际上就是一门算法,和计算机网络有关的。不过在我们日常使用的Windows系统上去做这个实验是行不通的,这个实验一定要在Linux系统上进行模拟才能玩的下去,作为一名 Windows选手对此表示不爽但是没办法,为了实验也只

灼热之翼的博客 7382

SolidWorks 小车底盘 装配体

通过制作小车底盘了解solidworks装配体的部分知识

及时总结 2226

告别MongoDB?我用RedisJSON重构了Node.js项目的用户会话缓存(附性能对比)

本文探讨了如何利用RedisJSON重构Node.js项目的用户会话缓存,以替代传统的MongoDB方案。通过详细的性能对比和实战案例,展示了RedisJSON在处理复杂嵌套JSON数据时的优势,包括更低的延迟、更高的查询效率以及显著降低的内存占用和成本。

weixin_42542669的博客 144

芒果YOLOv12改进90:检测头篇之ShareSepHead:即插即用|原创新颖共享Sep检测头,更省参数量,更高效,打造新型YOLOv8检测器,精度高效涨点

芒果YOLOv12改进90:检测头篇之ShareSepHead:即插即用|原创新颖共享Sep检测头,更省参数量,更高效,打造新型YOLOv8检测器,精度高效涨点

包括YOLOv5、YOLOv7、YOLOv8等模型改进 343

redis支持json,mongodb还有存在的必要吗

Redis 和 MongoDB 是两种不同类型的数据库系统,尽管 Redis 现在支持 JSON 数据类型(通过 RedisJSON 模块),但这并不意味着 MongoDB 没有存在的必要。尽管 Redis 现在支持 JSON 并提供了高性能的内存存储解决方案,但 MongoDB 因其持久化存储、复杂查询支持和大数据处理能力等特性,仍然在许多场景中发挥着不可替代的作用。Redis 支持多种数据结构,如字符串、列表、集合、哈希表等,以及现在通过 RedisJSON 支持的 JSON 数据类型。

怀揣梦想,一颗执着于技术的心从未磨灭,内心住着一颗顽强的小强时刻提醒自己层层突破自我,同时也成就他人 476

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Redis Search 与 Redis JSON:全面提升全文检索与数据存储性能的新特性

Redis 通过引入 Redis Search 和 Redis JSON 两大模块,拓展了其作为缓存工具的传统应用场景。Redis Search 提供了全文检索能力,支持倒排索引、模糊查询等复杂搜索功能;Redis JSON 则支持结构化数据的高效存储与查询。官方测试显示,Redis JSON 在写入性能上比 MongoDB 快 5.4 倍,比 Elasticsearch 快 200 倍,查询性能优势更显著。二者的结合使 Redis 能够同时满足高并发数据存储和高效检索需求,适用于电商搜索、社交平台等。

qq_46371374的博客 930

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Redis核心数据结构与高并发场景实践指南

内存数据库作为高性能数据存储解决方案,通过将数据驻留内存实现微秒级响应。Redis作为典型的键值存储系统,其核心价值在于提供丰富的数据结构支持与原子操作能力,特别适合应对高并发读写场景。字符串、哈希、列表等基础数据结构可灵活组合,支撑会话管理、实时排行榜等典型应用。通过合理使用持久化机制与集群方案,Redis能有效解决缓存雪崩、大Key性能瓶颈等工程难题,成为电商、社交等互联网应用的底层基础设施标配。本文结合分布式锁、微服务集成等实战案例,详解如何通过内存优化与监控策略提升Redis服务稳定性。

weixin_30617797的博客 339

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Redis 数据库 入门 教程

Redis 数据库入门教程

freeking101的博客 3684

Redis 实战修炼与原理进阶专栏大纲

Redis 8.6.x 实战专栏摘要 本专栏采用「业务痛点→剧本对话→代码实战→总结」的四步结构,系统讲解 Redis 从入门到生产落地的全栈知识。基础篇(1-16章)聚焦单机 Redis,涵盖数据结构、缓存模式与基础运维;中高级篇(17-40章)深入高并发架构、分布式一致性、源码调优等进阶内容。通过电商场景贯穿实战,包含验证码、购物车、排行榜等典型模块。特色三人剧本(小胖/小白/大师)生动解析技术决策过程,配套可运行代码和故障演练场景,帮助开发者快速掌握 Redis 核心能力与生产级最佳实践。

davidwang456的专栏 916

Redis实战笔记:从数据结构到高并发缓存架构设计

Redis作为高性能的键值对内存数据库,其核心在于对多种数据结构的支持,如字符串、哈希、列表、集合和有序集合。理解这些数据结构及其操作的时间复杂度是高效使用Redis的基础。其单线程模型和内存存储机制带来了极高的读写性能,并通过RDB和AOF持久化机制保障数据安全。在技术价值上,Redis广泛应用于缓存、会话存储、消息队列和排行榜等场景,能显著提升系统响应速度并降低数据库负载。面对高并发场景,需要深入理解缓存穿透、击穿、雪崩等经典问题及其解决方案,例如使用布隆过滤器、分布式锁和随机过期时间等策略。本文基于一

weixin_34372728的博客 341

第38章:Redis Module 开发:自定义命令与数据类型

本文探讨了Redis Module的开发实践与风险挑战。文章从互联网金融风控和电商库存两个实际场景出发,揭示了传统Lua脚本方案的局限性,引出了Redis Module的必要性。通过三个关键对话,系统阐述了Module的本质特性(与Redis的深度集成关系)、两种开发模式(自定义命令与自定义数据类型)的选择策略,以及开发过程中常见的六大陷阱(主线程阻塞、内存泄漏、RDB兼容性等)。最后提出了一个"风险计数器"模块的教学案例,涵盖了从初始化到版本升级的全生命周期开发要点。

davidwang456的专栏 372
上一篇: 真的不想做Java了,6年经验去面试10分钟就结束,现在Java面试这么难吗?
下一篇: 面试官:this和super有什么区别?this能调用到父类吗?
superjava_
博客等级 码龄5年 254粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值