Redis使用Lua实现ZINCRBY
2024/5/29...小于 1 分钟
Redis使用Lua实现ZINCRBY
@Autowired
private StringRedisTemplate redisTemplate;
/**
* 取到权值超过传入值的元素,取第一个,并把这个集合删除
*
* @param key 集合的key
* @param i score > i
* @return 最大的权值
*/
public String zSetGetAndDelIfOver(String key, int i) {
DefaultRedisScript<String> script = new DefaultRedisScript<>();
script.setScriptText("local res = redis.call('ZREVRANGEBYSCORE', KEYS[1], '+inf', ARGV[1], 'LIMIT', 0, 1) " +
"if #res == 0 then res = '' else redis.call('DEL', KEYS[1]) end return res[1]");
script.setResultType(String.class);
return redisTemplate.execute(script, Collections.singletonList(key), String.valueOf(i));
}
更多关于 Redis 使用 Lua 脚本查看文章:Redis支持的Lau脚本之SpringBoot使用