《Redis使用手册之Lua脚本》

《Redis使用手册之Lua脚本》

EVAL:执行脚本

  • 127.0.0.1:6379> eval “return ‘hello world’” 0
    “hello world”

    127.0.0.1:6379> eval “return redis.call(‘set’,KEYS[1],ARGV[1])” 1 “message” “hello world”
    OK
    127.0.0.1:6379> get message
    “hello world”

    EVAL:执行脚本

    EVAL script numkeys key [key …] arg [arg …]

    script参数用于传递脚本本身。

    numkeys参数用于指定脚本需要处理的键数量,根据Lua的惯例,

    KEYS数组的索引将以1为开始:访问KEYS[1]可以取得第一个传入的key参数,访问KEYS[2]可以取得第二个传入的key参数,以此类推。 任意多个arg参数用于指定传递给脚本的附加参数,这些脚本可以在脚本中通过ARGV数组进行访问,与KEYS参数一样,ARGV数组的索引也是以1为开始的。

    使用脚本执行Redis命令

    redis.call(command, …)

    redis.pcall(command, …)

    这两个函数接受的第一个参数都是被执行的Redis命令的名字,而后面跟着的则是任意多个命令参数。

    在lua脚本中执行Redis命令所使用的格式与redis-cli客户端中执行Redis命令所使用的格式是完全一样的。

    EVAL:执行脚本

SCRIPT LOAD和EVALSHA:缓存并执行脚本

  • 127.0.0.1:6379> script load “return ‘hello world’”
    “5332031c6b470dc5a0dd9b4bf2030dea6d65de91”
    127.0.0.1:6379> script load “redis.call(‘SET’,KEYS[1],ARGV[1]); return redis.call(‘GET’,KEYS[1])”
    “27f72464d4122016431244ae33526a5fb72014f3”
    127.0.0.1:6379> evalsha “5332031c6b470dc5a0dd9b4bf2030dea6d65de91” 0
    “hello world”
    127.0.0.1:6379> evalsha “27f72464d4122016431244ae33526a5fb72014f3” 1 “msg”

    127.0.0.1:6379> evalsha “27f72464d4122016431244ae33526a5fb72014f3” 1 “msg” “Ciao!”
    “Ciao!”
    127.0.0.1:6379> script exists 27f72464d4122016431244ae33526a5fb72014f3 5332031c6b470dc5a0dd9b4bf2030dea6d65de91

    (integer) 1

    (integer) 1
    127.0.0.1:6379> script flush
    OK
    127.0.0.1:6379> script exists 27f72464d4122016431244ae33526a5fb72014f3 5332031c6b470dc5a0dd9b4bf2030dea6d65de91

    (integer) 0

    (integer) 0
    127.0.0.1:6379> script kill

    SCRIPT LOAD和EVALSHA:缓存并执行脚本

    SCRIPT LOAD script

    用户通过EVALSHA命令来执行已被缓存的脚本

    EVALSHA sha1 numkeys key[key …] arg[arg …]
    在这里插入图片描述

    除了第一个参数接受的事Lua脚本对应的SHA1校验和而不是脚本本身之外,EVALSHA命令的其他参数与EVAL命令的参数都是相同的。

    除了SCRIPT LOAD之外,EVAL命令在执行完脚本之后也会把被执行的脚本缓存起来,以供之后使用。

    通过Lua脚本缓存,我们可以将需要重复执行的Lua脚本缓存在服务器中,然后通过EVALSHA命令来执行已缓存的脚本,从而将执行Lua脚本所需耗费的网络带宽降至最低。

    SCRIPT LOAD和EVALSHA:缓存并执行脚本

相关推荐

  1. Redis使用Lua脚本

    2024-05-02 08:32:02       45 阅读
  2. Redis整合Lua脚本

    2024-05-02 08:32:02       41 阅读
  3. Redis使用手册字符串

    2024-05-02 08:32:02       15 阅读
  4. redis使用lua脚本处理业务逻辑

    2024-05-02 08:32:02       32 阅读
  5. lua脚本的基本语法,以及Redis中简单使用

    2024-05-02 08:32:02       44 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-02 08:32:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-02 08:32:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-02 08:32:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-02 08:32:02       18 阅读

热门阅读

  1. Edge的使用心得与深度探索

    2024-05-02 08:32:02       10 阅读
  2. 大数据组件之Storm简介

    2024-05-02 08:32:02       15 阅读
  3. 嵌入式Linux编辑器vi

    2024-05-02 08:32:02       10 阅读
  4. 关于PostgreSQL的20道面试题

    2024-05-02 08:32:02       11 阅读
  5. 陪同口译VR情景实训教学系统开发

    2024-05-02 08:32:02       11 阅读
  6. 蓝桥杯练习系统(算法训练)ALGO-952 简易编辑器

    2024-05-02 08:32:02       9 阅读
  7. Podman相比Docker在轻量级部署上的优势是什么?

    2024-05-02 08:32:02       13 阅读
  8. 【leetcode】链表反转题目总结

    2024-05-02 08:32:02       13 阅读
  9. Leetcode 225. Implement Stack using Queues

    2024-05-02 08:32:02       9 阅读
  10. 从事人工智能AI工作需要哪些关键技能?

    2024-05-02 08:32:02       11 阅读