lua redis.call 可以redis 执行lua哪些命令

使用Nginx+Lua+Redis进行Web开发.Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行,一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。两者的结合可以开发出高性能的Web应用。
& & 上篇介绍了如果使用Lua访问Redis,但是每次都是重新创建一个连接到Redis,其实更好的方法是使用Redis连接池。
& & 如果创建Redis连接池呢?原理是用Nginx的Upstream来实现,在Nginx启动时就可以创建多条socket连接到RedisServer,然后我们只要把请求发送到该Upstream即可,具体来配置文件。& &&
upstream redis_pool {
server 127.0.0.1:6379;
keepalive 1024;
& & 这样就创建了redis连接池,
接着在配置文件里面添加一个location。
location /get_redis{
set_unescape_uri $query $arg_
redis2_raw_query $
redis2_pass redis_
& & 接下来就是如果使用redis连接池了。我写了一个lua模块。
RedisManager = {}
RedisManager.runCommand = {}
local metatable = {
__call = function(table , ...)
command = nil
for key, value in ipairs({...}) do
if not command then
command = value
args = args .. " " ..
command = command .. " " .. args .. '\r\n'
-- return command
local res = ngx.location.capture("/get_redis",{
args = { query = command}
return res.body
setmetatable(RedisManager.runCommand, metatable);
return RedisManager
& & 在使用的时候记得require("RedisManager"),然后只需要这样调用
RedisManager.runCommand("set", "dog", "hhhh")
& & runCommand是变长参数。我们只需要添加这些参数即可,使用方式和redis的command是一样的。如
RedisManager.runCommand("hset", "user-1", "name", "JimGreen")
RedisManager.runCommand("hget", "user-1", "name")
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&你可能喜欢
12345678910
关于本站 本站以分享运维技术为主,欢迎大家参与技术分享,同时也欢迎大家吐槽,本站提供以下交流圈:QQ群①:*****(满)QQ群②:6690706 QQ群③: QQ群④:(新) 微信公众号:ttlsacom 商务合作QQ:redis执行lua 不支持spop命令???
[问题点数:40分]
redis执行lua 不支持spop命令???
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。&&原精spring+springdata redis入门教程实现java端调用redis lua脚本片段和lua脚本文件maven项目截图:最简单的入门级实例,演示如何通过spring,springdata redis实现java调用redis的脚本和文件。在redis server端执行如下命令:
redis-cli -h localhost -p 6379 SCRIPT LOAD &return &#&#39;&输出得到sha值:&052f2e2b180e2df03b33a747ba35af3f497ee526java端调用代码示例:
public void evalScriptSnippet() {
// &redis-cli -h localhost -p 6379 SCRIPT LOAD &return &#&#39;&
// &&052f2e2b180e2df03b33a747ba35af3f497ee526
final String sha = &052f2e2b180e2df03b33a747ba35af3f497ee526&;
Object ret = redisTemplate.execute(new RedisCallback&Object&() {
public Object doInRedis(RedisConnection connection) {
Jedis jedis = (Jedis) connection.getNativeConnection();
return jedis.evalsha(sha, 0);
System.out.println(ret);
}执行后输出结果如下:&和在redis server上执行如下命令的效果类似:
redis-cli -h localhost -p 6379 EVALSHA 052f2e2b180e2df03b33a747ba35af3f497ee526 0执行lua文件的流程类似,请下载代码后根据项目的需要做扩展吧。5个牛币请下载代码后再发表评论//zuidaima_redis-test/zuidaima_redis-test/.classpath/zuidaima_redis-test/.project/zuidaima_redis-test/pom.xml/zuidaima_redis-test/src/zuidaima_redis-test/src/main/zuidaima_redis-test/src/main/java/zuidaima_redis-test/src/main/java/com/zuidaima_redis-test/src/main/java/com/zuidaima/zuidaima_redis-test/src/main/java/com/zuidaima/redis/zuidaima_redis-test/src/main/java/com/zuidaima/redis/test/zuidaima_redis-test/src/main/resources/zuidaima_redis-test/src/main/resources/applicationContext.xml/zuidaima_redis-test/src/main/resources/test.properties精精精原原最热搜索分享话题编程语言基础Web开发数据库开发客户端开发脚本工具游戏开发服务器软硬件开源组件类库相关分享原精原精原精原原精精精原最近下载暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级最近浏览暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友}

我要回帖

更多关于 redis 执行lua脚本 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信