StackExchange.Redis 使用LuaScript脚本模糊查询hash
原文:StackExchange.Redis 使用LuaScript脚本模糊查询hash
获取redis连接
public class RedisHelper
{
private static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["RedisConnection"].ConnectionString;
private static ConnectionMultiplexer _connection;
private static ConnectionMultiplexer Connection
{
get
{
if (_connection == null || !_connection.IsConnected)
{
_connection = ConnectionMultiplexer.Connect(ConnectionString);
}
return _connection;
}
} public static IDatabase GetDatabase()
{
ConnectionMultiplexer redis = Connection;
//return redis.GetDatabase(RedisDatebaseId);
return redis.GetDatabase();
}
}
//根据模糊查询条件获取key值集合
var pattern = "UserInfoHash:*";//匹配符
var redisResult = db.ScriptEvaluate(LuaScript.Prepare(
//Redis的keys模糊查询:
" local res = redis.call('KEYS', @keypattern) " +
" return res "), new { @keypattern = pattern });
string[] preSult = (string[])redisResult;//将返回的结果集转为数组
//根据key值集合获取所有Hash
var list = new List<ICustomInfo>();//定义存放客户信息的集合
string json = "{ 'UserInfoHash:0', 'UserInfoHash:1','UserInfoHash:2', 'UserInfoHash:4' }"; //Redis的keys模糊查询:
" local result={} local mykeys=" + json + "; " +
" for i,v in pairs(mykeys) do result[i]=redis.call('hgetall',v) end; " +
" return result"));
//将结果集转为数组
var vals = (StackExchange.Redis.RedisResult[])redisResult1;
foreach (var val in vals)
{
string[] preval = (string[])val;
int indexCount = Array.IndexOf(preval, "CustomerCode");
int indexPwd = Array.IndexOf(preval, "Password"); string ac = preval[indexCount + ];//账号的值,等于账号名称所在的下标+1
list.Add(new CustomInfo()
{
Password = preval[indexPwd + ],
Account = ac,
UpdateTime = DateTime.Now,
Token = StringExtension.ToBase64String(string.Format("{0}:{1}", DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss"), ac))
});
}
注:根据key模糊查询一次数据过多时,可能会报超时问题。 解决方法:在redis连接字符串加入对应的 syncTimeout=10000(发送/接收超时设置(毫秒) )
StackExchange.Redis 使用LuaScript脚本模糊查询hash的更多相关文章
- redis+lua实现脚本一键查询
场景 经常需要查redis某个key的值,需要执行三条命令才能查到 redis-cli,启动redis select num,选择db get key,查询语句 需要执行三条命令才能实现某个key的查 ...
- StackExchange.Redis帮助类解决方案RedisRepository封装(字符串类型数据操作)
本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文链接 http://www.cnblogs.com/tdws/tag/NoSql/ 目录 一.基础配置封装 二.String字符串类型数据操作封 ...
- StackExchange.Redis加载Lua脚本进行模糊查询的批量删除和修改
前言 使用StackExchange.Redis没有直接相关的方法进行模糊查询的批量删除和修改操作,虽然可以通过Scan相关的方法进行模糊查询,例如:HashScan("hashkey&qu ...
- stackExchange.redis 实现模糊匹配批量查询
如果使用redis的频次较高,那么业务中经常会出现需要根据关键字进行批量查询,所以总结一下StackExchange中使用批量查询的方法(如果数据量很大,那么在redis中模糊查询很耗时,请慎用!) ...
- StackExchange.Redis 模糊查询和删除
初始化连接对象 _connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString" ...
- Redis中的关系查询(范围查询,模糊查询等...)
本文部分转自于:http://blog.csdn.net/dc_726/article/details/42784317 本文对Redis如何保存关系型数据,以及如何对其匹配.范围.模糊查询进行举例讲 ...
- StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用
ConnectionMultiplexer ConnectionMultiplexer 是StackExchange.Redis的核心对象,用这个类的实例来进行Redis的一系列操作,对于一个整个应用 ...
- StackExchange.Redis 之 hash 类型示例
StackExchange.Redis 的组件封装示例网上有很多,自行百度搜索即可. 这里只演示如何使用Hash类型操作数据: // 在 hash 中存入或修改一个值 并设置order_hashkey ...
- Redis模糊查询
最近使用Redis优化项目功能,其中有一部分为模糊查询,找了很多帖子,也没有找到很好的解决方案和思路,最终皇天不负有心人啊,终于让我找到了!!! 感谢该帖作者:WalkerAlone 原文链接:ht ...
随机推荐
- express 获取post 请求参数
在 Express 中没有内置获取表单 POST 请求体的 API , 我们需要添加第三方插件库 安装: npm install --save body-parser 配置: var bodyPars ...
- Swagger详解(SpringBoot+Swagger集成)(转)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/ai_miracle/article/de ...
- [php 拓展开发] hello world
1.下载php源码包 2.在php-7.0.9/ext 下执行 ./ext_skel --extname=hello 3. 4.拓展代码 5. 6.编译 多了分号,出错. 重新编译成功,但是生成的文 ...
- CF671D Roads in Yusland
一道很玄妙的题= = 我们考虑先考虑DP 那么有$f[x]=min(c+\sum f[y])$ $f[x]$表示覆盖x的子树和x->fa[x]的所有边最小代价 我们枚举一条边c覆盖的x-> ...
- 利用已控的标边界一台机器的 beacon对目标内网进行各种存活探测
本节的知识摘要: 基于常规 tcp / udp 端口扫描的内网存活探测 基于 icmp 的内网存活探测 基于 arp 的内网存活探测 加载外部脚本进行的各种存活探测 基础环境说明:: WebServe ...
- OC + RAC(七) RACSubject和RACSignal的区别
-(void)_test8{ /// RACSubject继承自RACSignal 但是RACSubject和RACSignal的区别? //1能接收1,2 //但是2只能接收2 RACSubject ...
- ES命令
基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意味 ...
- 修改oracle数据库字段类型,处理ORA-01439错误
修改表PTLOG的列TYPE的char(1)为varchar(2)类型? 在PTLOG 表新增一列 TYPE_2:ALTER TABLE PTLOG ADD TYPE_2 VARCHAR2(2) de ...
- java切分查询数据库表
在实际应用中,我经常用到遇到根据单号查询,单号又是批量如1000个单号,直接1000个in子查询是不行的,子查询是用上限的.如果表中数据达到上百万以上.即使有单号字段有索引查询也是很慢.这时可以用切分 ...
- rpm --qf 命令
1. 环境准备: sudo apt-get install rpm (Ubuntu系统) wget ftp://rpmfind.net/linux/fedora-secondary/developme ...