5行lua代码在redis上做发号器

原创 2016年05月30日 22:22:20
--
-- User: Fangwei
-- Date: 16/5/26
-- Time: 19:28
-- To change this template use File | Settings | File Templates.
--

--生成ID的位数比较合理长度为52个bit,然后可以时间上有序的,包含项目和实例信息

-- 在redis客户端执行: redis-cli -h 127.0.0.1 -p 6379 EVAL "$(cat ticketID.lua)" 01 02
-- EVAL 后面的参数解释 "$(cat ticketID.lua)"是我们执行的lua脚本文件,
-- "2"是代表传入lua脚本的参数有两个KEY,
-- "01"表示projectID,我上面用4个bit 所以可以指定取值01至15
-- "02"表示实例ID,可以指定01-15

-- 更多关于redis的EVAL的说明,请参考:  http://redis.io/commands/EVAL

--更多详细的ID生成策略,建议参考大拿们的博客:http://weibo.com/p/1001603800404851831206


-- project id 占用 4个 bit
local projectId = KEYS[1]
-- instance id 占用 4个 bit
local instanceId = KEYS[2]
--sequence占用16个bit
local sequence = redis.call("INCR", "TICKET_ID") % 65536
--减去2016-05-08的时间戳,主要是因为位数有限,time占用28个bit
local time = redis.call("TIME")[1] - 1462636800

return time * 16777216 + projectId * 1048576 + instanceId * 65536 + sequence


相关文章推荐

Lua代码解释器

  • 2016年08月24日 10:04
  • 261KB
  • 下载

ulua中lua代码使用反射调用c#详解

1、官方解释 2、代码层分析 2.1 官方脚本 2.2 语句 luanet.load_assembly(‘UnityEngine’)解析LuaState ...

x-code 显示lua代码

  • 2013年11月05日 02:26
  • 5KB
  • 下载

编写高性能的Lua代码

前言 Lua是一门以其性能著称的脚本语言,被广泛应用在很多方面,尤其是游戏。像《魔兽世界》的插件,手机游戏《大掌门》《神曲》《迷失之地》等都是用Lua来写的逻辑。 所以大部分时候我们不需要...

Lua代码调试工具(Decoda已破解)

  • 2013年12月04日 11:08
  • 1.92MB
  • 下载

openresty 应用打包并使用luajit编译lua代码实现简单加密

前面写了很多篇介绍openresty开发的文章,你是否已经开发了一些小程序? 当开发完一些应用,是否想着怎么打包? 出于某种原因,不想公开一些核心的模块源码?针对上面两点,有以下两个办法 写个小脚...

C语言调用Lua代码

  • 2013年02月11日 22:47
  • 89KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:5行lua代码在redis上做发号器
举报原因:
原因补充:

(最多只允许输入30个字)