redis生产使用场景(一):并行流+二级缓存
本文主要介绍 redis 缓存在线上的使用场景
由于业务的特殊性,在生产库用户表中,大概有 50 多万的测试用户,在真实业务计算中,要把测试用户给筛选掉,所以在计算前,需要把测试用户加载到 redis 缓存中,并构建本地缓存。
查询数据库
为了提高查询效率,先得到最大主键ID,以每次查询5000 条提前构建好批次范围,并采用并行查询的方式。
long maxUserId = odsUserDAO.getMaxUserId(); // 查询最大 id// 构建批次范围列表List<LinkedList<Long>> pagingIntervalList = new ArrayList<>();//初始化分页列表for(long leftBoundary = 0; leftBoundary < maxUserId; leftBoundary += 5000){LinkedList<Long> pagingInterval = new LinkedList<>();long rightBoundary = leftBoundary + 5000;if(rightBoundary >= maxUserId){pagingInterval.add(leftBoundary);pagingInterval.add(maxUserId + 1);pagingIntervalList.add(pagingInterval);break;}pagingInterval.add(leftBoundary);pagingInterval.add(rightBoundary);pagingIntervalList.add(pagingInterval);}//并行加载测试学生Set<Long> testUserIdSet = pagingIntervalList.parallelStream().map(pagingInterval -> odsUserDAO.incrementGetTestUser(pagingInterval.peekFirst(), pagingInterval.peekLast())).flatMap(List::stream).map(o -> o.getId()).collect(Collectors.toSet());
分页查询 sql
<select id="incrementGetTestUser" resultMap="BaseResultMap">select <include refid="Base_Column_List"/>from userwhere (account_type ='TEST'or name like '%test%'or name like '%TEST%'or name like '%测试%'or status <![CDATA[ <> ]]> 'NORMAL')and id between #{pagingStartIdx} and #{pagingEndIdx}and status = 1</select>
写回缓存
private static volatile Set<Long> testUserLocalCache = null; //全局变量testUserLocalCache = testUserIdSet; //本地缓存
String[] testUserIdArray = testUserIdSet.parallelStream().map(String::valueOf).toArray(String[]::new);
redisCluster.sadd("test_user_data", testUserIdArray); //redis缓存
查询缓存
在处理业务时,如果该用户是测试数据,则跳过。
private static volatile Set<Long> testUserLocalCache = null; //全局变量public boolean isTestUser(Long userId){if (testUserLocalCache == null || testUserLocalCache.isEmpty()){boolean isRemoteTestUserCacheExists = redisCluster.exists("test_user_data");if(!isRemoteTestUserCacheExists){throw new RuntimeException("failed to hit test user remote cache, cause test user never preload");}// 如果本地缓存为空,则构建synchronized(this){if (testUserLocalCache == null || testUserLocalCache.isEmpty()){Set<String> testUserSet = redisCluster.sscanAll("test_user_data"); //采用 sscan 游标方式查询testUserLocalCache = testUserSet.parallelStream().map(Long::valueOf).collect(Collectors.toSet());}}}//从本地缓存查询数据return testUserLocalCache.contains(userId);}
总结
由于业务性质及生产机器配置够高,缓存不设置过期时间,只是在下次计算前,先清除缓存即可,再构建本次新的缓存。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
redis生产使用场景(一):并行流+二级缓存
本文主要介绍 redis 缓存在线上的使用场景 由于业务的特殊性,在生产库用户表中,大概有 50 多万的测试用户,在真实业务计算中,要把测试用户给筛选掉,所以在计算前,需要把测试用户加载到 redis 缓存中&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
EXCEL跨文件查询,指定条件列,返回满足条件的指定列
EXCEL跨文件查询,指定条件列,返回满足条件的指定列 Private Sub cmd_find_from_workbooks_Click() Dim S_Cols As String, thePath As String, Sor_Col As Integer, sz_Cols As Variant S_Cols T_jieguo_cols.Text sz_Cols Split(S_Cols, ",&quo…...
![](https://i-blog.csdnimg.cn/direct/3a9394486b814bfb8375b65a74a4d637.png)
[数据集][目标检测]流水线物件检测数据集VOC+YOLO格式9255张26类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):9255 标注数量(xml文件个数):9255 标注数量(txt文件个数):9255 标注…...
![](https://img-blog.csdnimg.cn/img_convert/50e73996fb40bb854b8febfb94d91dd4.jpeg)
StarRocks 存算分离 Compaction 原理
前言 StarRocks 中每次数据摄入都会生成一个新的数据版本,而查询时需要将所有版本数据进行合并才能获得一个正确的结果,如果历史数据版本太多,那么查询时需要读取的文件数也会很多,造成查询效率低下。因而 StarRocks 存在内部任务…...
![](https://i-blog.csdnimg.cn/direct/a95fb1abc9804e3bbc84fb29bd1c95ef.gif)
搭建ELK日志采集与分析系统
SpringCloud微服务实战——企业级开发框架 💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您…...
![](https://www.ngui.cc/images/no-images.jpg)
java集合中自动排序的treeset和treemap
底层 TreeSet 和 TreeMap 的底层架构都是基于红黑树实现的。红黑树是一种自平衡的二叉搜索树,其特性保证了插入、删除和查找操作的时间复杂度为 (O( log n \log n logn)),无论数据量多大,操作性能都能保持在合理的范围内。 1. 红黑树概述 红黑树是一种平衡二叉搜索树(…...
![](https://i-blog.csdnimg.cn/direct/34c91007f3904036bba65d1dd732d51c.png)
Android 修改SystemUI 音量条的声音进度条样式
一、前言 Android System UI 开发经常会遇到修改音量进度条样式的需求,主要涉及的类有VolumeDialogImpl与xml文件,接下来会逐步实现流程。先看看效果。 修改前 修改后 二、找到对应类 通过aidegen 打断点调试对应代码类VolumeDialogImpl定位到volume_d…...
![](https://www.ngui.cc/images/no-images.jpg)
电商场景的视频生成的prompt测评集合
1.收集的一些提示词 一台写着Vidu的赛车在路上飞驰,赛车上面坐着一只乌龟 一个宇航员在太空中骑单车 两个巨大的机器人在打架,电影风格,史诗感,高细节 在科幻电影风格中,两个巨大的机器人在城市废墟中激烈战斗。使用高角度俯拍,展现机器人的宏伟和战斗的史诗感。机器人…...
![](https://i-blog.csdnimg.cn/direct/38e29483279d47609eba2b7588f6b6a0.jpeg)
day34
1 非阻塞型IO 让我们的read函数不再阻塞,无论是否读取到消息,立刻返回 1.1 fcntl函数 原型:int fcntl(int fd, int cmd, ... /* arg */ ); 调用:int flag fcntl(描述符,F_GETFL) fcntl(描述符,F_SETFL&am…...
![](https://img-blog.csdnimg.cn/img_convert/7659ff2d682d6e76d7d773de212a6152.png)
无缝融入,即刻智能[三]:Dify-LLM平台知识库构建(多路召回、精排重排),43K+星标见证专属智能方案
无缝融入,即刻智能[三]:Dify-LLM平台知识库构建(多路召回、精排重排),43K+星标见证专属智能方案 大语言模型的训练数据一般基于公开的数据,且每一次训练需要消耗大量算力,这意味着模型的知识一般不会包含私有领域的知识,同时在公开知识领域存在一定的滞后性。为了解决这一…...
![](https://www.ngui.cc/images/no-images.jpg)
AWS服务WAF
在 AWS 中使用 Web Application Firewall (WAF) 来防御常见的攻击手段,如 DDoS 攻击和 SQL 注入攻击,可以通过创建和配置规则来实现。下面是如何使用 AWS WAF 阻止这些常见攻击的详细操作步骤。 1. 登录到 AWS 管理控制台 打开 AWS 管理控制台。使用你…...
![](https://i-blog.csdnimg.cn/direct/f5f1e450c54e48ec8fa77a1268d22104.png)
二叉树中的奇偶树问题
目录 一题目: 二思路汇总: 1.二叉树层序遍历: 1.1题目介绍: 1.2 解答代码(c版): 1.3 解答代码(c版): 1.4 小结一下: 2.奇偶树分析…...
![](https://i-blog.csdnimg.cn/direct/0f99cece136241a6834de9e2eaf81c6f.png)
GD - EmbeddedBuilder - 用DMA进行串口发送接收,支持接收不定长包
文章目录 GD - EmbeddedBuilder - 用DMA进行串口发送接收,支持接收不定长包概述笔记硬件连接图形化配置485EN的配置串口的图形化配置 代码实现main.cgd32f3x0_hal_it.cgd32f3x0_hal_init.cgd32f3x0_hal_init.hgd32f3x0_hal_it.hgd32f3x0_libopt.h 备注END GD - Embe…...
![](https://www.ngui.cc/images/no-images.jpg)
英语中apartment(公寓)(美式)、house(房子)、flat(公寓)(英式)、villa(别墅)、room(房间)区别
文章目录 英语中apartment、house、flat、villa、room区别 英语中apartment、house、flat、villa、room区别 在英语中,“apartment”、“house”、“flat”、“villa”、和 “room” 这些词语都与居住空间有关,但它们各自的含义和用途有所不同ÿ…...
![](https://i-blog.csdnimg.cn/direct/e979bc1e7c5944b6b5ec9eded2133b17.png)
黑马头条vue2.0项目实战(十一)——功能优化(组件缓存、响应拦截器、路由跳转与权限管理)
1. 组件缓存 1.1 介绍 先来看一个问题? 从首页切换到我的,再从我的回到首页,我们发现首页重新渲染原来的状态没有了。 首先,这是正常的状态,并非问题,路由在切换的时候会销毁切出去的页面组件ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
《AI视频类工具之一—— 即创》
一.简介 官网:即创 - 一站式智能创意生产与管理平台 即创是字节跳动(现更名为抖音集团)旗下的一款一站式智能创意生产与管理平台,旨在帮助用户高效地进行创意内容的生成、管理和分析。 二.功能介绍 视频创作: 智能成片:利用AI技术自动编辑视频片段,快速生成完整的视频…...
![](https://www.ngui.cc/images/no-images.jpg)
CSS的:host伪类:精确定位于Web组件的指南
随着Web组件技术的发展,自定义元素(Custom Elements)已经成为现代Web开发中不可或缺的一部分。CSS的:host伪类为Web组件的样式封装提供了一种强大的工具,它允许开发者为自定义Web组件的宿主元素定义样式。本文将详细介绍:host伪类…...
![](https://i-blog.csdnimg.cn/direct/24b6d6e050e44caea69794a7868a5ac9.png)
安卓sdk manager下载安装
安卓sdk下载安装 android SDK manager下载 环境变量配置 ANDROID_HOME:D:\Android %ANDROID_HOME%\tools %ANDROID_HOME%\platform-tools %ANDROID_HOME%\build-tools\29.0.3Android SDK Platform-tools公用开发工具包,需要下载 Android SDK Tools基础…...
![](https://www.ngui.cc/images/no-images.jpg)
CV学习笔记3-图像特征提取
图像特征提取是计算机视觉中的一个关键步骤,其目标是从图像中提取有意义的特征,以便进行进一步的分析或任务,如分类、检测、分割等。特征提取可以帮助减少数据的维度,同时保留重要的信息。以下是常见的图像特征提取方法和技术&…...
![](https://i-blog.csdnimg.cn/direct/63f531821fcf42d2a5d88572349246bf.png)
Git使用方法(三)---简洁版上传git代码
1 默认已经装了sshWindows下安装SSH详细介绍-CSDN博客 2 配置链接github的SSH秘钥 1 我的.ssh路径 2 进入路径cd .ssh 文件 3 生成密钥对 ssh-keygen -t rsa -b 4096 (-t 秘钥类型 -b 生成大小) 输入完会出现 Enter file in which to save the key (/c/Users/Administrator/…...
![](https://i-blog.csdnimg.cn/direct/38282a6194bb433ca2647379e8f8da2f.png)
8.21-部署eleme项目
1.设置主从从mysql57服务器 (1)配置主数据库 [rootmsater_5 ~]# systemctl stop firewalld[rootmsater_5 ~]# setenforce 0[rootmsater_5 ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.serv…...
![](https://i-blog.csdnimg.cn/direct/83df833a5953467eb42445fe62549d7c.png)
多目标跟踪之ByteTrack论文(翻译+精读)
ByteTrack:通过关联每个检测框进行多对象跟踪 摘要 翻译 多对象跟踪(MOT)旨在估计视频中对象的边界框和身份。大多数方法通过关联分数高于阈值的检测框来获取身份。检测分数低的物体,例如被遮挡的物体被简单地丢弃,…...
![](https://www.ngui.cc/images/no-images.jpg)
【实践】Java开发常用工具类或中间件
在Java开发中,有许多常用的工具类和中间件,它们可以显著提高开发效率,简化代码,并提供强大的功能。这些工具类和中间件广泛应用于各种类型的Java应用程序中,包括Web应用、企业级应用、微服务等。以下是一些在Java开发中…...
![](https://i-blog.csdnimg.cn/direct/d0afa9ef4e2d4da0ac0a550928546a22.gif)
Vue2移动端(H5项目)项目封装车牌选择组件
一、最终效果 二、参数配置 1、代码示例: <t-keyword:isShow"isShow"ok"isShowfalse"cancel"isShowfalse"inputchange"inputchange":finalValue"trailerNo"/>2、配置参数(TKeyword Attribute…...
![](https://i-blog.csdnimg.cn/direct/06b493acb4314424b38d196e13660176.png)
四川财谷通信息技术有限公司抖音小店的优势
在数字化浪潮的推动下,电商行业迎来了前所未有的发展机遇,而抖音小店作为新兴的电商平台,凭借其独特的社交属性和便捷的购物体验,迅速赢得了广大消费者的青睐。在众多抖音小店中,四川财谷通信息技术有限公司旗下的抖音…...
![](https://www.ngui.cc/images/no-images.jpg)
2025届八股文:计算机网络高频重点面试题
鉴于排版复杂且篇幅过长,本文仅列举出问题,而未给出答案,有需要答案的同学可后台私信。整理总结不易,请尊重劳动成果,转载请注明出处。 目录 网络基础 HTTP TCP UDP IP PING WebSocket DNS 网络安全 网络基础…...
![](https://i-blog.csdnimg.cn/direct/4a58890656a94b28b8f3574f7a17adc1.png)
嵌入式和单片机有什么区别?
目录 (1)什么是嵌入式? (2)什么是单片机? (3)嵌入式和单片机的共同点 (4)嵌入式和单片机的区别 (1)什么是嵌入式? 关…...
![](https://www.ngui.cc/images/no-images.jpg)
JSON.stringify 和 JSON.parse
JSON.stringify 是一个将 JavaScript 对象转换为 JSON 字符串的方法,它有三个参数: JSON.stringify(value, replacer, space) 参数详解 value (必需): 这是你想要转换为 JSON 字符串的 JavaScript 对象或数组。例如:…...
![](https://i-blog.csdnimg.cn/direct/87f3209a48804ab78cab7de13fa25cfb.png)
APP架构设计_2.用MVVM架构实现一个具体业务
2.MVVM架构图 3.MVVM 实现一个具体业务 3.1 界面层的实现 界面层实现时,需要遵循以下几点。 1)选择实现界面的元素 界面元素可以用 view 或 compose 来实现,这里用 view 实现。 2)提供一个状态容器 这里使用 ViewModel 作为状态容…...
![](https://img-blog.csdnimg.cn/img_convert/3f405aee251b5f6b2bf7b6960267d39e.webp?x-oss-process=image/format,png)
安恒信息总裁宋端智,辞职了!活捉一枚新鲜出炉的餐饮人!
吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…...
![](/images/no-images.jpg)
wordpress 去广告插件/福州网站优化公司
转载自http://www.importnew.com/18884.html 本文将介绍 Java 中 Integer 缓存的相关知识。这是 Java 5 中引入的一个有助于节省内存、提高性能的特性。首先看一个使用 Integer 的示例代码,展示了 Integer 的缓存行为。接着我们将学习这种实现的原因和目的。你可以先…...
![](https://common.cnblogs.com/images/copycode.gif)
160;作者:网站建设&/潍坊百度网站排名
平时我们如果要用到委托一般都是先声明一个委托类型,比如: private delegate string Say(); string说明适用于这个委托的方法的返回类型是string类型,委托名Say后面没有参数,说明对应的方法也就没有传入参数。 写一个适用于该委托…...
![](https://img-blog.csdnimg.cn/img_convert/ecf60d06be502d8301c30e2efcec3b94.png)
wordpress谷歌云/怎么自己做一个网站
华为一面:1、图的表示方式?(1)邻接表法:邻接表的核心思想就是针对每个顶点设置一个邻居表。以上面的图为例,这是一个有向图,分别有顶点a, b, c, d, e, f, g, h共8个顶点。使用邻接表就是针对这8个顶点分别构建邻居表&a…...
![](/images/no-images.jpg)
犬舍网站怎么做/ks免费刷粉网站推广
// // ViewController.m // UI-AutoLayout // // Created by Bruce on 15/9/6. // Copyright (c) 2015年 Bruce. All rights reserved. // /* frame 原点 自身的尺寸 来确定 自身位置 autoLayout 根据参照视图的位置 来定义自己的位置 autoLayout相对布局 约束视图和视…...
![](https://images2017.cnblogs.com/blog/332990/201802/332990-20180209111748045-1510560368.png)
城乡建设环保部网站/seo经理
问题描述: SharePoint 运行状况分析器提示: 中文:数据库正在兼容性范围内运行,建议进行升级。 英文:Database running in compatibility range and upgrade recommended 此时去管理中心---升级和迁移---查看数据库状态…...
![](https://img-blog.csdnimg.cn/20210420215125400.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heGluZVpob3U=,size_16,color_FFFFFF,t_70#pic_center)
保定模板建站软件/网站友情链接检测
一、两种方法实现多线程: 很多时候程序员无法选择何时在代码中出现线程,但是在基本的Web库类、Servlet中,多线程都是很重要的实现并发的方式。 1.继承Thread类 class 类名 extends Thread{ run(){//覆盖run方法 线程处理的程序 } } /*** …...