zoukankan      html  css  js  c++  java
  • 【译】StackExchange.Redis 中文文档(十一)脚本

    Scripting

    IServer.ScriptLoad(Async), IServer.ScriptExists(Async), IServer.ScriptFlush(Async), IDatabase.ScriptEvaluateIDatabaseAsync.ScriptEvaluateAsync 方法支持基础的 Lua scripting.

    这些方法公开了提交和执行 Lua 脚本以进行 redis 所需的基本命令。

    可通过 LuaScript 类获得更复杂的脚本。通过 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 的脚本中的变量重写为 redis 所需的适当的 ARGV [someIndex]。如果传递的参数类型为 RedisKey,它将作为 KEYS 集合的一部分自动发送。

    公开与 Lua 脚本中 @ 前缀变量同名的字段或属性成员的任何对象都可以用作参数哈希
    评估调用。支持的成员类型如下:

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

    为了避免每次评估时都将 Lua 脚本重新传输给 redis,可以通过 LuaScript.Load(IServer)LuaScript 对象转换为 LoadedLuaScript。用 EVALSHA 评估 LoadedLuaScripts,并由哈希引用。

    使用 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 });
    	}
    

    LuaScriptLoadedLuaScript 上的所有方法都具有 Async 替代方法,并将提交给 redis 的实际脚本公开为 ExecutableScript 属性。

    原文地址:Scripting

  • 相关阅读:
    Linux系统安装IonCube的方法详解教程
    CentOS7 安装 odoo10
    关于WPF的弹出窗口
    WPF命令使用
    WPF访问UserControl的自定义属性和事件
    一步步实现 Prism + MEF(二)--- 绑定命令
    一步步实现 Prism + MEF(一)--- 搭建框架
    MVVM里绑定TreeView控件的SelectedItem
    MAF框架的使用限制
    排序--归并排序算法
  • 原文地址:https://www.cnblogs.com/liang24/p/13847258.html
Copyright © 2011-2022 走看看