redis lua脚本出现之前redis是没有服务器端运算能力的,主要是用来存储,用做缓存用,运算是在客户端进行,这样带来了很大的带宽流量。lua出现之后这一问题得到了充分的解决,非常棒!
redis lua脚本api介绍
eval 在redis服务器端执行lur脚本
evalsha 在redis 以脚本的sha1签名值在服务器端执行lua 脚本
script exists 判断脚本是否存在
script flush 释放lur脚本的缓存
script load 以sha1签名值做为key保存脚本
script kill 杀死当前执行的肢本
参考地址http://www.redis.io/commands#scripting
eval 的参数为 EVAL script numkeys key [key ...] arg [arg ...]
redis 推荐使用参数格式调用lur脚本 为什么呢?
evalsha以key取代实际的脚本执行的,之所以用key是为了减少带宽流量,sha1一般要比实际的脚本短得多,如果脚本带着实参会在服务器端生成N份脚本,因为参数不同而脚本也会不同。所以才推荐使用参数化格式,
script load 参数为script 也就是说我们获取sha1的方法是在redis 服务器的,
那么我们每次调用evalsha的时侯不都是要调用一次该方法?那么就得不偿失了
为了方便管理和维护,我一般将脚本以如下格式保存成lua文件
文件名自定义即可
第一行:sha1:(脚本的sha1签名)如果没有执行过则第一行为空
第二行:脚本内容
当我们执行脚本时先打开该lua文件解释出第一行sha1值,如果存在则直接调用evalsha 方法,如果不存在则调用load方法并将sha1值保存至lua文件。再调用evalsha方法即可。
分享到:
相关推荐
lua链接redis的工具驱动代码
Redis Lua脚本.flv
目录 [redis 调用Lua脚本](#redis 调用Lua脚本...redis调用Lua脚本需要使用EVAL命令。 redis EVAL命令格式: redis 127.0.0.1:6379> EVAL script numkeys key [key …] arg [arg …] 最简单的例子: 127.0.0.1:6379
主要介绍了SpringBoot+Redis执行lua脚本的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
31拓展 10:法力无边 —— Redis Lua 脚本执行原理(1)
测试RedisLua 一种调试redis lua脚本的简单方法 #Usage ./TestRedisLua -f example.lua -r 127.0.0.1:6379
使用场景: 高并发场景:在高并发场景下,使用 Lua 脚本可以实现原子性操作,避免并发问题。 复杂业务逻辑:对于复杂的业务逻辑...易于集成:Spring Boot 提供了对 Redis 和 Lua 脚本的支持,可以方便地集成到项目中。
rld 是一个非交互的调试工具,用于调试 Redis 的 Lua 脚本,这里有篇详细介绍的文章。 rld 特性包括: 易于安装,只有 6kB 可打印输出到本地和远端 跟踪执行的代码行 先进的数值变化的自动监控机制报告 报告...
java+redis+lua实现重复提交操作拦截.防止出现同一数据在同一时间被操作多次。实现基于aop和注解。
后来,通过研究,发现可以通过 redis lua 脚本实现限流,这里将 redis lua 脚本相关的知识分享出来,讲的不到位的地方还望斧正。 redis lua 脚本相关命令 这一小节的内容是基本命令,可粗略阅读后跳过,等使用的时候...
Redis+LUA脚本实现限流测试视频
基于redis和lua脚本的分布式锁的实现
前言 在redis的官网上洋洋洒洒的大概提供了200多个命令,貌似看起来很多,但是这些都是别人预先给你定义好的,但你却不能按照自己的意图进行定制, ...使用Lua脚本的好处: 减少网络开销。可以将多个请
在实际工作过程中,可以使用lua脚本来解决一些需要保证原子性的问题,而且lua脚本可以缓存在redis服务器上,势必会增加性能。 然而在redis的官网上洋洋洒洒的大概提供了200多个命令,貌似看起来很多,但是这些都是...
redis-lua 是 Redis 的 Lua 语言的客户端开发包。 示例代码: require 'redis' local redis = Redis.connect('127.0.0.1', 6379) local response = redis:ping() -- true redis:set('usr:nrk', 10) redis:set('usr...
java+lua+redis一些脚本运用写法及相关函数 可以下载查看
lua-zset, redis排序集相同的lua数据结构 zset构建&测试make && lua test_sl.lua && lua test.lua
add.lua,cas.lua并且是用于Redis的缩放布隆过滤器check.lua的三个 lua 脚本 layer-add.lua并且是用于Redis的缩放分层布隆过滤器later-check.lua的两个 lua 脚本 这些脚本将使用Redis中的EVAL命令执行。 这些脚本...
重新分配脚本具有以下功能的 redis lua 脚本管理器: 极简api lua 脚本缓存自动重新加载损坏或删除的脚本缓存如何安装 npm install redis-script --save如何使用 var RedisScript = require ( 'redis-script' ) ;...