StackExchange.Redis官方文档(八)【脚本】

使用 StackExchange.Redis 在 C# 中开始使用 Redis Redis(Remote Dictionary Server)是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种类型的数据结构,如字符串(strings)、哈希表(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)与位图(bitmaps)、超日志(hyperloglogs)和地理空间(geospatial)索引半径查询等。 阅读详情

脚本

我们通过 IServer.ScriptLoad(Async), IServer.ScriptExists(Async), IServer.ScriptExists(Async), IDatabase.ScriptEvaluate, 还有 IDatabaseAsync.ScriptEvaluateAsync 方法来执行 Lua脚本,使用这些方法提交执行Lua脚本到Redis。

可以使用 LuaScript 类来实现更复杂Lua脚本。LuaScript 类使脚本的编写和参数的提交更加简单,并且允许你使用更清晰的变量名。

LuaScript 的示例如下:

const string Script = "redis.call('set', @key, @value)";

using (ConnectionMultiplexer conn = /* init code */)
{
    var db = conn.GetDatabase(0);

    var prepared = LuaScript.Prepare(Script);
    db.ScriptEvaluate(prepared, new { key = (RedisKey)"mykey", value = 123 });
}

LuaScript 类重写了脚本中形式为:@myVar的变量,使之以符合 ARGV[someIndex] 的需要。如果传递的参数是 RedisKey 类型,它会自动的作为 KEYS 集合的一部分发送。

任何对象的公开字段或者属性成员可以在Lua脚本中以@为前缀(使用与公开成员相同的名字,例如:类里面有个name的属性,那么变量就是@name)的变量来使用,且被作为 Evaluate 调用的Hash参数。
成员类型可以是:

  • int(?)
  • long(?)
  • double(?)
  • string
  • byte[]
  • bool(?)
  • RedisKey
  • RedisValue

为了避免重新发送Lua脚本到Redis,通过调用 LuaScript.Load(IServer) 方法可以将 LuaScript 对象转换为 LoadedLuaScript。LoadedLuaScript 可以执行 EVALSHA 命令(在脚本比较长的情况下,如果每次调用脚本都需要将整个脚本传给Redis会占用较多的带宽。为了解决这个问题,Redis提供了EVALSHA命令,允许开发者通过脚本内容的SHA1摘要来执行脚本,该命令的用法和EVAL一样,只不过是将脚本内容替换成脚本内容的SHA1摘要。)。

LoadedLuaScript 的示例如下:

 const string Script = "redis.call('set', @key, @value)";

using (ConnectionMultiplexer conn = /* init code */)
{
    var db = conn.GetDatabase(0);
    var server = conn.GetServer(/* appropriate parameters*/);

    var prepared = LuaScript.Prepare(Script);
    var loaded = prepared.Load(server);
    loaded.Evaluate(db, new { key = (RedisKey)"mykey", value = 123 });
}

LuaScript 和 LoadedLuaScript 的所有方法都有异步方法(*Async)的实现,我们可以调用Evaluate/EvaluateAsync方法把 ExecutableScript 属性的值(Lua脚本)提交到Redis。

Redis与C#集成示例:StackExchange.Redis操作指南 Redis是一个开源的高性能键值存储数据库,以其在数据结构服务器领域的卓越性能而闻名。作为内存中的数据结构存储,它支持多种类型的数据结构,如字符串(strings)、哈希(hash)、列表(lists)、集合(sets)、有序集合(sorted sets)、位图(bitmaps)、超日志(hyperloglogs)和地理空间索引(geospatial indexes)。Redis的高性能和灵活性使其成为构建复杂应用程序的理想选择,特别是在需要高速读写能力和多样数据结构的场景中。 阅读详情

相关推荐

不止于ACC:用CarSim的‘Multiple Objects’和路径跟踪器玩转复杂交通流场景

本文深入探讨了如何利用CarSim的'Multiple Objects'模块和路径跟踪器模拟复杂交通流场景,超越传统ACC测试的局限。通过批量控制、动态交互和参数化设计,实现多车智能响应和复杂轨迹模拟,适用于连续变道、拥堵博弈、匝道汇流等真实交通场景。

