Redis Stack常见拓展

news2025/6/6 10:46:27

Redis JSON

RedisJSON 是 Redis Stack 提供的模块之一,允许你以 原生 JSON 格式 存储、检索和修改数据。相比传统 Redis Hash,它更适合结构化文档型数据,并支持嵌套结构、高效查询和部分更新。

#设置⼀个JSON数据,其中$表示JSON数据的根节点
JSON.SET user:1 $ '{"name":"Alice","age":25,"skills":["Java","Redis"]}'
# 输出: "Alice"
JSON.GET user:1 $.name
# 添加数组元素
JSON.ARRAPPEND user:1 $.skills '"Docker"'
#查看数据类型
JSON.TYPE user:1 $.name
# 年龄+2
JSON.NUMINCRBY user:1 $.age 2

优势

  • Redis JSON存储数据的性能更⾼。
  • Redis JSON使⽤树状结构来存储JSON。
  • 与Redis⽣态集成度⾼。

Search And Query

在 RedisJSON 中,Search and Query(搜索与查询) 是通过 RediSearch 模块 实现的,这也是 Redis Stack 中最强大的功能之一。它让 Redis 不再只是一个 Key-Value 缓存,而是支持类数据库的多字段、高性能搜索查询。

  1. 传统Scan搜索
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
  1. Search And Query搜索
    RedisJSON 本身只能通过路径读取数据,不能进行模糊搜索、筛选年龄大于30的用户等复杂查询。这时候就需要 RediSearch。配合 RediSearch 使用 JSON 搜索(只有hash和json支持)
JSON.SET user:1 $ '{"name":"Tom","age":30,"city":"Beijing"}'
JSON.SET user:2 $ '{"name":"Alice","age":25,"city":"Shanghai"}'
JSON.SET user:3 $ '{"name":"Jack","age":35,"city":"Guangzhou"}'

FT.CREATE idx:users ON JSON PREFIX 1 user: SCHEMA $.name AS name TEXT $.age AS age NUMERIC $.city AS city TAG

#查询 name 中包含 "Tom" 的用户
FT.SEARCH idx:users "@name:Tom"
#查询年龄在 26~40 岁之间的用户
FT.SEARCH idx:users "@age:[26 40]"
#查询城市是 "Beijing" 的用户
FT.SEARCH idx:users "@city:{Beijing}"
#多条件组合查询(AND)
FT.SEARCH idx:users "@age:[20 40] @city:{Shanghai}"

Bloom Filter

Bloom Filter 是一种高效、概率型的数据结构,用于判断某个元素是否存在于集合中。它的特点是:

  • 快速判断某元素是否存在
  • 空间效率高
  • 存在一定概率的误判(可能“误判存在”,但绝不会“误判不存在”)

java可以使用Redisson和Guava的布隆过滤器
⼀句话解释:⼀种快速检索⼀个元素是否在⼀个海量集合中的算法。
在这里插入图片描述

# 初始化一个布隆过滤器my_filter: 过滤器名称,0.01: 误判率(1%),10000: 预估元素数量(容量)
BF.RESERVE my_filter 0.01 10000
#添加元素
BF.ADD my_filter "alice"
#判断元素是否存在,返回 1(存在)
BF.EXISTS my_filter "alice" 
#批量添加与判断
BF.MADD my_filter "a" "b" "c"
BF.MEXISTS my_filter "a" "x" "b"
# 返回: 1 0 1

Cuckoo Filter

Cuckoo Filter(布谷鸟过滤器) 是一种替代布隆过滤器(Bloom Filter)的数据结构,它同样用于判断元素是否存在于集合中,但它在一些方面有显著优势。

特性Cuckoo FilterBloom Filter
查询是否存在
添加元素
删除元素✅(支持)❌(不支持)
空间效率较高更高(一般情况)
扩容能力支持支持(但较复杂)
误判率存在存在
#容量1000,这个是必填参数。后⾯⼏个都是可选参数
#BUCKETSIZE: 每个 bucket 存放的 fingerprint 数量,越大空间利用率越好但是误判率也越高,性能也更差
#MAXITERATIONS: 插入时的最大尝试次数,越小性能越好,越大空间利用率越好
#EXPANSION: 自动扩容因子(默认是 1),是指空间扩容的比例
CF.RESERVE cf 1000 BUSKETSIZE 2 MAXITERATIONS 20 EXPANSION 1
#删除元素
CF.DEL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2398765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 驱动之设备树

Linux 驱动之设备树 参考视频地址 【北京迅为】嵌入式学习之Linux驱动(第七期_设备树_全新升级)_基于RK3568_哔哩哔哩_bilibili 本章总领 1.设备树基本知识 什么是设备树? ​ Linux之父Linus Torvalds在2011年3月17日的ARM Linux邮件列表…

12、企业应收账款(AR)全流程解析:从发票开具到回款完成

在商业活动中,现金流如同企业的命脉,而应收管理则是维系这条命脉正常运转的重要保障。许多企业由于对应收账款缺乏有效管理,常常面临资金周转困难的问题。实践证明,建立科学的应收管理体系能够显著提升资金回笼效率,为…

【notepad++】如何设置notepad++背景颜色?

如何设置notepad背景颜色? 设置--语言格式设置 勾选使用全局背景色 例如选择护眼色---80,97,205;

使用 C++/OpenCV 制作跳动的爱心动画

使用 C/OpenCV 制作跳动的爱心动画 本文将引导你如何使用 C 和 OpenCV 库创建一个简单但有趣的跳动爱心动画。我们将通过绘制参数方程定义的爱心形状,并利用正弦函数来模拟心跳的缩放效果。 目录 简介先决条件核心概念 参数方程绘制爱心动画循环模拟心跳效果 代码…

