redis中,怎样使用Lua脚本实现多条件查询

aierda 2018-07-09 06:24:59

如上图,怎样使用lua脚本实现复杂条件的查询呢?期待各位大神的指导。。。。谢谢!~~

图里面的代码如下:

//SetScan<Student>("T_Student",0,"\"StudentName\":\"张三\"",10000) 这里T_Student为key,0为cursor,"\"StudentName\":\"张三\""为pattern,10000为count
public static List<T> SetScan<T>(string key, int cursor, string pattern, int count)
{
List<T> list = new List<T>();
var result = Cache.ScriptEvaluate(LuaScript.Prepare("return redis.call('SSCAN',@key,@cursor,'MATCH',@pattern,'COUNT',@count)"), new { key = key, cursor = cursor, pattern = "*" + pattern + "*", count = count });
if (!result.IsNull)
{
var vals = ((StackExchange.Redis.RedisResult[])((StackExchange.Redis.RedisResult[])result)[1]);
foreach (var item in vals)
{
list.Add(JsonSerializer.DeserializeFromString<T>(Unescape(item.ToString())));
}
}
return list;
}
...全文
837 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
aierda 2018-07-12
  • 打赏
  • 举报
回复
比如我将某些表以set 或 hash形式导入到redis中,我希望在c#代码中能够对set或hash进行多条件的组合查询。 就是这个意思
  • 打赏
  • 举报
回复
https://www.cnblogs.com/huangxincheng/p/6230129.html

不知道你卡在什么地方,找了一套lua的基本教程给你。
维秀斯丢丢 2018-07-11
  • 打赏
  • 举报
回复
不会,lua脚本至今没学习过,只写过简单的解决并发修改问题。
下载代码方式:https://pan.quark.cn/s/63cd5e2702ea 目录 [使用Redis执行Lua脚本](#使用Redis执行Lua脚本) [通过redislua达成评分排行榜即时更新](#通过redislua达成评分排行榜即时更新) [Lua脚本实例](#Lua脚本实例) Golang调用redis+lua的示例 byte数组与字符串之间的转换以优化redis执行Lua脚本EVAL命令redis执行Lua脚本必须借助EVAL命令。redis EVAL命令的结构:redis 127.0.0.1:6379> EVAL 脚本数量 键 [键 …] 参数 [参数 …]最基础的示例:127.0.0.1:6379在信息技术领域,特别是在分布式架构和缓存管理方面,运用Redis的原子操作特性是一种普遍的做法。本文将研究如何在Golang运用Lua脚本实现Redis的原子操作,以及其带来的好处和实际应用场景。Redis提供了执行Lua脚本的功能,这是因为Lua脚本Redis服务器端运行,确保了操作的原子性。`EVAL`命令是核心,其格式为`EVAL 脚本数量 键 [键 …] 参数 [参数 …]`。例如,以下指令将设置键`foo`的值为`bar`:```127.0.0.1:6379> EVAL "返回redis.call(set,KEYS[1],bar)" 1 foo```当Golang调用RedisLua脚本时,可能需要处理`byte`切片与`string`的相互转换,以符合Redis指令的格式。这通常涉及到编码和解码的过程,确保数据能够正确传输。Redis设有若干与脚本相关的指令来管理和执行Lua脚本。`script load`能够将脚本存入缓...

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