文章目录
- 1.lua语言
- 2.redis调用lua脚本的好处
- 3.redis调用lua脚本的方法
- 4.c/c++调用lua脚本
1.lua语言
lua 是一种小巧的脚本语言,多用于游戏脚本的开发中。
菜鸟教程 lua教程。
2.redis调用lua脚本的好处
- lua脚本原子性执行。redis在执行lua脚本的时候,是不处理其它的任务的,这样利用lua脚本就可以处理很多事务。这些如果不用lua脚本而是通过命令去实现的话,将会非常复杂。
- 增强计算能力。lua脚本的引入,强化了redis了本来薄弱的计算能力。单纯的redis是基本不具备计算能力,lua弥补了这一不足。
- 降低网络IO。lua脚本可以一次性发送到redis-server,避免了多次交互带来的网络开销。
- 提高复用。lua脚本加载到redis-server之后,可以通过返回的SHA1值服用此脚本。但目前不知道这些SHA1丢失了后该如何再次获得,或者说redis是否有管理这些SHA1的方法暴露给用户。
3.redis调用lua脚本的方法
eval "return redis.call('set',KEYS[1],ARGV[1])" 1 chao 100
get chao
eval "return redis.call('set',KEYS[1],KEYS[2])" 2 chao 100
get chao
script load
&&evalsha
script flush
清空所有load过的所有lua脚本
script exists sha1value
查看某lua脚本是否存在
script kill
杀死所有在运行的lua脚本进行(难道同时在运行的lua脚本不是只有一个吗)
- note:KEYS和ARGV在命令行中都必须要大写
- 问题:SHA1丢失后如何再次获得,通过SHA1值去和获取lua脚本内容
4.c/c++调用lua脚本
redis官方网站推荐的C++客户端中,redis-plus-plus是支持lua脚本的。