Redis的Lua
2023-02-18 16:26:32 时间
贴一个自己封装的通用lua执行器
/**
* 通用lua脚本执行器
*
* @param luaStr lua脚本
* @param resType 返回值类型
* @param keys key值集合
* @param args 参数类型集合
* @return lua执行结果
* @author zyh */
<T> T commonLuaExecute(String luaStr, Class<T> resType, List<String> keys, Object... args);
脚本
/**
* 机会购下单lua
hash 结构
flide为用户id
keys1 map的key
keys2 是filte 用户id
args1 是当前使用机会数
args2 是总使用机会数
value为购买次数(已使用机会数)
totalChanceCount 活动设置的总机会数
goodsCount 本次需要使用的机会数
* @author zyh
*/
public static final String LUA_ADD_BUY_RECORD_ADD_FOR_CHANCE =
"local buyCount=tonumber(redis.call('Hget',KEYS[1],KEYS[2]));" +
"local goodsCount=tonumber(ARGV[1])" +
"local totalChanceCount=tonumber(ARGV[2])" +
" if (buyCount == nil) then " +
" if(goodsCount<=totalChanceCount) then" +
" redis.call('HINCRBY',KEYS[1],KEYS[2],goodsCount)" +
" return 1;" +
" else " +
" return 0;" +
" end" +
" else " +
" if((goodsCount+buyCount)<=totalChanceCount) then" +
" redis.call('HINCRBY',KEYS[1],KEYS[2],goodsCount)" +
" return 1;" +
" else " +
" return 0;" +
" end;" +
" end;";
相关文章
- 对于System.Net.Http的学习(一)——System.Net.Http 简介
- SQL SERVER 2005/2008 中关于架构的理解(二)
- SQL SERVER 2005/2008 中关于架构的理解(一)
- SQL SERVER 查询性能优化——分析事务与锁(五)
- [前端]css前端样式的模块化
- kubernetes数据持久化StorageClass动态供给(二)
- kubernetes数据持久化PV-PVC详解(一)
- kubernetes之Ingress发布应用实现rewrite重写并配置HTTPS;(二)
- kubernetes之基于ServiceAccount拉取私有镜像
- Knative部署应用以及应用的更新、应用的分流(三)
- Jenkins配置下载插件源;
- kubernetes之一文详解Ingress;(一)
- Centos7安装Jenkins详解;
- kubernetes之镜像拉取策略ImagePullSecrets;
- kubernetes之镜像拉取策略ImagePullPolicy;
- kubernetes之Endpoint引入外部资源实践;
- 一文搞懂什么是kubernetes Service
- Serverless之Knative部署应用示例(二)
- Serverless之knative1.6安装(一)
- Nginx篇之Ubuntu18.04.3编译安装Nginx