栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Ruby

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Ruby

如果您使用的是Redis
2.6+,则可以使用Lua脚本引擎更轻松地完成此操作。在Redis的文件说:

Redis脚本在定义上是事务性的,因此您可以使用Redis事务进行任何操作,还可以使用脚本进行操作,通常该脚本会更简单,更快速。

实现它很简单:

LUA_ACQUIRE = "return redis.call('setnx', KEYS[1], 1) == 1 and redis.call('expire', KEYS[1], KEYS[2]) and 1 or 0"def lock(key, timeout = 3600)  if redis.eval(LUA_ACQUIRE, key, timeout) == 1    begin      yield    ensure      r.del key    end  endend

用法:

lock("somejob") { do_exclusive_job }


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373060.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号