Redis 根据Key模糊批量查询数据
前言
经常会有这样一种业务逻辑,就是需要根据Redis中Key的规则,模糊查询对应的数据,当数据量少时,利用常规的命令也能满足需求,但是数据量大时,就会导致堵塞,就算是采用不堵塞的函数,如果数据需要显示的话,显示结果的时间也比较慢,用户体验不好。
Lua脚本
Redis 自2.6.0版本之后,就内置了Lua脚本,可以执行相关Lua脚本,提高操作效率;具体Lua脚本大家百度自行学习,不难;
应用:
这里记录的是在C#中的简单使用,其他语言也类似;
引用的包StackExchange.Redis, 我这里用的是2.0.601的版本;
代码实例:

如上图,这个方法是根据一个模糊Key值进行查询,中间字符串拼接的字符串就是lua脚本,使用redis.call()方法来执行Redis对应的指令;
然后将结果解析返回到前台;其他变量都是一些封装,其中db这个类型是IDatabase类型,相信用redis的小伙伴看见这个类型就明白了。
总结:
亲测这样的速度比直接执行循环get, 或执行mget指令效率好很多, 以上只是记录一个思路,lua脚本可以做很多事,不仅仅是查询,增删改查都可以,特别对批量操作,效率很不错。
Redis 根据Key模糊批量查询数据的更多相关文章
- 使用一个T-SQL语句批量查询数据表占用空间及其行数
原文:使用一个T-SQL语句批量查询数据表占用空间及其行数 要找到数据库中数据表占用的空间和存在的行数.可以使用sp_spaceused搭配数据表的名称.就可以产生该表耗用的空间和现有行数. 如: U ...
- Java MySQL 批量查询数据,每次查询10条
因为 数据量比较多, 比如每次 /** * 批量查询 * @param sourList * @param batchCount * @param userMapper * @return */ pu ...
- HBase根据Rowkey批量查询数据JAVA API(一次查多条,返回多个记录)
最近在生产中遇到了一个需求,前台给我多个rowkey的List,要在hbase中查询多个记录(返回给前台list).在网上也查了很多,不过自己都不太满意,filter的功能有可能查询结果不是准确值,而 ...
- 个人永久性免费-Excel催化剂功能第97波-快递单号批量查询物流信息
电商时代,快递已进千万家,做电商零售行业的,快递信息的再挖掘,也显得更有意义,是数据精细化运营中必不可少的一环.一般站在系统的角度,数据用于业务流转的增删改查使用,而对于分析需求来说,这些业务系统里集 ...
- stackExchange.redis 实现模糊匹配批量查询
如果使用redis的频次较高,那么业务中经常会出现需要根据关键字进行批量查询,所以总结一下StackExchange中使用批量查询的方法(如果数据量很大,那么在redis中模糊查询很耗时,请慎用!) ...
- 多线程查询数据,将结果存入到redis中,最后批量从redis中取数据批量插入数据库中【我】
多线程查询数据,将结果存入到redis中,最后批量从redis中取数据批量插入数据库中 package com.xxx.xx.reve.service; import java.util.ArrayL ...
- redis批量删除key 远程批量删除key
一.遇到的问题 在开发的过程中,经常会遇到要批量删除某种规则的key,如缓存的课程数据“course-课程uid”,其中课程uid是变量,我们需要删除"course-*"这一类的数 ...
- SpringBoot(18)---通过Lua脚本批量插入数据到Redis布隆过滤器
通过Lua脚本批量插入数据到布隆过滤器 有关布隆过滤器的原理之前写过一篇博客: 算法(3)---布隆过滤器原理 在实际开发过程中经常会做的一步操作,就是判断当前的key是否存在. 那这篇博客主要分为三 ...
- Redis【知识点】批量删除指定Key
Redis中有删除单条数据的命令DEL但是他没有批量删除多条数据的方法,那我们怎么去批量删除多条数据呢! 第一种方式 /work/app/redis/bin/redis-cli -a youpassw ...
随机推荐
- PHP mmysqli_affected_rows(connection);函数
mysqli_affected_rows(); 函数返回前一次 MySQL 操作所影响的记录行数. mysqli_affected_rows(connection); connection 必需.规定 ...
- sublime text 3 3126注册码
—– BEGIN LICENSE —– Michael Barnes Single User License EA7E-821385 8A353C41 872A0D5C DF9B2950 AFF6F6 ...
- OI 常用模板 手写
线性筛素数 (例题 洛谷P3383) bool p[50000010]; int cnt = 0; int prime[10000010]; inline void init() { int N = ...
- [转]vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,Cr ...
- 2019.6.24 校内测试 NOIP模拟 Day 2 分析+题解
看到Day 2的题真的想打死zay了,忒难了QwQ~ T1 江城唱晚 这明显是个求方案数的计数问题,一般的套路是DP和组合数学. 正如题目中所说,这个题是一个 math 题. ----zay ...
- EGL Driver message (Critical) eglInitialize: No available renderers.
使用Python的selenium库进行自动化巡检.并将相对应的数据保存 环境: Windows Embedded Standard Python 2.7.16 selenium 3.141.0 [0 ...
- PHP学习之工厂方法模式
<?php //工厂方法模式 interface Doing { function eat(); function sleep(); } class Cat implements Doing { ...
- ThinkPHP使用smarty模板引擎的方法
ThinkPHP支持多种php模板引擎,可以根据个人需要加以配置.下面我们以Smarty模板引擎为例,给大家说说具体的操作流程! 首先去Smarty官网上下载一个Smarty.本站下载地址:http: ...
- mac配置maven项目的方法(含导入selenium包)
1.配置了java的环境变量 文件位置: /Users/lucax/.bash_profile JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1 ...
- win10 Java JDK环境变量配置
注意下载JDK 版本不需太高(百度一下jdk下载就好了) 第一步 我们首先打开win10电脑的资源管理器,快捷键win+E 然后选中此电脑,鼠标右键在弹出的菜单中选中属性的按钮 第二步 看到窗口的 ...