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 及 相对应的集合总数的更多相关文章

  1. java链接mysql添加中文和模糊查询

    如下内容为转载 http://sunshinechen2008.blog.163.com/blog/static/107585374201162442643967/     mysql如果不对乱码处理 ...

  2. c#中如何使用到模糊查询

    c#中如何使用到模糊查询,先举个最简单实用的例子,可在vs控制台应用程序中输出: 定义实体类:  public class Student        {            public int ...

  3. 简单的股票信息查询系统 1 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环) 2 允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来 3 允许按股票价格、涨跌幅、换手率这几列来筛选信息, 比如输入“价格>50”则把价格大于50的股票都打印,输入“市盈率<50“,则把市盈率小于50的股票都打印,不用判断等于。

    '''需求:1 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环)2 允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来3 允许按股票价格 ...

  4. 06Mybatis_入门程序——根据用户的名字模糊查询返回List集合

    本篇论文讲的是模糊查询然后返回的是一个list集合. 这片文章的案例是基于上一篇文章的,所以主要修改两处地方就可以了. 1.user.xml 2.Mybatis_first.java user.xml ...

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

    前言 使用StackExchange.Redis没有直接相关的方法进行模糊查询的批量删除和修改操作,虽然可以通过Scan相关的方法进行模糊查询,例如:HashScan("hashkey&qu ...

  6. StackExchange.Redis 模糊查询和删除

    初始化连接对象 _connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString" ...

  7. 关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询

    前言 上一篇关系数据库常用SQL语句语法大全主要是关系型数据库大体结构,本文细说一下关系型数据库查询的SQL语法. 语法回顾 SELECT [ALL|DISTINCT] <目标列表达式>[ ...

  8. MySQL模糊查询

    第一种最土的方法:使用like语句第二种用全文索引 有两种方法,第一种最土的方法:使用like语句第二种听涛哥说用全文索引,就在网上搜一下: 如何在MySQL中获得更好的全文搜索结果 mysql针对这 ...

  9. T-SQL---多值模糊查询的处理

    多值模糊查询的处理 所谓多值模糊查询,就是应用程序中传递过来多个参数,对这些参数做拆分,拆分之后,对拆分结果的key值分别做模糊查询处理 对于精确匹配时,不管是单个Key值还是多个Key值,都很容易处 ...

随机推荐

  1. js-xlsx 实现前端 Excel 导出(支持多 sheet)

    之前写文章介绍了使用 js-xlsx 实现导入 excel 的功能,现在再介绍一下如何使用 js-xlsx 进行 excel 导出. [实现步骤] 1. 首先安装依赖 npm install xlsx ...

  2. 公益:开放一台Nacos服务端给各位Spring Cloud爱好者

    之前开放过一台公益Eureka Server给大家,以方便大家在阅读我博客中教程时候做实验.由于目前在连载Spring Cloud Alibaba,所以对应的也部署了一台Nacos,并且也开放出来,给 ...

  3. OA传SAP设置(备忘)

    package com.seeyon.apps.ext.kk.flow.hc; import java.rmi.RemoteException; import java.text.SimpleDate ...

  4. C# - VS2019页面布局容器splitContainer和groupBox小结

    前言 在WinFrm应用程序中,产品的外观.布局将直接影响用户第一体验,所以对于开发者来说,在没有美工支持的前提下,应当注意系统页面的布局,本章主要讲解splitContainer和groupBox的 ...

  5. 实战FFmpeg--编译iOS平台使用的FFmpeg库(支持arm64的FFmpeg2.6.2)

    编译环境:Mac OS X 10.10.2 ,Xcode 6.3  iOS SDK 8.3        FFmpeg库的下载地址是 http://www.ffmpeg.org/releases/ . ...

  6. 我所认为的RESTful API最佳实践

    我所认为的RESTful API最佳实践 不要纠结于无意义的规范 在开始本文之前,我想先说这么一句:RESTful 真的很好,但它只是一种软件架构风格,过度纠结如何遵守规范只是徒增烦恼,也违背了使用它 ...

  7. (转载)林轩田机器学习基石课程学习笔记1 — The Learning Problem

    (转载)林轩田机器学习基石课程学习笔记1 - The Learning Problem When Can Machine Learn? Why Can Machine Learn? How Can M ...

  8. mysql判断是否包含某个字符的方法和修改表中指定字段

    用locate 是最快的,like 最慢.position一般实战例子:select * from historydatawhere locate('0',opennum) and locate('1 ...

  9. liteos C++支持(十七)

    1 概述 1.1 基本概念 C++作为目前使用最广泛的编程语言之一,支持类.封装.重载等特性,是在C语言基础上开发的一种面向对象的编程语言. 1.2 运作机制 STL(Standard Templat ...

  10. 1、mongoDB服务器的搭建与连接

    下载----编译----安装之后: 1.首先,创建一个mongodb_simple的目录,进入到目录中. 2.创建文件夹:data,用来存储数据库的数据文件. 3.创建文件夹:log,用来存储数据库的 ...