首页 > 其他 > 详细

redis原理2

时间:2020-08-24 15:27:55      阅读:81      评论:0      收藏:0      [点我收藏+]

1:Lua 脚本

Lua/?lu?/是一种轻量级脚本语言,它是用 C 语言编写的,跟数据的存储过程有点类似。
使用 Lua 脚本来执行 Redis 命令的好处:

  1. 一次发送多个命令,减少网络开销。
  2. Redis 会将整个脚本作为一个整体执行,不会被其他请求打断,保持原子性。
  3. 对于复杂的组合命令,我们可以放在文件中,可以实现程序之间的命令集复用。

1.1:在 Redis 中调用 Lua 脚本

使用 eval /?‘v?l/ 方法,语法格式:

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

示例,返回一个字符串,0 个参数:

eval "return ‘Hello World‘" 0

1.2在 Lua 脚本中调用 Redis 命令

使用 redis.call(command, key [param1, param2…])进行操作。语法格式:

eval "redis.call(‘set‘,KEYS[1],ARGV[1])" 1 lua-key lua-value
  • command 是命令,包括 set、get、del
  • key 是被操作的键。
  • param1,param2…代表给 key 的参数

注意跟 Java 不一样,定义只有形参,调用只有实参。Lua 是在调用时用 key 表示形参,argv 表示参数值(实参)。

1.2.1 设置键值对

在 Redis 中调用 Lua 脚本执行 Redis 命令

eval "return redis.call(‘set‘,KEYS[1],ARGV[1])" 1 fuyu 9527
get fuyu

以上命令等价于 set fuyu 9527
在 redis-cli 中直接写 Lua 脚本不够方便,也不能实现编辑和复用,通常我们会把脚本放在文件里面,然后执行这个文件。

1.2.2 在 Redis 中调用 Lua 脚本文件中的命令,操作 Redis

创建 Lua 脚本文件:

redis原理2

原文:https://www.cnblogs.com/fuyublog/p/13553608.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!