• 关于使用 lua 脚本抢红包


    1 java代码

    package com.robert.RedisTest;
    
    import redis.clients.jedis.Jedis;
    
    public class RedisClient {
        
        public static void main(String[] args) {
            System.out.println(getHongBao());
            System.out.println();
        }
        
        public static void doAppend(StringBuilder script,String expression){
            script.append(expression+"
    ");
        }
        
        public static int getHongBao(){
            Jedis jedis = new Jedis("localhost", 6379);
            jedis.set("name","robert");
            StringBuilder script = new StringBuilder();
            doAppend(script,"local result = 0");
            doAppend(script,"local afterDescNum = redis.call('decr', KEYS[1])");
            doAppend(script,"if afterDescNum>=0 then");
            doAppend(script,"result=1");
            doAppend(script,"else ");
            doAppend(script,"result=0");
            doAppend(script,"redis.call('set', KEYS[1], 0)");
            doAppend(script,"end");
            script.append("return result");
            Object result = jedis.eval(script.toString(),1,"hongbaoNum");
            int flag = Integer.parseInt(String.valueOf(result));
            System.out.println(Thread.currentThread().getName()+" : "+flag);
            return flag;
        }
    }

    qianghongbao.lua

    local result = 0
    local afterDescNum = redis.call('decr', KEYS[1])
    if afterDescNum>=0 then
    result=1
    else 
    result=0
    redis.call('set', KEYS[1], 0)
    end
    return result
  • 相关阅读:
    python字典的遍历
    python字典
    python可变对象
    python元组
    python的range()
    python遍历列表
    Kafka的知识总结(18个知识点)
    为什么fastjson字段为null时不输出空字符串?
    oracle建表字段包含关键字注意事项
    spring websocket 使用@SendToUser
  • 原文地址:https://www.cnblogs.com/mengjianzhou/p/5830306.html
Copyright © 2020-2023  润新知