扩展Redis的Lua调用方式
Redis是支持Lua脚本的,但是我以为并不方便。
1. SCRIPT LOAD一个字符串拿到一个SHA,首先这个Lua script脚本就很难拿到。Linux一般用cat什么的。但是你作为PHP怎么拿到Lua的代码呢?
2. 记录一个SHA,而且SHA是随着Lua代码的变化而变化的。而且给EVALSHA的时候带来了麻烦,作为PHP如何写代码呢?
我扩展了一下Redis的代码。
1. 我在config里面加上了lua_script_path一项。(这个目录下,你可以放置N个Lua脚本,名字固然是彼此不同的。)
2. 增加命令SCRIPT RELOAD,可以从lua_script_path中加载其中所有的Lua脚本。(而且是真的Reload,就是说每次执行,所有的Lua脚本都会被执行加载动作,这样你随时可以方便改这里面的文件了。)
3. 增加了命令EVALFILE,evalfile a.lua 0 就可以执行lua_script_path下面的a.lua代码了。
https://github.com/healerkx/redis/commit/7f29b781df8bf6809c89c3c3b0282261987d42c1
扩展Redis的Lua调用方式的更多相关文章
- Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
jedis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务.管道及有jedis自身实现的分布式. 在这里对jedis关于事务.管道和分布式 ...
- 9、redis之事务2-Jedis的八种调用方式(事务、管道、分布式)介绍
1.普通同步 @Test public void test1Normal() { Jedis jedis = new Jedis("localhost"); long start ...
- 【转载】Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍
转载地址:http://blog.csdn.net/truong/article/details/46711045 关键字:Redis的Java客户端Jedis的八种调用方式(事务.管道.分布式…)介 ...
- redis之lua脚本
背景介绍 redis数据库提供了一些管理功能比如 流水线:打包发送多条命令,并在一个回复里面接收所有被执行命令的结果.事务:一次执行多条命令,被执行的命令要么就全部都被执行,要么就一个也不执行.并且事 ...
- Redis结合Lua脚本实现高并发原子性操作
从 2.6版本 起, Redis 开始支持 Lua 脚本 让开发者自己扩展 Redis … 案例-实现访问频率限制: 实现访问者 $ip 在一定的时间 $time 内只能访问 $limit 次. 非脚 ...
- redis(6)lua脚本
一.lua脚本 lua是一种轻量小巧的脚本语言,用标准的C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. lua的详细内容你可以参考lua官方网站 ...
- Redis之Lua的应用(四)
一.什么是Lua脚本 Lua是一个高效的轻量级脚本语言(和JavaScript类似),用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能.Lu ...
- 红包雨中:Redis 和 Lua 的邂逅
2018年,王思聪的冲顶大会,西瓜视频的百万英雄,再到映客的芝士超人,直播答题火爆全网. 我服务的一家电商公司也加入了这次热潮,技术团队研发了直播答题功能.答题结束之后,红包会以红包雨的形式落下,用户 ...
- redis使用Lua脚本
最近在看<Redis入门指南>第二版,感觉收获挺大,推荐大家有时间看一看.其中有一章讲Lua脚本,感觉挺实用,把总结整理一下. Redis在2.6中推出了脚本功能,允许开发者使用Lua语言 ...
随机推荐
- 【转】C#多线程
C#中的多线程编程 C#是.Net平台的通用开发工具,它能够建造所有的.Net应用.在.Net中所有线程都运行在应用程序域(AppDomain)中,这也许让你想到Win32进程,实际上它们还是有很大的 ...
- SQlServer第一天
SQLserver是个什么东西?相当于一是个货仓,在计算机领域的货仓,学名:数据库. 数据库是个什么东西呢?是指长期存储在计算机内的.有组织.可共享的数据结合.由此可知数据库的三个特点:永久存储.有组 ...
- C语言复杂声明-void (*signal(int sig, void (*handler)(int)))(int);
问题提出 请分析此声明:void (*signal(int sig, void (*handler)(int)))(int); 求解过程 在对上面的例子作分析之前,我们需要了解C语言的声明优先级,&l ...
- Java(二)
课后,我查阅相关学习资料和Java API制作了以下界面,界面包含了单选按钮(JRadioButton).复选框(JCheckBox).组合框(JComboBox).单行文本输入框(JTextFiel ...
- flash上传控件跨域
工作中需要使用百度开发的ueditor,但服务器部署中前端代码和后端代码在不同的域名下,现已解决的前端调后端代码的跨域问题.可是,ueditor中的上传图片flash控件也涉及跨域问题,经过查找发现可 ...
- 【Mocha.js 101】Mocha 入门指南
序 说到质量控制,不得不提起测试驱动开发(TDD)和行为驱动开发(BDD).随着敏捷软件开发的推行,软件质量控制的重担也逐渐从测试工程师转向了研发工程师.测试驱动也随之悄然而生,成为了敏捷开发中重要的 ...
- web设计中那些因素可能影响网站后期优化
web设计中那些因素可能影响网站后期优化. 1.网站代码的简洁实用性.网站源文件html代码.js代码.css代码等应尽可能的压缩处理.能用jquery-min.js的最好不要用jquery.js:c ...
- 使用自定的Adapter绑定ListView/GridView数据
使用自定的Adapter绑定ListView/GridView数据(地址) 对于ListView/Gridview的数据绑定, google提供了一些Adapter的模板, 自己也可以自定义一些个性化 ...
- 模拟Post请求
此文摘自csdn青山的博客地址:http://blog.csdn.net/a497785609/article/details/6437154 本人随笔只为方便自己查阅,也为广大网友提供方便,不喜勿喷 ...
- Gulp构建前端自动化项目
类似于Grunt,gulp是另一个同样功能很强大的前端项目自动化利器. 下面是项目的效果: