如果使用redis的频次较高,那么业务中经常会出现需要根据关键字进行批量查询,所以总结一下StackExchange中使用批量查询的方法(如果数据量很大,那么在redis中模糊查询很耗时,请慎用!) 初始化redis连接对象: string _connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString; ConnectionMultiplexer…
推测原因是老系统中有地方引用了旧版本的 StackExchange.Redis,原因是 StackExchange.Redis 1.2.6 版本未提供针对 .net 4.6 以上的支持,导致库引用会失败,目前已经发布了新版本,支持 .net 4.6.1,可以更新到最新的 Senparc.Weixin.Cache.Redis:https://www.nuget.org/packages/Senparc.Weixin.Cache.Redis 测试版已经打包,可以参考其中的必要设置,下载:https:…
ArteryBase-模糊匹配大杀器 问题背景 随着pg越来越强大,abase目前已经升级到5.0(postgresql10.4),目前abase5.0继承了全文检索插件(zhparser),使用全文检索越来越方便.本文会对abase支持的like模糊匹配,全文检索,创建何种索引,如何使用进行说明.针对于各种模糊匹配均可走索引 前模糊匹配(%xxx),后模糊匹配(xxx%) 使用场景:如果简单的前模糊匹配或者后模糊匹配则可以建一个简单的btree索引. --1.后模糊匹配(xxx%) creat…
前言 使用StackExchange.Redis没有直接相关的方法进行模糊查询的批量删除和修改操作,虽然可以通过Scan相关的方法进行模糊查询,例如:HashScan("hashkey", "*key*"),然后再使用相关的方法进行相关的批量操作,但是如果缓存数据量比较大,效率低下,那么可以使用Lua脚本进行模糊查询的批量操作:ScriptEvaluate(LuaScript.Prepare(...)). 通过keys进行模糊查询后的批量操作 批量删除 var re…
初始化连接对象 _connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString; _connMultiplexer = ConnectionMultiplexer.Connect(_connectionString); _db = _connMultiplexer.GetDatabase(db); 通过 keys或scan查找出匹配的key,Stac…
原文:StackExchange.Redis 使用LuaScript脚本模糊查询hash 获取redis连接 public class RedisHelper { private static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["RedisConnection"].ConnectionString; private static ConnectionMultiplexer…
前言 经常会有这样一种业务逻辑,就是需要根据Redis中Key的规则,模糊查询对应的数据,当数据量少时,利用常规的命令也能满足需求,但是数据量大时,就会导致堵塞,就算是采用不堵塞的函数,如果数据需要显示的话,显示结果的时间也比较慢,用户体验不好. Lua脚本 Redis 自2.6.0版本之后,就内置了Lua脚本,可以执行相关Lua脚本,提高操作效率:具体Lua脚本大家百度自行学习,不难: 应用: 这里记录的是在C#中的简单使用,其他语言也类似: 引用的包StackExchange.Redis, …
一. 问题场景 Redis 作为当前最流行的内存型 NoSQL 数据库,被许多公司所使用,作为分布式缓存.我们在实际使用中一般都会为 key 带上指定的前缀或者其他定义的格式.当由于我们程序出现bug,造成 redis 里面的存储的值,与我们预期的不一致时,我们可以通过查询指定格式的 key,来定位到我们具体的出现问题的key,从而方便我们解决问题. 二. 解决办法 1.Keys 命令 Keys 命令用于查找所有符合给定模式 pattern 的 key .要求 Redis 版本大于 1.0.0.…
1.dao层/** * 分页查询点卡集合信息 * @param tid 游戏类型编号 * @param gid 游戏编号 * @param searchInfo 包括(点卡名称,游戏名称,点卡面值,游戏类型名称) * @param index * @param pagesize * @return */List<Cards> searchList(@Param("tid") int tid, @Param("gid") int gid, @Param(&…
现在用redis来做数据缓存的越来越多了,很多项目都有初始化redis数据的过程,由于初始化的数据比较大,那么该过程越快越好.这里我们以HashSet方法为例, 这里我们推荐用HashEntry[] hashFields方法传入多个fields,应为它发送的HMSET指令即批量插入数据,另一个方法发送的HSET指令. 在阅读StackExchange.Redis里面我确实没有找到pipe指令,后来发现该指令的实现是:通过CreateBatch方法实现的.源码的单元测试例子是: using Sys…