【Redis】笔记|第9节|Redis Stack扩展功能

Redis Stack 扩展功能笔记(基于 Redis 7)


一、Redis Stack 概述
  • 定位:Redis OSS + 扩展模块(JSON、搜索、布隆过滤器等),提供高级数据处理能力。
  • 核心模块
    • RedisJSON:原生 JSON 支持,支持路径查询和原子操作。
    • Search and Query:全文搜索(类似 ElasticSearch),支持复杂条件过滤。
    • Bloom Filter:高效判断元素是否存在(节省空间,有误判率)。
    • Cuckoo Filter:支持删除操作的布隆过滤器改进版。

二、核心扩展功能详解
  1. Redis JSON
    • 功能
      • 存储/查询 JSON 数据:JSON.SET user $ '{"name":"loulan"}'
      • 路径操作:JSON.GET user $.nameJSON.NUMINCRBY user $.age 2
      • 数组操作:JSON.ARRAPPEND user $.hobbies '"swimming"'
    • 优势
      • 二进制存储(高效省内存),性能媲美 MongoDB。
      • 与 Redis 生态(TTL、事务)无缝集成。
  2. Search and Query
    • 传统 SCAN 缺陷
      • 仅支持简单 Key 过滤:SCAN 0 MATCH k* COUNT 20(阻塞风险)。
    • RedisSearch 方案
      • 创建索引(支持 JSON/HASH):
FT.CREATE productIndex ON JSON SCHEMA $.name AS name TEXT $.price AS price NUMERIC  
      • 复杂查询(电商场景):
FT.SEARCH productIndex "@name:HUAMET @price:[1000 5000]" RETURN 2 id name  
  1. Bloom Filter
    • 原理:位数组 + 多哈希函数(空间高效,存在误判)。
    • 使用场景:缓存穿透防护(快速拦截无效请求)。
    • Redis 操作
BF.RESERVE bf 0.01 1000  # 创建(容错率1%,容量1000)  
BF.ADD bf A              # 添加元素  
BF.EXISTS bf a           # 检查(返回1可能存在,0一定不存在)  
  1. Cuckoo Filter
    • 改进点:支持删除(CF.DEL),空间利用率更高。
    • 参数:桶大小(BUCKETSIZE)影响误判率和性能(默认 2)。
    • 创建
CF.RESERVE cf 1000 BUCKETSIZE 2 MAXITERATIONS 20  

