redis中使用lua脚本以及c++调用lua脚本

文章目录

  • 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
eval "return redis.call('set',KEYS[1],ARGV[1])" 1 chao 100
get chao #100
eval "return redis.call('set',KEYS[1],KEYS[2])" 2 chao 100
get chao #100
  • script load&&evalsha
    redis中使用lua脚本以及c++调用lua脚本_第1张图片
  • 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脚本的。

你可能感兴趣的:(redis,redis,lua,c++)