初始化连接对象

_connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString;
_connMultiplexer = ConnectionMultiplexer.Connect(_connectionString);
_db = _connMultiplexer.GetDatabase(db);

通过 keys或scan查找出匹配的key,StackExchange.Redis 中调用 keys/scan/size/flush/save/集群 等命令须使用 IServer 对象

_server = _connMultiplexer.GetServer(_connMultiplexer.GetEndPoints()[]); //默认一个服务器
var pattern = "BUIK_201710*";
var keys = _server.Keys(database: _db.Database, pattern: pattern); //StackExchange.Redis 会根据redis版本决定用keys还是scan(>2.8)
return _db.KeyDelete(keys.ToArray()); //删除一组key

如果数据量很大(比如几十万个key),以上操作会很慢,甚至超时,原因未知,因为通过命令执行keys是很快的

为了提高效率,可以通过Lua脚本进行模糊查询的批量操作

var pattern = "BUIK_201710*";
var redisResult = await _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
}

当然也可以通过脚本执行删除,不赘述,参考:https://www.cnblogs.com/skig/p/redis-lua-batch.html

StackExchange.Redis 模糊查询和删除的更多相关文章

  1. redis 模糊查询与删除

    创建一条数据 set  name1  zhangsan 查询 get name1 在创建一条数据 set name2 lisi 查询 get name2 模糊查询 keys name* 查询结果  n ...

  2. Redis 模糊查询删除操作

    创建一条测试 数据 查询 创建:set name xiaoming 查询: get name 1.模糊搜索查询 Redis 模糊搜索 keys * 2.删除指定key : # 删除所有以user开头的 ...

  3. SQL模糊查询与删除多条语句复习

    string IDlist="1,2,3"; 批量删除数据 StringBuilder strsql=new StringBuilder(); strSql.Append(&quo ...

  4. Redis模糊查询

    最近使用Redis优化项目功能,其中有一部分为模糊查询,找了很多帖子,也没有找到很好的解决方案和思路,最终皇天不负有心人啊,终于让我找到了!!! 感谢该帖作者:WalkerAlone  原文链接:ht ...

  5. MVC案例之模糊查询与删除

    查询操作: Servlet         //1. 调用 CustomerDAO 的 getAll() 得到 Customer 的集合 List<Customer> customers ...

  6. 在listView中的模糊查询和删除

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

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

  8. stackExchange.redis 实现模糊匹配批量查询

    如果使用redis的频次较高,那么业务中经常会出现需要根据关键字进行批量查询,所以总结一下StackExchange中使用批量查询的方法(如果数据量很大,那么在redis中模糊查询很耗时,请慎用!) ...

  9. StackExchange.Redis 使用LuaScript脚本模糊查询hash

    原文:StackExchange.Redis 使用LuaScript脚本模糊查询hash 获取redis连接 public class RedisHelper { private static rea ...

随机推荐

  1. 创建服务的注册与发现 Eureka (四)

    一.eureka注册中心 1.创建一个工程 工程名:microservicecloud-eureka-7001 2.向pom文件中增加如下: <dependencies> <!--e ...

  2. 利用idea解决git代码冲突问题

    问题描述:在开发过程中,如果你开发的代码与其他人造成冲突,在不处理的情况下会无法拉取,并且提交容易造成代码丢失: 解决方法: [此方法是同事郭富城的分享] 1,由于冲突,我们每次拉取都会失败,这时我们 ...

  3. VUE 组件通信、传值

    一.通过路由进行带参传值: 两个组件A和B,A组件通过query把orderId传递给B组件(触发事件可以是点击事件.钩子函数等) this.$router.push({path:'/componen ...

  4. 构建你的spring boot代码

    Spring boot不需要任何特定的代码布局来工作.然而,有一些最佳实践可以帮助您. 1.避免使用缺省包 当一个类不包含包声明时,它被认为是在“缺省包”中.“默认包”的使用通常是不鼓励的,应该避免. ...

  5. 20155312 张竞予 Exp7 网络欺诈防范

    Exp7 网络欺诈防范 目录 基础问题回答 (1)通常在什么场景下容易受到DNS spoof攻击 (2)在日常生活工作中如何防范以上两攻击方法 实验总结与体会 实践过程记录 (1)简单应用SET工具建 ...

  6. safari10.0以上版本出现默认小人头图标

    1.可能改input输入框外层有兄弟元素在input之前,将input元素位置放置在所有兄弟元素之前即可

  7. loadrunner整体压测执行操作步骤

    lr11安装包链接:https://pan.baidu.com/s/1hF3j2Vi_xB8BhT70P1ZdBg 提取码:n3zn lr12安装包链接:https://pan.baidu.com/s ...

  8. JAVA常用集合

    List: ArrayList: 基于动态数组的有序集合.优点:可以根据索引index下标访问List中的元素,访问速度快:缺点是访问和修改中间位置的元素时慢(数组尾部插入元素以外). LinkedL ...

  9. Unity3D InputManager详解

    首先说一下 Input 类,这个类很常用,API 大家基本都知道,这里记录几个使用频率没那么高的 API Input.acceleration:重力加速度传感器的值,加速度的方向,适用于移动平台. I ...

  10. Notes : <Hands-on ML with Sklearn & TF> Chapter 7

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...