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<string, long>(); //转换为键值队
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<string, int>();
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));
}
Reids Lua 模糊查询所有key 及 相对应的集合总数的更多相关文章
- java链接mysql添加中文和模糊查询
如下内容为转载 http://sunshinechen2008.blog.163.com/blog/static/107585374201162442643967/ mysql如果不对乱码处理 ...
- c#中如何使用到模糊查询
c#中如何使用到模糊查询,先举个最简单实用的例子,可在vs控制台应用程序中输出: 定义实体类: public class Student { public int ...
- 简单的股票信息查询系统 1 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环) 2 允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来 3 允许按股票价格、涨跌幅、换手率这几列来筛选信息, 比如输入“价格>50”则把价格大于50的股票都打印,输入“市盈率<50“,则把市盈率小于50的股票都打印,不用判断等于。
'''需求:1 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环)2 允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来3 允许按股票价格 ...
- 06Mybatis_入门程序——根据用户的名字模糊查询返回List集合
本篇论文讲的是模糊查询然后返回的是一个list集合. 这片文章的案例是基于上一篇文章的,所以主要修改两处地方就可以了. 1.user.xml 2.Mybatis_first.java user.xml ...
- StackExchange.Redis加载Lua脚本进行模糊查询的批量删除和修改
前言 使用StackExchange.Redis没有直接相关的方法进行模糊查询的批量删除和修改操作,虽然可以通过Scan相关的方法进行模糊查询,例如:HashScan("hashkey&qu ...
- StackExchange.Redis 模糊查询和删除
初始化连接对象 _connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString" ...
- 关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询
前言 上一篇关系数据库常用SQL语句语法大全主要是关系型数据库大体结构,本文细说一下关系型数据库查询的SQL语法. 语法回顾 SELECT [ALL|DISTINCT] <目标列表达式>[ ...
- MySQL模糊查询
第一种最土的方法:使用like语句第二种用全文索引 有两种方法,第一种最土的方法:使用like语句第二种听涛哥说用全文索引,就在网上搜一下: 如何在MySQL中获得更好的全文搜索结果 mysql针对这 ...
- T-SQL---多值模糊查询的处理
多值模糊查询的处理 所谓多值模糊查询,就是应用程序中传递过来多个参数,对这些参数做拆分,拆分之后,对拆分结果的key值分别做模糊查询处理 对于精确匹配时,不管是单个Key值还是多个Key值,都很容易处 ...
随机推荐
- 【centOS】centOS7 下载
地址:http://mirrors.aliyun.com/centos/ 进入国内的阿里云的,这里CentOS 7提供了三种ISO镜像文件的下载:DVD ISO.Everything ISO.Mini ...
- ZooKeeper(二):多个端口监听的建立逻辑解析
ZooKeeper 作为优秀的分布系统协调组件,值得一探究竟.它的启动类主要为: 1. 单机版的zk 使用 ZooKeeperServerMain 2. 集群版的zk 使用 QuorumPeerMai ...
- 解决:perl: warning: Please check that your locale settings
问题: perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LAN ...
- char.IsWhiteSpace(str,num),TimeSpan
IsWhiteSpace(String, Int32) 指示指定字符串中位于指定位置处的字符是否属于空格类别. TimeSpan TimeSpan ts=new TimeSpan(4,30,0); C ...
- 关于yield和yield from
一.简单示例 def yield_func(): for _ in range(2): yield "12" def yield_from_func(): for _ in ran ...
- ASP.Net MVC 路由及路由调试工具RouteDebug
一.路由规则 1.可以创建多条路由规则,每条路由的name属性不相同 2.路由规则有优先级,最上面的路由规则优先级越高 App_Start文件下的:RouteConfig.cs public stat ...
- XAF-在代码中实现属性值验证(EF)
This lesson explains how to set rules for business classes and their properties. These rules are val ...
- CodeForces - 1228C(质因数分解+贡献法)
题意 https://vjudge.net/problem/CodeForces-1228C 首先先介绍一些涉及到的定义: 定义prime(x)表示x的质因子集合.举例来说,prime(140)={2 ...
- XGBoost、LightGBM参数讲解及实战
本文链接:https://blog.csdn.net/linxid/article/details/80785131XGBoost一.API详解xgboost.XGBClassifier1.1 参数1 ...
- Mybatis逆向工程中的 mybatis-generator:generate 代码生成器的使用
使用逆向工程可以根据数据库的表名字生成pojo层(实体类),mapper层(dao层,直接与底层的XML中映射相关),XML(映射执SQL语句) 下面请看具体生成步骤 1. 点击generatorCo ...