当前位置: 首页 > news >正文

2022 RedisDays 内容揭秘

上个月,Redis举办了3场线上会议,分别介绍了即将正式发布的Redis 7中包括的重要更新的内容,还有Redis完全重写的RedisJSON 2.0模块,和新发布的Redis Stack模块。除此之外,在此次线上会议中还介绍了现代化的软件架构与Redis是如何紧密结合在一起,例如Redis与Machine Learning或者人工智能的结合。下面让我们来具体看一下在会议中提到的具体内容吧。下面我们来看一个具体的例子:

首先,让我们来看一下Redis 7提供的新特性      

1、Redis Functions: 在Redis 7.0中作为Lua脚本的升级内容

在2012年发布的Redis2.6中,Redis引入了Lua脚本这个概念。Lua脚本概念的引入使得Redis中的数据与客户的应用程序结合的更加紧密,但是不可否则,Lua脚本依然有它的局限性:Lua脚本是存在于客户端应用程序中的,一旦客户端应用重新启动,那么Lua脚本需要重新加载,这样就增加了对客户端应用程序的代码量与程序员维护程序的成本。为了解决这些问题,Redis 7.0加入了Redis Functions这个概念,Redis Functions可支持持久化,可复制,并且在节点重启之后可以直接从server端读取,并且还提供未来多种语言的API支持(目前只支持Lua)。下面我们来看一个具体的例子:

 图一:是一个名字为myscript.lua 的Lua脚本文件

我们可以看到当脚本成功执行,server端的log显示:Execution started 和Execution ended。

 图二:是这个脚本文件在客户端运行的情况

当server被重启后,这个Lua脚本如果不重新加载,那么它不会被执行,会显示错误信息。

 图三:显示信息

那么下面我们来看一下如果是Redis Functions,运行的情况是什么样的。首先让我们来看一下Lua脚本和Redis Functions脚本的共同点和区别。下图是一个名为mylib.lua的Redis Functions脚本与之前的Lua脚本的一个对比。我们可以看到,唯一的不同是在Redis Functions中执行了一条语句:

redis.register_function(“hgetset”, hgetset);

 图四:前后对比

我们看到客户端首先运行: redis-cli –x FUNCTION LOAD Lua mylib 将这个mylib加载进Redis 服务器端,然后调用redis-cli FCALL hgetset 1 myhash myfield “some other value” 去调用这个函数,最后我们可以看到成功的被执行了。

在server被重新启动之后,如果我们直接执行redis-ci FCALL …. 去调用这个函数,mylib中的函数依然可以执行成功,而不需要像Lua脚本那样重新加载。

2、ACL Selectors:  对于Redis 6.0 ACL功能的扩展(V1),可以支持更丰富和更方便的权限设置

在Redis 7 之前的ACL功能具有很多限制:例如一个用户不能对不同的键设置不同的权限(permissions);或者用户也不能对不同的键赋予不同的读写权限。在Redis 7中的ACL V2中,这些方面得到了进一步的改善:新增加了一个selector的概念,这个概念是将一系列的权限规则放在一起作为一个整体来执行(Selectors are a collection of authorization rules that are evaluated as a group), 并且用户可以执行命名以root权限执行或者作为某一个selector来执行(A user can execute a command if either the root permission or any selector authorizes the commands)。另外,在ACL V2中,Redis 新增了用户对键(key based)的权限控制能力,下面我们来看一个具体的例子:

基于Selector的例子,我们可以看到基于MADELYN用户,它对于itamar_q 是有LPOP操作权限而没有LPUSH操作权限的,但是对于madelyn_q是有LPUSH操作权限的。

基于key based 权限的例子

3、在集群方面

增加了对分片的Pub/Sub支持,并且还增加了对主机名的支持。

4、在底层数据结构中

使用listpacks替换了ziplists,并且使用了RDB 10的格式。

5、对于AOF文件,使用了多AOF机制

使得在重写过程中使用更少的内存和占用更低的I/O;第二个特点是在AOF中增加了每个键值对所对应的时间戳,为之后的Redis版本提供回滚和恢复提供了很好的支持。

RedisJSON 2.0     

RedisJSON 2.0是由RUST完全重写的,它比上一个版本提供了更强的性能,更好的稳定性和更低的内存占用率。同时,RedisJSON2.0 对文档中的特定内容提供了JSONPath的语法支持。

