• Redis中使用Lua语言

    在 Redis 的 2.6 以上版本中,除了可以使用命令外,还可以使用 Lua 语言操作 Redis。从前面的命令可以看出 Redis 命令的计算能力并不算很强大,而使用 Lua 语言则在很大程度上弥补了 Redis 的这个不足。

    只是在 Redis 中,执行 Lua 语言是原子性的,也就说 Redis 执行 Lua 的时候是不会被中断的,具备原子性,这个特性有助于 Redis 对并发数据一致性的支持。

    Redis 支持两种方法运行脚本,一种是直接输入一些 Lua 语言的程序代码;另外一种是将 Lua 语言编写成文件。

    在实际应用中,一些简单的脚本可以采取第一种方式,对于有一定逻辑的一般采用第二种方式。而对于采用简单脚本的,Redis 支持缓存脚本,只是它会使用 SHA-1 算法对脚本进行签名,然后把 SHA-1 标识返回回来,只要通过这个标识运行就可以了。

    执行输入 Lua 程序代码

    它的命令格式为:

    eval lua-script key-num [key1 key2 key3 ...] [value1 value2 value3 ...]

    其中:

    • eval 代表执行 Lua 语言的命令。
    • Lua-script 代表 Lua 语言脚本。
    • key-num 整数代表参数中有多少个 key,需要注意的是 Redis 中 key 是从 1 开始的,如果没有 key 的参数,那么写 0。
    • [key1key2key3...] 是 key 作为参数传递给 Lua 语言,也可以不填它是 key 的参数,但是需要和 key-num 的个数对应起来。
    • [value1 value2 value3...] 这些参数传递给 Lua 语言,它们是可填可不填的。

    这里难理解的是 key-num 的意义,举例说明就能很快掌握它了,如图 1 所示。

    Redis执行Lua语言脚本
    图 1  Redis 执行 Lua 语言脚本

更多...

加载中...