900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > key redis 模糊查询个数_Reids Lua 模糊查询所有key 及 相对应的集合总数

key redis 模糊查询个数_Reids Lua 模糊查询所有key 及 相对应的集合总数

时间:2023-02-26 08:56:10

相关推荐

key redis 模糊查询个数_Reids Lua 模糊查询所有key 及 相对应的集合总数

Redis 使用 Lua 模糊查询所有key 及 相对应的集合总数

.Net 4.5.1

需要引入: StackExchange.Redis (测试用的 1.2.4.0)

方法一:

优点:原子操作,对于大数据操作快,lua语法难写。

var Prefix = "Cache"; //Key 前缀,关键词

var dic = new Dictionary();//转换为键值队

var db = new Multiplexer(name).GetMultiplexer().GetDatabase();//redis 连接

var pattern = Prefix + "*";// 模糊查询

//lua 语法,详情可查看官方文档

var lua = @"local glob = @keypattern

local t = { }

local keys = redis.call('keys', glob)

for iter, value in ipairs(keys) do

table.insert(t, { value, redis.call('llen', value) })

end

return t";

var redisResult = db.ScriptEvaluate(LuaScript.Prepare(lua), new { @keypattern = pattern });

if (!redisResult.IsNull)

{ //将key 及value 插入 键值队

var result = (RedisResult[])redisResult;

foreach (var item in result)

{

var kvs = (RedisResult[])item;

var key = ((RedisValue)kvs.First()).ToString();

var value = (long)(RedisValue)kvs.Last();

dic.Add(key, value);

}

}

方法二:

优点:小量数据查询使用方便,需要多次与 Redis交互统计。

因为不是原子操作,存在统计出来的数据量不准确;

var dic = new Dictionary();

var _connMultiplexer = new Multiplexer(name).GetMultiplexer();

var _server = _connMultiplexer.GetServer(_connMultiplexer.GetEndPoints()[0]);

//默认一个服务器

var pattern = this.Prefix + "*";

var keys = _server.Keys(database: this.database, pattern: pattern);

var db = this.GetDatabase();

foreach (var item in keys)

{

dic.Add(item.ToString().Replace(this.Prefix, ""), db.ListLength(item));

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。