三、扩展模块集成
  1. 手动安装:(Redis8不用安装,默认集成,或者用redis-stack:v7.4.0-v5的Docker镜像也集成了stack
    • 从 Redis 下载中心 获取模块(如 redisbloom.so)。
    • 配置加载:
loadmodule /path/redisbloom.so  
    • 验证:MODULE LIST
  1. Java 客户端调用
    • 通过 Lua 脚本执行扩展命令(需处理模块未加载异常):
// 创建布隆过滤器  
String script = "return redis.call('BF.RESERVE', KEYS[1], '0.01','1000')";  
redisTemplate.execute(new DefaultRedisScript<>(script, String.class), keys);  

四、Redis 8 新特性补充
基于 Redis 8 与 Redis Stack 的演进:
  1. 原生 JSON 性能优化
    • 支持完整 JSONPath 语法,增强查询灵活性。
  2. 向量搜索(Vector Search)
    • 新增 RedisVL 模块,支持 AI 向量相似度搜索(集成 Hugging Face 模型)。
  3. 客户端缓存改进
    • 服务端辅助的客户端缓存(Tracking),减少网络开销。
  4. 持久化增强
    • 多线程 AOF 重写,提升大数据集持久化效率。
注意:Redis Stack 从 8 开始与 Redis OSS 版本号对齐,扩展模块更新更紧密。

参考:Redis Stack 官方文档 | Redis 8 Release Notes

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

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

相关文章

如何选择专业数据可视化开发工具?为您拆解捷码全功能和落地指南!

分享大纲&#xff1a; 1、捷码核心功能&#xff1a;4维能力支撑大屏开发 2、3步上手&#xff1a;可视化大屏开发操作路径 3、适配场景&#xff1a;8大行业已验证方案 在各行各业要求数字化转型时代&#xff0c;数据可视化大屏已成为众多企业数据驱动的核心工具。面对市场上繁杂…

测试W5500的第11步_使用ARP解析IP地址对应的MAC地址

本文介绍了基于W5500芯片的ARP协议实现方法&#xff0c;详细阐述了ARP请求与回复的工作机制。ARP协议通过广播请求和单播回复实现IP地址与MAC地址的映射&#xff0c;确保局域网设备间的可靠通信。文章提供了完整的STM32F10x开发环境下的代码实现&#xff0c;包括网络初始化、SP…

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…

IDEA 打开文件乱码

问题&#xff1a;文件乱码 底部编码无法切换 解决方案&#xff1a; 第一步 使用Nodepad 查询文件编码 本项目设置为 转为 UTF-8 无 BOM 第二步&#xff1a;在 IntelliJ IDEA 中&#xff1a;右键点击文件 → File Encoding → 选择目标编码&#xff08;如 UTF-8&#xff09; 最…

float、double 这类 浮点数 相比,DECIMAL 是另一种完全不同的数值类型

和 float、double 这类**“浮点数”**相比&#xff0c;DECIMAL 是另一种完全不同的数值类型&#xff0c;叫做&#xff1a; ✅ DECIMAL 是什么&#xff1f; DECIMAL 是“定点数”类型&#xff08;fixed-point&#xff09;&#xff0c;用于存储精确的小数值&#xff0c;比如&…

Java应用10(客户端与服务器通信)

Java客户端与服务器通信 Java提供了多种方式来实现客户端与服务器之间的通信&#xff0c;下面我将介绍几种常见的方法&#xff1a; 1. 基于Socket的基本通信 服务器端代码 import java.io.*; import java.net.*;public class SimpleServer {public static void main(String…

pytorch基本运算-范数

引言 前序学习进程中&#xff0c;已经对pytorch基本运算有了详细探索&#xff0c;文章链接有&#xff1a; 基本运算 广播失效 乘除法和幂运算 hadamard积、点积和矩阵乘法 上述计算都是以pytorch张量为运算元素&#xff0c;这些张量基本上也集中在一维向量和二维矩阵&#x…

EasyRTC音视频实时通话助力新一代WebP2P视频物联网应用解决方案

一、方案背景​ 物联网技术深刻变革各行业&#xff0c;视频物联在智慧城市、工业监控等场景广泛应用。传统方案依赖中心服务器中转&#xff0c;存在传输效率低、网络负载大的问题。新一代WebP2P视频物联技术实现设备直连&#xff0c;降低网络压力并提升传输效率&#xff0c;成…

DAY 15 复习日

浙大疏锦行 数据使用爬虫爬取weibo数据&#xff0c;下面是代码 import datetime import os import csv import timeimport numpy as np import random import re import urllib.parse import requests from fake_useragent import UserAgentdef init():if not os.path.exists…

SSL/TLS 协议详解:安全通信的基石

一、概述 SSL&#xff08;Secure Sockets Layer&#xff09; 及其继任者 TLS&#xff08;Transport Layer Security&#xff09; 是位于 传输层&#xff08;TCP&#xff09;与应用层之间 的加密协议&#xff0c;用于在网络通信中实现 机密性、身份认证和数据完整性。 核心目标…

使用子树合并策略更新git项目的部分目录

背景 正在开发的一个项目中引用了第三方库的源码&#xff0c;由于历史原因&#xff0c;源码的引用并不是很规范&#xff08;直接下载下来后作为自己项目的部分源码使用&#xff0c;还进行了一些修改&#xff09;&#xff0c;具体如下&#xff1a; 我有一个本地git项目project…

pikachu通关教程-CSRF

CSRF(get) 用bp进行抓包 选择action value值的修改 点击test in browser copy然后放在bp代理的浏览器上&#xff0c;会出现一个提交按钮&#xff0c;这时候点击之后信息就被修改了。 CSRF(post) 请求的方式不同&#xff0c;其他都是一样 CSRF Token 存在cookie 首先要先下载一…

AI驱动游戏开发:Unity与ML-Agents结合

AI驱动游戏开发&#xff1a;Unity与ML-Agents结合 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 AI驱动游戏开发&#xff1a;Unity与ML-Agents结合摘要引言技术架构与开发流程1. Unity与ML-Agents协同机制2. 开发…

如何给windos11 扩大C盘容量

动不动C盘就慢了&#xff0c;苹果逼着用户换手机&#xff0c;三天两头更新系统&#xff0c;微软也是毫不手软。c盘 从10个G就够用&#xff0c;到100G 也不够&#xff0c;看来通货膨胀是部分行业的。 在 Windows 11 中扩大 C 盘容量&#xff0c;主要取决于磁盘分区布局和可用空…

Kafka入门-消费者

消费者 Kafka消费方式&#xff1a;采用pull&#xff08;拉&#xff09;的方式&#xff0c;消费者从broker中主动拉去数据。使用pull的好处就是消费者可以根据自身需求&#xff0c;进行拉取数据&#xff0c;但是坏处就是如果Kafka没有数据&#xff0c;那么消费者可能会陷入循环…

SpringBoot自动化部署实战技术文章大纲

技术背景与目标 介绍SpringBoot在现代开发中的重要性自动化部署的价值&#xff1a;提升效率、减少人为错误、实现CI/CD适用场景&#xff1a;中小型Web应用、微服务架构 自动化部署核心方案 基于Docker的容器化部署 SpringBoot应用打包为Docker镜像使用Docker Compose编排多容…

TDengine 集群运行监控

简介 为了确保集群稳定运行&#xff0c;TDengine 集成了多种监控指标收集机制&#xff0c;并通过 taosKeeper 进行汇总。taosKeeper 负责接收这些数据&#xff0c;并将其写入一个独立的 TDengine 实例中&#xff0c;该实例可以与被监控的 TDengine 集群保持独立。TDengine 中的…

C# 委托UI控件更新例子,何时需要使用委托

1. 例子1 private void UdpRxCallBackFunc(UdpDataStruct info) {// 1. 前置检查防止无效调用if (textBoxOutput2.IsDisposed || !textBoxOutput2.IsHandleCreated)return;// 2. 使用正确的委托类型Invoke(new Action(() >{// 3. 双重检查确保安全if (textBoxOutput2.IsDis…

[10-2]MPU6050简介 江协科技学习笔记(22个知识点)

1 2 3 欧拉角是描述三维空间中刚体或坐标系之间相对旋转的一种方法。它们由三个角度组成&#xff0c;通常表示为&#xff1a; • 偏航角&#xff08;Yaw&#xff09;&#xff1a;绕垂直轴&#xff08;通常是z轴&#xff09;的旋转&#xff0c;表示偏航方向的变化。 • 俯仰角&a…

虚拟环境共享系统包

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 虚拟环境共享系统包 python basic_pipelines/detection.py如果报错显示如下&#xff1a; Traceback (most recent call last):File "/home/ai/hailort/hailo-rpi5-exam…