在Oxygen编辑器中使用DeepSeek

罗马尼亚公司研制开发的Oxygen编辑器怎样与国产大模型结合,这是今年我在tcworld大会上给大家的分享,需要ppt的朋友请私信联系 - 1 - Oxygen编辑器中的人工智能助手 Oxygen编辑器是罗马尼亚的Syncro Soft公司开发的一款结构化文档编辑器。 它是用来编写…

一、基础环境配置

一、虚拟机 主:192.168.200.200 从:192.168.200.201 从:192.168.200.202 二、docker docker基础搭建,有不会的自行百度。 1.目录结构 /opt/software:软件包/opt/module:解压包,自定义脚本…

论文阅读笔记——FLOW MATCHING FOR GENERATIVE MODELING

Flow Matching 论文 扩散模型:根据中心极限定理,对原始图像不断加高斯噪声,最终将原始信号破坏为近似的标准正态分布。这其中每一步都构造为条件高斯分布,形成离散的马尔科夫链。再通过逐步去噪得到原始图像。 Flow matching 采取…

SQL Views(视图)

目录 Views Declaring Views Example: View Definition Example: Accessing a View Advantages of Views Triggers on Views Interpreting a View Insertion(视图插入操作的解释) The Trigger Views A view is a relation defined in terms of…

「卫星百科」“绿色守卫”高分六号

高分六号(GF-6)是中国高分辨率对地观测系统(高分专项)的重要组成卫星,于2018年6月2日成功发射。高分六号卫星凭借其高时空分辨率、红边波段、宽覆盖能力,在农业、生态、灾害等领域提供了重要的数据支撑。本…

秋招Day12 - 计算机网络 - IP

IP协议的定义和作用? IP协议用于在计算机网络中传递数据包,定义了数据包的格式和处理规则,确保数据能够从一个设备传递到另一个设备,中间可能经过多个不同的设备(路由器)。 IP协议有哪些作用?…

【前端】CSS面试八股

网上现有资料已经很丰富了,我挑了些自己押面试题时总结过的来写。 Q:回流和重绘 A: 回流reflow:计算元素的几何,引发layout重绘repaint:更新元素可见样式,引发paint 回流的成本比重绘高得多&…

Redis底层数据结构之字典(Dict)

Dict基本结构 Dict我们可以想象成目录,要翻看什么内容,直接通过目录能找到页数,翻过去看。如果没有目录,我们需要一页一页往后翻,这样时间复杂度就与遍历的O(n)一样了,而用了Dict我们就可以在O(1)的时间复杂…

佰力博科技与您探讨低温介电温谱测试仪的应用领域

低温介电温谱测试应用领域有如下: 一、电子材料: 低温介电温谱测试仪广泛应用于电子材料的性能测试,如陶瓷材料、半导体材料、压电材料等。通过该设备,可以评估材料在高温或低温环境下的介电性能,为材料的优化和应用提…

【办公类-48-04】202506每月电子屏台账汇总成docx-5(问卷星下载5月范围内容,自动获取excel文件名,并转移处理)

背景需求: 1-4月电子屏表格,都是用这个代码将EXCEL数据整理成分类成3个WORD表格。 【办公类-48-04】20250118每月电子屏台账汇总成docx-4(提取EXCLE里面1月份的内容,自制月份文件夹)-CSDN博客文章浏览阅读1.2k次&…

基于 ZYNQ UltraScale+ OV5640的高速图像传输系统设计,支持国产替代

引 言 随着电子信息技术的不断进步,人工智能、医 疗器械、机器视觉等领域都在高速发展 [1] ,工业相机 是机器视觉系统中的一部分 [2] ,对工业相机而言,传 输图像的速率、传输过程的抗干扰能力是其关键, 工业相…

demo_win10配置WSL、DockerDesktop环境,本地部署Dify,ngrok公网测试

win10配置WSL、DockerDesktop环境,本地部署Dify,ngrok分享测试 一、配置WSL 1.1 开启Hyper-V 安装WSL2首先要保证操作系统可以开启hyper-v功能,默认支持开启hyper-v的版本为:Windows11企业版、专业版或教育版,而家庭版是不支持…

TablePlus:一个跨平台的数据库管理工具

TablePlus 是一款现代化的跨平台(Window、Linux、macOS、iOS)数据库管理工具,提供直观的界面和强大的功能,可以帮助用户轻松管理和操作数据库。 TablePlus 免费版可以永久使用,但是只能同时打开 2 个连接窗口&#xff…

SQL Indexes(索引)

目录 Indexes Using Clustered Indexes Using Nonclustered Indexes Declaring Indexes Using Indexes Finding Rows Without Indexes Finding Rows in a Heap with a Nonclustered Index Finding Rows in a Clustered Index Finding Rows in a Clustered Index with …

Axure 基础入门

目录 认识产品经理 项目团队* 基本概述 认识产品经理 A公司产品经理 B公司产品经理 C公司产品经理 D公司产品经理 产品经理工作范围 产品经理工作流程* 产品经理的职责 产品经理的分类 产品经理能力要求 产品工具 产品体验报告 原型设计介绍 原型设计概述 为…

结构型设计模式之Decorator(装饰器)

结构型设计模式之Decorator(装饰器) 前言: 本案例通过李四举例,不改变源代码的情况下 对“才艺”进行增强。 摘要: 摘要: 装饰器模式是一种结构型设计模式,允许动态地为对象添加功能而不改变其…