Redis入门教程可参考:超强、超详细Redis数据库入门教程

Redis操作命令可参考:Redis操作命令总结

redis可以通过命令Keys Match来进行键值的模糊匹配,借助StackExchange.Redis时,由于Dll内部没有实现Keys Match的操作,不过,StackExchange.Redis提供了直接执行Lua语句的入口:

RedisResult ScriptEvaluate(LoadedLuaScript script, object parameters = null, CommandFlags flags = CommandFlags.None);
RedisResult ScriptEvaluate(string script, RedisKey[] keys = null, RedisValue[] values = null, CommandFlags flags = CommandFlags.None);
RedisResult ScriptEvaluate(byte[] hash, RedisKey[] keys = null, RedisValue[] values = null, CommandFlags flags = CommandFlags.None);
RedisResult ScriptEvaluate(LuaScript script, object parameters = null, CommandFlags flags = CommandFlags.None);

Windows下调试Lua的环境搭建可参考如下:Windows下Lua+Redis 断点调试环境搭建==Linux下类似

Keys Match,当数据规模较大时使用,会严重影响Redis性能,Redis还可以通过SCAN命令模糊匹配Key。

以上两种方式的Lua语句如下:

//使用Keys *模糊匹配Key
return redis.call('keys',KEYS[1]) //使用SCAN模糊匹配Key
local dbsize=redis.call('dbsize') local res=redis.call('scan',0,'match',KEYS[1],'count',dbsize) return res[2]

StackExchange.Redis调用如下:

        private static object _locker = new Object();private static ConnectionMultiplexer _instance = null;public static ConnectionMultiplexer Instance{get{if (_instance == null){lock (_locker){if (_instance == null || !_instance.IsConnected){_instance = ConnectionMultiplexer.Connect(ConfigUtils.ArrangeResultHost);}}}return _instance;}}public static IDatabase GetDatabase(){return Instance.GetDatabase();}//使用Keys *模糊匹配Keypublic static List<string> GetKeys(string key) {var result=(string[])GetDatabase().ScriptEvaluate(LuaScript.Prepare("return redis.call('KEYS',@keypattern)"),new{ keypattern=key });return result.ToList();}//使用SCAN模糊匹配Keypublic static List<string> GetKeys(string key){var result = (string[])GetDatabase().ScriptEvaluate(LuaScript.Prepare("local dbsize=redis.call('dbsize') local res=redis.call('scan',0,'match',KEYS[1],'count',dbsize) return res[2]"),new RedisKey[] { key });return result.ToList();}

转载于:https://www.cnblogs.com/lcawen/p/7115775.html

redis 模糊查找keys相关推荐

  1. [图文讲解]redis命令keys和scan的区别

    1. Keys 命令 语法 redis KEYS 命令基本语法如下: redis 127.0.0.1:6379> KEYS PATTERN KEYS命令使用很简单,查找以 com 为开头的 ke ...

  2. Redis的KEYS命令引起宕机事件

    摘要: 使用 Redis 的开发者必看,吸取教训啊! 原文:Redis 的 KEYS 命令引起 RDS 数据库雪崩,RDS 发生两次宕机,造成几百万的资金损失 作者:陈浩翔 Fundebug经授权转载 ...

  3. 关于Redis命令keys在性能方面的说明

    redis的keys命令类似于Mysql的like命令,无非就是模糊匹配相近的字符数据. KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的 k ...

  4. Redis的KEYS命令引起RDS数据库雪崩,RDS发生两次宕机,造成几百万的资金损失

    文章目录 第一次宕机 事故影响 原因分析 改进方案 第二次宕机 原因分析 改进方案 总结 Redis开发建议 1.冷热数据分离,不要将所有数据全部都放到Redis中 2.不同的业务数据要分开存储 3. ...

  5. Redis 数据库keys 命令的模糊查询

    文章目录 Redis 数据库keys 命令的模糊查询 1.支持的通配符 2.* 通配符 3.?通配符 4.[ ]匹配 Redis 数据库keys 命令的模糊查询 1.支持的通配符 第一种:* 第二种: ...

  6. 对redis的keys方法替换

    对redis的keys方法替换 最近公司需要做redis服务的迁移,一些旧项目用的还是以前的jedisAPI.发现有个项目用的keys方法模糊查询,而这在生产环境是绝对禁止的.keys命令的时间复杂度 ...

  7. 老大说:谁再用redis 的 keys命令,立刻给我走人

    先看现象 redis-cli keys * | args redis-cli del (error) ERR network error (30.00s) #执行了一条 keys xxxxx* 命令, ...

  8. Redis的keys命令到底有多慢?

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://blog.csdn.net/weixin_37968613/article/details/119065777 ...

  9. Redis命令——Keys相关

    from:http://blog.csdn.net/codolio/article/details/6411684 以下为Redis中有关Keys操作的一些命令,内容主要来源于Redis的官方文档.如 ...

最新文章

  1. 10 个免费的服务器监控工具推荐
  2. 各国家分析之 古埃及非洲经济
  3. C#遍历文件读取Word内容以及使用BackgroundWorker对象打造平滑进度条
  4. Python科学画图小结
  5. reactjs Fragment的作用
  6. 借助TensorFlow框架,到底能做什么?
  7. 建立学生选课表 mysql 语句_学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)...
  8. python iot_使用EduBlocks,适用于Linux的i3窗口管理器,必读新闻通讯,CI / CD,敏捷,IoT等进行Python编程
  9. 博客园首页新随笔联系管理订阅订阅随笔- 610 文章- 0 评论- 83 阅读- 144万 Calendar时间获取天,周,月,季度,年度时间段
  10. python程序双向链表_Python 实现双向链表(图解)
  11. kindeditor自定义插件插入视频代码
  12. 拓端tecdat|Python中用Prophet模型对天气时间序列进行预测与异常检测
  13. Proteus8.6SP2仿真使用汇总
  14. 西安三星电子笔试面试
  15. App拉起:h5打开app指定页面
  16. 微机原理-80386(1)
  17. NUVOTON的IAP SFR
  18. selenium在爬虫领域的初涉(自动打开网站爬取信息)
  19. 随机编码生成器MD5加密字符串工具
  20. html是用cdn资源,网站常用前端公共库CDN服务资源(百度+360)

热门文章

  1. Cookie与Session的联系与区别
  2. DJango 多条件查询结果分页
  3. Java记录 -45- List的toString方法
  4. 从软件质量看如何写代码(1)
  5. 路由表 (2012-03-27 12:57)
  6. 多线程中的互斥控制程序代码_Java中的并发——线程安全性
  7. 软件测试工程师-计算机基础
  8. devops工程师_如何过渡为DevOps工程师的职业
  9. 敏捷和devops区别_DevOps转型:小型,中型和大型组织的主要区别
  10. blender 3d打印_使用Blender和Python 3D打印连衣裙