SpringBoot+Redis+Lua实现数据的处理

目录

前言

需求与分析

伪代码与实现

可能要考虑的问题

1. 集群的redis

2. 异常处理

 优缺点

1. 使用Lua的优点

 2. 使用Lua的缺点


前言

本文主要讨论下使用Lua脚本去对redis进行操作的一些想法。我将会通过一个具体的例子来进行分析。
背景:Lua是一种类C的语言,在这里我们使用它去编写一些语句,去操纵redis中的数据。一些背景知识,大家感兴趣的话,可以通过下面的Link去了解下。

  1. lua基本语法。Lua 教程 | 菜鸟教程
  2. springboot集成redis和lua。Springboot整合Redis以及Lua脚本的使用 - 奕锋博客 - 博客园
  3. redis的基本命令。Redis 教程 | 菜鸟教程
  4. redis集群 Redis集群 - -Finley- - 博客园

需求与分析

我在工作中遇到如下一个需求。需要对一些产品的库存节点进行清空操作。因为产品的库存是一个频繁访问和变更的数据。因此在我们的系统中,它是在redis和db各有一份。redis上的数据为最新数据。所以我的工作流程大概如下:

 因为要操作的库存节点可能会有多个。如果使用循环的方式去call redis,考虑到网络IO的问题,它会变得很慢。同时,万一在循环的过程中,网络环境出现变化,也很难去保证数据的一致性。所以这里我考虑使用lua脚本,将要更新的库存节点id给到它,进行批量的处理。

伪代码与实现

所以思路清晰之后,就可以编码的。这里贴上对redis处理的Lua伪代码:

-- id 的common前缀
local invIdPrefix = KEYS[1]
-- n个节点id的值
local inventoryIds = ARGV

-- 以下为简写的伪代码,实际上并不能运行
local id2InvCount 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值