Redis学习笔记#10 lua脚本,整合springboot调用
1 2 3 4 5 6 7 | lua代码:<br><br>-- checkandset.lua local current = redis.call( 'GET' , KEYS[1]) if current == ARGV[1] then redis.call( 'SET' , KEYS[1], ARGV[2]) return true end return false <br> |
配置:
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
return template;
}
1 2 3 4 5 6 | <br> @Bean <br> public RedisScript<Boolean> redisScript() { DefaultRedisScript<Boolean> redisScript = new DefaultRedisScript<>(); ScriptSource scriptSource = new ResourceScriptSource( new ClassPathResource( "META-INF/scripts/checkandset.lua" )); redisScript.setResultType(Boolean. class ); redisScript.setScriptSource(scriptSource); return redisScript;<br>} |
调用:
1 2 3 4 5 6 7 8 9 | @Autowired RedisTemplate redisTemplate; @Autowired RedisScript<Boolean> redisScript; List<String> keys = new ArrayList<>(); keys.add( "stock" ); return redisTemplate.execute(redisScript, keys, 2 ); |
分类:
Redis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端