weixin_30954265的博客 497

stackexchange.mysql_StackExchange.Redis加载Lua脚本进行模糊查询的批量删除和修改

前言使用StackExchange.Redis没有直接相关的方法进行模糊查询的批量删除和修改操作,虽然可以通过Scan相关的方法进行模糊查询,例如:HashScan("hashkey", "*key*"),然后再使用相关的方法进行相关的批量操作,但是如果缓存数据量比较大,效率低下,那么可以使用Lua脚本进行模糊查询的批量操作:ScriptEvaluate(LuaScript.Prepare(......

weixin_30272849的博客 472

【图神经网络】从0到1使用PyG手把手创建异构图

异构图的准确定义如下:异构图(Heterogeneous Graphs):一个异构图GGG有一组节点V=v1,v2,...,vnV=v_1,v_2,...,v_nV=v1​,v2​,...,vn​和一组边E=e1,e2,...,emE=e_1,e_2,...,e_mE=e1​,e2​,...,em​组成,其中每个节点和每条边都对应着一种类型,用TvT_vTv​表示节点类型的集合,TeT_eTe​表示边类型的集合,一个异构图有两个映射函数,分别将每个节点映射到其对应的类型ϕv:V→Tv\phi_v:V\rig

小哲的博客 7830

StackExchange.Redis中的Lua脚本支持详解

在现代Redis应用中,Lua脚本是一个强大的功能,它允许开发者将多个Redis命令组合成一个原子操作。StackExchange.Redis作为.NET平台下优秀的Redis客户端,提供了完整的Lua脚本支持。本文将深入解析StackExchange.Redis中的Lua脚本功能,帮助开发者更好地利用这一特性。 ## 基础脚本支持 StackExchange.Redis通过一组核心方法提供了...

gitblog_00200的博客 386

LM Studio Bionic:本地AI智能体从部署到实战完整指南

AI智能体作为能够自主规划、执行多步任务的人工智能系统,其核心原理在于结合大语言模型的推理能力与工具调用机制。通过状态保持和任务分解算法,智能体实现了从单次问答到持续协作的技术跃迁。在工程实践中,这种架构显著降低了复杂任务自动化的门槛,特别适用于数据敏感场景和定制化需求。以Tesla V100等专业硬件为例,本地部署能充分发挥其大显存优势,支持更高精度的模型量化格式。在实际应用层面,智能体可无缝集成到代码审查、文档生成等开发工作流中,而LM Studio Bionic通过统一界面整合了模型服务、任务规划器等

weixin_29053695的博客 646

自动换挡频率计的设计精髓:如何用数字电路优雅地解决量程切换难题

本文深入解析了自动换挡频率计的设计精髓,重点探讨如何利用数字电路优雅解决量程切换难题。通过74系列通用数字集成电路构建智能化的自动量程切换系统,详细介绍了状态检测、决策逻辑和档位执行等核心模块的设计方法,并对比了不同实现方案的优劣,为电子测量领域的工程师提供了实用的硬件设计参考。

weixin_27869497的博客 407

Redis 使用 Lua 脚本进行原子操作

Redis 使用 Lua 脚本进行原子操作Intro之前写过一篇文章也是 Redis 使用 LUA 脚本实现分布式的 CAS 操作,可以参考:基于 Redis 实现 CAS 操作最近使用 ...

dotNET跨平台 615

Xilinx DMA IP核心配置与实战解析

本文介绍了Xilinx DMA IP核在直接寄存器模式下的配置与工作流程。DMA通过AXI4-Lite接口接收指令,实现内存与数据流之间的高速传输,无需CPU介入。文章详细说明了开发环境配置、IP参数设置(包括地址位宽、数据宽度等关键参数)以及寄存器操作流程。通过仿真分析,展示了读操作中AXI4接口的突发传输机制,包括地址、长度和突发大小的配置。文中还提供了寄存器地址映射表、信号定义等关键信息,为DMA IP核的应用开发提供了实用参考。

weixin_37688766的博客 883

StackExchange.Redis官方文档(四)【键、值以及通道】

键、值以及通道在对待Redis时候,键和其他的事物之间有个相当重要的区别。键是在数据库中一段数据的唯一标识(可能String,List,Hash或者其他的Redis数据类型)。键是没有任何实质意义,就是一个简单的名字。进一步说:当处理集群或者分片系统时,它就是定义在包含数据的节点上的Key,所以对于命令传送来说key是至关重要的。值是相对于键来存储的。要么是单个(String数据)要么一组组的。值不

极客神殿 3804

Windows原生环境配置Tensorflow使用GPU

本文讲解如何在Windows原生环境搭建可调用GPU设备进行计算的Tensorflow2.x环境。 区别于WSL,使用Windows原始环境作为开发环境。

天然玩家的博客 1496

(九)DFI接口时序

文章目录一、DFI Interface 一、DFI Interface   DFI接口是连接DDR Controller与DDR_PHY之间的通用接口,其信号组如下表:       

Mr.翟的博客 1万+

StackExchange.Redis加载Lua脚本进行模糊查询的批量删除和修改

前言 使用StackExchange.Redis没有直接相关的方法进行模糊查询的批量删除和修改操作,虽然可以通过Scan相关的方法进行模糊查询,例如:HashScan("hashkey", "*key*"),然后再使用相关的方法进行相关的批量操作,但是如果缓存数据量比较大,效率低下,那么可以使用Lua脚本进行模糊查询的批量操作:ScriptEvaluate(LuaScript.Prep...

a963508700的博客 713

【DeepSeek R1构建本地RAG知识库】数据结构化清洗-工作流自动清洗

在构建本地RAG知识库时,数据结构化清洗是关键但繁琐的步骤。传统方法效率低且易出错,而低代码/无代码平台如Dify提供了更高效的解决方案。Dify通过可视化工作流设计,集成大模型智能处理,支持多格式输入输出,无需编码即可完成复杂的数据清洗任务。文章详细介绍了数据结构化的核心困境、目标、价值及类型,并比较了TXT与Markdown在RAG系统中的适用性。最后,通过Dify平台实战演示了如何在20分钟内完成规则制度文档的结构化清洗,输出标准化数据,展示了自动化工作流在数据处理中的高效性和便捷性。

少说,多做 1219

C#操作redis(StackExchange.Redis)

C#操作redis 入门步骤: 安装redis–安装可视化软件RedisDesktopManager–C#操作redis 前两步软件的安装教程很多,这里不赘述。 一、类库的选择 在C#中使用Redis,一般有两种方式: 1、ServiceStack.Redis,据说是Redis官方推荐使用的驱动类库,但是是收费的。 2、StackExchange.Redis,可能性能要比ServiceStack.Redis差点,但是是免费的。 经过多方调研,我选用StackExchange.Redis来实现Redis操作,

Ancolie的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

StackExchange.Redis的基本使用

StackExchange.Redis是一款免费的操作Redis的客户端工具,我们使用这个库来简单的学习下Redis的一些基本操作 Redis默认安装好后的端口是6379 密码可以自己设置,使用命令修改 config get requirepass //获取当前密码 config set requirepass "yourpassword"//设置当前密码 代码里需引用StackExch...

飞翔的学习笔记 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

.NetCore 使用StackExchange.Redis 连接Redis

StackExchange.Redis是一个.Net平台上使用较为广泛的一个Redis封装 1.安装Redis 前提是得先在本机上安装Redis,由于我是在window上,访问以下链接下载windows安装包 https://github.com/microsoftarchive/redis/releases 若是安装在linux中,则直接访问redis.io ,redis官网上...

Stay Hungry 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

StackExchange.Redis 官方文档导读与快速入门:.NET 高性能 Redis 客户端全指南

本篇指南以仓库官方文档索引 [docs/index.md](https://link.gitcode.com/i/ac79f8c5b51cfaf6469223cf33af04b8) 为骨架,系统梳理 StackExchange.Redis 的核心特性、安装方式、编程模型(多路复用/管道/异步)与全部官方文档地图,并深入源码印证关键实现。读者读完将掌握:如何安装并快速创建可复用的 `Connecti

gitblog_00578的博客 420

StackExchange.Redis 官方文档

StackExchange.Redis 官方文档 原文:StackExchange.Redis 官方文档时隔多年的翻译终于完成了第六个,也是很重要的的官方文档,是介绍有关链接管理,管道流水线和多路复用的 官方地址在这里:官方文档 下面做个汇总: StackExchange.Redis 官方文档(一) Basics StackExchan...

weixin_30302609的博客 126

StackExchange.Redis的基本用法

基本用法 StackExchange.Redis中的中心对象是名称空间中的ConnectionMultiplexer类StackExchange.Redis。这是隐藏多个服务器详细信息的对象。由于ConnectionMultiplexer功能很多,因此可以在调用方之间共享和重用它。您不应该创建ConnectionMultiplexer每个操作。它是完全线程安全的,并且可以用于此用途。在所有后续示例中,将假定您已ConnectionMultiplexer保存一个实例以供重用。但是现在,让我们创建一个。这可以

https://github.com/conanl5566 6808

StackExchange.Redis 官方文档(五) Keys, Values and Channels

StackExchange.Redis 官方文档(五) Keys, Values and Channels 原文:StackExchange.Redis 官方文档(五) Keys, Values and ChannelsKeys, Values and Channels 在使用redis的过程中,要注意到 key 和 everthing el...

weixin_30950887的博客 1138

Redis数据结构工具箱:StackExchange.Redis.Extensions Bitmap、HyperLogLog与Lua脚本一文精通

**StackExchange.Redis.Extensions** 是一款让 .NET 应用更简单操作 Redis 的扩展库,它在原生 StackExchange.Redis 之上封装了序列化、连接池和高阶 API。本文带你一文精通三大 Redis 数据结构利器:**Bitmap(位图)**、**HyperLogLog(基数估算)** 与 **Lua 脚本(原子操作)**,快速解决去重统计、活跃

gitblog_00949的博客 316

StackExchange.Redis 使用LuaScript脚本模糊查询hash

StackExchange.Redis 使用LuaScript脚本模糊查询hash 原文:StackExchange.Redis 使用LuaScript脚本模糊查询hash 获取redis连接 public class RedisHelp...

weixin_30642267的博客 383

StackExchange.Redis Lua脚本集成终极指南:如何在.NET中高效执行Redis脚本

StackExchange.Redis作为.NET平台下最流行的通用Redis客户端,提供了强大的Lua脚本执行能力。通过Lua脚本,开发者可以在Redis服务器端执行复杂逻辑,实现原子性操作,大幅提升应用性能。🎯 ## 什么是Redis Lua脚本? Redis Lua脚本允许你在Redis服务器上执行自定义逻辑,具有以下核心优势: - **原子性操作**:整个脚本作为一个事务执行,不会

gitblog_00797的博客 450

StackExchange.Redis的timeout问题

最近在使用StackExchange.Redis的时候,经常出现一个BUG Timeout performing SET XXX, inst: 27, mgr: ProcessReadQueue, err: never, queue: 3, qu: 0, qs: 3, qc: 0, wr: 0, wq: 0, in: 15, ar: 1, clientName: XXX, serverEndpo...

烟花易冷 1万+

【redis学习总结】C# StackExchange Redis

链接: https://pan.baidu.com/s/1lZ0vGsQb4CHrPIdO26Q8pg 密码: fvnb文件在这里,有兴趣可以看看先一步一步封装吧。首先是ConfigurationHelperpublic static class ConfigurationHelper { internal static T Get<T>(string appS...

lancher2048的博客 3681
上一篇: StackExchange.Redis官方文档(七)【性能分析】
下一篇: ABP官方文档(一)【入门介绍】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值