新的版本具有以下新特点:

1.支持文档中子元素(sub-element)的更新。这种能力基于使用了JSON 数据交换格式(ECMA 404)作为元数据类型对子元素执行原子化的更新操作,其结果是大大提高的开发者的效率并且加快了应用程序的相应速度。

2.RediSearch可以支持索引(index),可以在JSON文档中进行全文查找。

3.新版本不但对大多数流行的主流语言(JavaScript, Python, Java C#)和平台(Spring, ASP.NET, Node.js, DJango)提供支持,而且还对RedisInsight提供良好的GUI和入门指导下面提供一个具体的例子来说明一下以上提到的特点:

更新user = 1 的score部分从5到100

更新user = 1 的内嵌的profile的属性name为Sue

为user=1的属性friends数组增加user:3

 如果想了解更多关于RedisJSON2.0的内容,可以查看链接:

https://redis.com/press/redisjson-2-0-serves-as-fast-flexible-document-database/

Redis Stack    

在此次RedisDay中,Redis官方几乎花了2个小时全方面的介绍了Redis Stack,并列举了几个具体的例子来说明Redis Stack是如何与应用程序结合的。

事实上,Redis Stack一个Redis对于数据模型和处理引擎的扩展模块。它支持可查询的JSON文档,基于时间序列的数据的操作等功能。并且,Redis Stack还包括了RedisInsight,一个Redis的可视化工具。

如果想了解更多的关于Redis Stack的内容,可以查看链接(https://redis.io/docs/stack/)及我们后续关于Redis Stack专题的博客。

除了以上内容,在这3天的RedisDay中还介绍了一些Redis与人工智能,机器学习相关的应用与API,有感兴趣的各位读者可以登录Redis网站去观看相关视频:

https://redis.com/redisdays/,谢谢您继续关注我们关于Redis的相关文章。

*注:本文所有图片和例子都取自于RedisDays中的视频,感谢Redis 开源社区所有贡献者对Redis所作的贡献。

相关文章:

2022 RedisDays 内容揭秘

上个月,Redis举办了3场线上会议,分别介绍了即将正式发布的Redis 7中包括的重要更新的内容,还有Redis完全重写的RedisJSON 2.0模块,和新发布的Redis Stack模块。除此之外,在此次线上会议中还介绍了现代化的软件架构与Re…...

论文阅读——Img2LLM(cvpr2023)

arxiv:[2212.10846] From Images to Textual Prompts: Zero-shot VQA with Frozen Large Language Models (arxiv.org) 一、介绍 使用大语言模解决VQA任务的方法大概两种:multi-modal pretraining and language-mediated VQA,即多模态预训练…...

南京大学考研机试题DP

3. dp 求子序列的个数 https://www.acwing.com/problem/content/description/3716/ #include <iostream> #include <cstring> #include <algorithm> #include <unordered_set> #include <vector> using namespace std; const int N 1e4 10…...

如何进行多ip服务器租用?

如何进行多ip服务器租用&#xff1f; 对于网络时代来说&#xff0c;是需要很多设备才能维持的&#xff0c;比如说多ip服务器就是互联网时代常见的设备&#xff0c;所以我们需要对多ip服务器有足够的了解&#xff0c;这样才能更好的获取互联网上的信息&#xff0c;满足我们工作…...

(动手学习深度学习)第13章 实战kaggle竞赛:树叶分类

文章目录 实战kaggle比赛&#xff1a;树叶分类1. 导入相关库2. 查看数据格式3. 制作数据集4. 数据可视化5. 定义网络模型6. 定义超参数7. 训练模型8. 测试并提交文件 竞赛技术总结1. 技术分析2. 数据方面模型方面3. AutoGluon4. 总结 实战kaggle比赛&#xff1a;树叶分类 kagg…...

vue中shift+alt+f格式化防止格式掉其它内容

好处就是使得提交记录干净&#xff0c;否则修改一两行代码&#xff0c;习惯性按了一下格式化快捷键&#xff0c;遍地飘红&#xff0c;下次找修改就费时间 1.点击设置图标-设置 2.点击这个转成配置文件 {"extensions.ignoreRecommendations": true,"[vue]":…...

WPS导出的PDF比较糊,和原始的不太一样,将带有SVG的文档输出为PDF

一、在WPS的PPT中 你直接输出PDF可能会导致一些问题&#xff08;比如照片比原来糊&#xff09;/ 或者你复制PPT中的图片到AI中类似的操作&#xff0c;得到的照片比原来糊&#xff0c;所以应该选择打印-->高级打印 然后再另存为PDF 最后再使用AI打开PDF文件再复制到你想用…...

Linux /etc/hosts文件

Linux的 /etc/hosts 文件用于静态地映射主机名到 IP 地址。 通常用于本地网络中的名称解析&#xff0c;它可以覆盖 DNS 的设置。当你访问一个域名时&#xff0c;系统会首先检查 /etc/hosts 文件&#xff0c;如果找到了匹配项&#xff0c;就会使用该 IP 地址&#xff0c;否则会…...

webpack学习-3.管理输出

webpack学习-3.管理输出 1.简单练手2.设置 HtmlWebpackPlugin3.清理 /dist 文件夹4.manifest5.总结 1.简单练手 官网的第一个预先准备&#xff0c;是多入口的。 const path require(path);module.exports {entry: {index: ./src/index.js,print: ./src/print.js,},output: …...

【Go语言反射reflect】

Go语言反射reflect 一、引入 先看官方Doc中Rob Pike给出的关于反射的定义&#xff1a; Reflection in computing is the ability of a program to examine its own structure, particularly through types; it’s a form of metaprogramming. It’s also a great source of …...

LC-1466. 重新规划路线(DFS、BFS)

1466. 重新规划路线 中等 n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成一颗树&#xff09;。去年&#xff0c;交通运输部决定重新规划路线&#xff0c…...

自动数据增广论文笔记 | AutoAugment: Learning Augmentation Strategies from Data

谷歌大脑出品 paper: https://arxiv.org/abs/1805.09501 这里是个论文的阅读心得&#xff0c;笔记&#xff0c;不等同论文全部内容 文章目录 一、摘要1.1 翻译1.2 笔记 二、(第3部分)自动增强:直接在感兴趣的数据集上搜索最佳增强策略2.1 翻译2.2 笔记 三、跳出论文&#xff0c…...

CTF 7

信息收集 存活主机探测 arp-scan -l 端口探测 nmap -sT --min-rate 10000 -p- 192.168.0.5 服务版本等信息 nmap -sT -sV -sC -O -p22,80,137,138,139,901,5900,8080,10000 192.168.0.5Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-02 21:23 CST Stats: 0:01:30 elaps…...

无公网IP环境Windows系统使用VNC远程连接Deepin桌面

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…...

java--枚举

1.枚举 枚举是一种特殊类 2.枚举类的格式 注意&#xff1a; ①枚举类中的第一行&#xff0c;只能写一些合法的标识符(名称)&#xff0c;多个名称用逗号隔开。 ②这些名称&#xff0c;本质是常量&#xff0c;每个常量都会记住枚举类的一个对象。 3.枚举类的特点 ①枚举类的…...

JVM垃圾回收机制GC

一句话介绍GC&#xff1a; 自动释放不再使用的内存 一、判断对象是否能回收 思路一&#xff1a;引用计数 给这个对象里安排一个计数器&#xff0c; 每次有引用指向它&#xff0c; 就把计数器1&#xff0c; 每次引用被销毁&#xff0c;计数器-1&#xff0c;当计数器为0的时候…...

详解JAVA中的@ApiModel和@ApiModelProperty注解

目录 前言1. ApiModel注解2. ApiModelProperty注解3. 实战 前言 在Java中&#xff0c;ApiModel和ApiModelProperty是Swagger框架&#xff08;用于API文档的工具&#xff09;提供的注解&#xff0c;用于增强API文档的生成和展示。这两者搭配使用更佳 使用两者注解&#xff0c;…...

TiDB专题---2、TiDB整体架构和应用场景

上个章节我们讲解了TiDB的发展和特性&#xff0c;这节我们讲下TiDB具体的架构和应用场景。首先我们回顾下TiDB的优势。 TiDB的优势 与传统的单机数据库相比&#xff0c;TiDB 具有以下优势&#xff1a; 纯分布式架构&#xff0c;拥有良好的扩展性&#xff0c;支持弹性的扩缩容…...

性能调优入门

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、性能定律和数理基础 1.三个定律法则 (1)帕累托法则 我它也被称为 80/20 法则、关键少数法则&#xff0c;或者八二法则。人们在生活中发现很多…...

JavaWeb | 验证码 、 文件的“上传”与“下载”

目录&#xff1a; 验证码 和 文件的“上传”与“下载”1.验证码1.1在JSP上开发验证码 2.“文件上传” 和 “文件下载”2.1“文件上传 ”2.2“文件下载” 验证码 和 文件的“上传”与“下载” 1.验证码 验证码&#xff1a;就是由服务器生成的一串随机数字或符号形成一幅图片&am…...

终极解决方案:3分钟免费恢复微信网页版完整访问权限

终极解决方案&#xff1a;3分钟免费恢复微信网页版完整访问权限 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为微信网页版无法登录而烦恼吗&am…...

如何高效使用Umi-OCR:免费离线文字识别工具实用指南

如何高效使用Umi-OCR&#xff1a;免费离线文字识别工具实用指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片&#xff0c;PDF文档识别&#xff0c;排除水印/页眉页脚&#xff0c;扫描/生成二维码。内置多国语言库…...

紧急通知:FAO 2024渔业AI伦理新规已生效!NotebookLM合规使用红线清单(含数据脱敏、模型可解释性、渔民知情权三重校验表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;FAO 2024渔业AI伦理新规核心要义与NotebookLM适配总览 联合国粮农组织&#xff08;FAO&#xff09;于2024年3月发布的《人工智能在渔业与水产养殖中的伦理应用指南》&#xff0c;首次将“可追溯性权”“…...

学Simulink——电池储能系统(BESS)双向DC-AC逆变器的恒压恒频(V/f)控制

目录 手把手教你学Simulink——电池储能系统(BESS)双向DC-AC逆变器的恒压恒频(V/f)控制 一、背景与挑战 1.1 什么是 V/f 控制?为什么 BESS 需要它? 1.2 核心痛点与设计目标 二、系统架构与核心控制推导 2.1 整体架构:电压源特性的“自主构建” 2.2 核心数学推导:…...

猫抓Cat-Catch终极指南:3分钟掌握浏览器资源嗅探完整方案

猫抓Cat-Catch终极指南&#xff1a;3分钟掌握浏览器资源嗅探完整方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常遇到这样的困扰&am…...

MATLAB图像处理实战:用形态学开闭运算5分钟搞定椒盐噪声去除

MATLAB图像处理实战&#xff1a;5分钟用形态学开闭运算高效去除椒盐噪声 在数字图像处理领域&#xff0c;椒盐噪声是最常见的干扰类型之一——那些随机分布在图像上的黑白噪点&#xff0c;就像撒在照片上的胡椒和盐粒。对于工程师和科研人员来说&#xff0c;如何快速有效地去除…...

射频链路中 Coupler(耦合器)的作用分析

射频链路中 Coupler(耦合器)工程解析报告 ——原理、系统作用、工程实现及 Bi‑Directional Coupler 全解 1. Coupler 在射频链路里“到底起什么作用”(工程结论) Coupler 的本质作用只有一句话: 在**“不显著影响主射频链路”的前提下,抽取一小部分、方向可控的射频能量…...

告别混合写法!详解Nginx 1.25.1中独立的http2指令配置与性能影响

Nginx 1.25.1 HTTP/2配置革新&#xff1a;架构演进与性能实践指南 当Nginx 1.25.1的更新日志中出现"http2指令独立"这一行文字时&#xff0c;许多资深运维工程师的配置管理哲学正在被悄然改写。这不仅仅是语法糖的调整&#xff0c;而是反映了Web服务器架构设计从&quo…...

ElevenLabs电话语音真实落地难题全解(2024最新API v2.1+PSTN网关适配手册)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs电话语音真实落地的行业价值与技术定位 ElevenLabs 的实时语音合成&#xff08;TTS&#xff09;与语音克隆能力&#xff0c;已突破实验室演示阶段&#xff0c;正深度嵌入金融催收、远程医疗问…...

从Axure原型到智能运营:构建共享充电桩后台管理系统的核心模块与实战场景

1. 从Axure原型到智能运营的完整链路 第一次接触共享充电桩后台管理系统设计时&#xff0c;我和很多产品经理一样&#xff0c;以为画完Axure原型就万事大吉。直到实际开发阶段才发现&#xff0c;原型设计只是万里长征的第一步。真正考验人的是如何把静态的线框图转化为具备智能…...