• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

windowsredis+lua的调试

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
local key = KEYS[1] --限流KEY(一秒一个)
local limit = tonumber(ARGV[1])        --限流大小
local current = tonumber(redis.call('get', key) or "0")
if current + 1 > limit then --如果超出限流大小
    return 0
else  --请求数+1,并设置2秒过期
    redis.call("INCRBY", key,"1")
    redis.call("expire", key,"2")
    return 1
end

  

2.把写好的lua脚本my.lua放到windows redis目录下面就是和redis-cli.exe同级目录

D:\Redis-x64-3.2.100
   my.lua

  

3.打开windows cmd命令窗口执行命令

D:\Redis-x64-3.2.100>redis-cli.exe --eval my5.lua 1 ip:1213 , 5

  

上面命令解释来源:https://www.redisgreen.net/blog/intro-to-lua-for-redis-programmers/

redis-cli.exe --eval my5.lua 1 ip:1213 , 5

  

上面命令中的1表示有几个key这里只有一个key 所以lua代码中只能用KEY[1]获取
KEY[1]=ip:1213

逗号,表示分割KEY和ARGV

再看一个例子:

local link_id = redis.call("INCR", KEYS[1])
redis.call("HSET", KEYS[2], link_id, ARGV[1])
return link_id

redis-cli --eval incrset.lua links:counter links:urls , http://malcolmgladwellbookgenerator.com/

  

终于在国外一个大神写的call函数解决我困惑一天的问题


local redis = require 'redis'

-- If you have some different host/port change it here
local host = "127.0.0.1"
local port = 6379

client = redis.connect(host, port)

-- Workaround for absence of redis.call or atelast I did not find one
-- And did not want to digg in redis source code to see how does he get redis.call
redis.call = function(cmd, ...) 
    return assert(loadstring('return client:'.. string.lower(cmd) ..'(...)'))(...)
end


local r = redis.call('get', 'foo')
print(r)

  

有个这个call函数就可以方便调试了
有个这个call函数就可以方便调试了
有个这个call函数就可以方便调试了


 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Ubuntu 安装lua发布时间:2022-07-22
下一篇:
nginx lua集成发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap