stackExchange.redis 实现模糊匹配批量查询
如果使用redis的频次较高,那么业务中经常会出现需要根据关键字进行批量查询,所以总结一下StackExchange中使用批量查询的方法(如果数据量很大,那么在redis中模糊查询很耗时,请慎用!)
初始化redis连接对象:
string _connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString; ConnectionMultiplexer _connMultiplexer = ConnectionMultiplexer.Connect(_connectionString); IDataBase _db = _connMultiplexer.GetDatabase(db);
通过 keys或scan查找出匹配的key,StackExchange.Redis 中调用 keys/scan/size/flush/save/集群 等命令须使用 IServer 对象
var _server = _connMultiplexer.GetServer(_connMultiplexer.GetEndPoints()[0]); //默认一个服务器 var pattern = "keyword*"; var keys = _server.Keys(database: _db.Database, pattern: pattern); //StackExchange.Redis 会根据redis版本决定用keys还是 scan(>2.8) return _db.KeyDelete(keys.ToArray()); //删除一组key
如果数据量很大(比如几十万个key),为了提高效率,可以通过Lua脚本进行模糊查询的批量操作
var pattern = "keyword*";
var redisResult = _db.ScriptEvaluateAsync(LuaScript.Prepare(
//Redis的keys模糊查询:
" local res = redis.call(‘KEYS‘, @keypattern) " +
" return res "), new { @keypattern = pattern });
if (!redisResult.IsNull) {
_db.KeyDelete((string[])redisResult); //删除一组key }
stackExchange.redis 实现模糊匹配批量查询的更多相关文章
- 关于 Senparc.Weixin.Cache.Redis 引用的 StackExchange.Redis 版本不匹配的反馈测试
推测原因是老系统中有地方引用了旧版本的 StackExchange.Redis,原因是 StackExchange.Redis 1.2.6 版本未提供针对 .net 4.6 以上的支持,导致库引用会失 ...
- postgres模糊匹配大杀器
ArteryBase-模糊匹配大杀器 问题背景 随着pg越来越强大,abase目前已经升级到5.0(postgresql10.4),目前abase5.0继承了全文检索插件(zhparser),使用全文 ...
- StackExchange.Redis加载Lua脚本进行模糊查询的批量删除和修改
前言 使用StackExchange.Redis没有直接相关的方法进行模糊查询的批量删除和修改操作,虽然可以通过Scan相关的方法进行模糊查询,例如:HashScan("hashkey&qu ...
- StackExchange.Redis 模糊查询和删除
初始化连接对象 _connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString" ...
- StackExchange.Redis 使用LuaScript脚本模糊查询hash
原文:StackExchange.Redis 使用LuaScript脚本模糊查询hash 获取redis连接 public class RedisHelper { private static rea ...
- Redis 根据Key模糊批量查询数据
前言 经常会有这样一种业务逻辑,就是需要根据Redis中Key的规则,模糊查询对应的数据,当数据量少时,利用常规的命令也能满足需求,但是数据量大时,就会导致堵塞,就算是采用不堵塞的函数,如果数据需要显 ...
- .NET Core 实现 Redis 批量查询指定格式的Key
一. 问题场景 Redis 作为当前最流行的内存型 NoSQL 数据库,被许多公司所使用,作为分布式缓存.我们在实际使用中一般都会为 key 带上指定的前缀或者其他定义的格式.当由于我们程序出现bug ...
- mySql一个字段的值模糊匹配多表多列的查询
1.dao层/** * 分页查询点卡集合信息 * @param tid 游戏类型编号 * @param gid 游戏编号 * @param searchInfo 包括(点卡名称,游戏名称,点卡面值,游 ...
- StackExchange.Redis 管道 批量 高性能插入数据
现在用redis来做数据缓存的越来越多了,很多项目都有初始化redis数据的过程,由于初始化的数据比较大,那么该过程越快越好.这里我们以HashSet方法为例, 这里我们推荐用HashEntry[] ...
随机推荐
- LeetCode Weekly Contest 118
要死要死,第一题竟然错误8次,心态崩了呀,自己没有考虑清楚,STL用的也不是很熟,一直犯错. 第二题也是在室友的帮助下完成的,心态崩了. 970. Powerful Integers Given tw ...
- windows版jmeter的body data如何用\n作为“换行”
前段时间用jmeter进行某个web接口性能测试的时候遇到一个问题,body data中的换行的内容发送后,通过抓包发现总是发送"0D0A"即"\r\n"(wi ...
- Centos 7 安装 ELK 5.6.8 及基础的配置
下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.8.rpm wget https://ar ...
- mysql批量查询
一般批量查询的时候都是in关键字,但是在数据量大的时候,效率低下. 这个时候我们就可以考虑使用union . xml 核心代码 <select id="selectList" ...
- 【Alpha】Scrum Meeting 9
目录 前言 任务分配 燃尽图 会议照片 签入记录 困难 前言 第9次会议于4月13日20:00在一公寓3楼召开. 交流确认了任务进度,对下一阶段任务进行分配.时长20min. 任务分配 姓名 当前阶段 ...
- 课后作业机票,赌骰子游戏,switch的使用实例
一,课后第三题机票 package com.bd22; import java.util.Scanner; public class AirTicket { public static void ma ...
- 《动态规划_入门 LIS 问题 》
问题描述 问题 A: 最长上升子序列 时间限制: 2 Sec 内存限制: 64 MB提交: 461 解决: 236[提交][状态][讨论版][命题人:外部导入] 题目描述 一个数列ai如果满足条件 ...
- bootstrap:modal & iframe
form提交绑定到特定的iframe & form的结果在dialog上显示 form:target属性 <!-- when the form is submitted, the ser ...
- matlab 入门
---恢复内容开始--- 1.cast表示将元素转化成对应的ASCII值 如cast('hellothere','uint8')输出结果为104 101 108 108 111 116 104 101 ...
- InstallShield Limited Edition for Visual Studio 使用
首先到https://info.flexerasoftware.com/IS-EVAL-InstallShield-Limited-Edition-Visual-Studio填写信息: 完成之后跳转到 ...