使用redisList的做同步队列处理数据
场景:
在多数据处理的时候,有先有后,比如我们多订单,在同步处理时,想要做到同步处理,先进先出,或者后进先出来处理数据,那么我们可以使用redis的list实现。
为了能在客户端工具中看到存储在redis中的值,我们使用存储都是字符串方式进行存储。
测试例子。
@Resource private StringRedisTemplate stringRedisTemplate; /** * 插入一条记录stringRedisTemplate * @throws Exception */ @Test public void stringredislist_leftpush() throws Exception { String redisKey = "stringtest:myredis.list"; for (int i = 0; i < 10; i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("key" + i, "value" + i); stringRedisTemplate.opsForList().leftPush(redisKey, JSON.toJSONString(map)); } } /** * 插入一条记录stringRedisTemplate * @throws Exception */ @Test public void stringredislist_rightpop() throws Exception { String redisKey = "stringtest:myredis.list"; this.popData("弹出信息", redisKey); } /**弹出信息*/ private void popData(String msg, String redisKey) { if (stringRedisTemplate.opsForList().size(redisKey) > 0) { String objValue = stringRedisTemplate.opsForList().rightPop(redisKey); System.out.println(objValue); Map<String, Object> map = JSONObject.toJavaObject(JSONObject.parseObject(objValue), Map.class); // object 转换 System.out.println(map.keySet()); System.out.println(redisKey + "数据处理,剩余:" + stringRedisTemplate.opsForList().size(redisKey)); popData(msg, redisKey); } else { System.out.println(redisKey + "数据处理完成"); return; } }
执行日志打印:
stringredislist_rightpop....................start.................... {"key0":"value0"} [key0] stringtest:myredis.list数据处理,剩余:9 {"key1":"value1"} [key1] stringtest:myredis.list数据处理,剩余:8 {"key2":"value2"} [key2] stringtest:myredis.list数据处理,剩余:7 {"key3":"value3"} [key3] stringtest:myredis.list数据处理,剩余:6 {"key4":"value4"} [key4] stringtest:myredis.list数据处理,剩余:5 {"key5":"value5"} [key5] stringtest:myredis.list数据处理,剩余:4 {"key6":"value6"} [key6] stringtest:myredis.list数据处理,剩余:3 {"key7":"value7"} [key7] stringtest:myredis.list数据处理,剩余:2 {"key8":"value8"} [key8] stringtest:myredis.list数据处理,剩余:1 {"key9":"value9"} [key9] stringtest:myredis.list数据处理,剩余:0 stringtest:myredis.list数据处理完成 耗时 0.359 ms stringredislist_rightpop....................end....................
在客户端 redis desktop中看到存储信息。
如果使用对象存储,那么看到的将是。。看不明白的东西。
分类:
redis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?