redis+lua调试日志打印

1 篇文章 0 订阅

1、使用redis日志

redis内嵌的lua引擎提供了日志打印,需要在 redis.conf中配置:

loglevel = 
logfile = 

在redis的lua脚本中,只需要打印相关日志即可:

redis.log(redis.LOG_WARNING, "foo bar")

redis.log函数接收两个参数,第一个是日志级别(LOG_DEBUG, LOG_VERBOSE, LOG_NOTICE and LOG_WARNING),第二个是日志内容。

缺点:需要对redis进行相关配置,重启。

2、使用lua table

使用lua table来存储日志内容,并把这个日志进行返回。

local logtable = {}

local function logit(msg)
  logtable[#logtable+1] = msg
end

logit("foo")
logit("bar")

return logtable

输出:

foo@bar:~$ redis-cli --eval log-with-table.lua
1) "foo"
2) "bar"

优点:改动少,简单;

缺点:需要返回table,不方便lua脚本返回其他有业务含义的值;需要消耗内存存储日志;需要lua脚本执行完毕才能看到日志。

3、使用redis list

如果我们需要lua脚本执行完毕后返回有业务含义的值,并且需要记录日志,可以使用redis list来记录和检索消息。

local loglist = KEYS[1]
redis.pcall("DEL", loglist)

local function logit(msg)
  redis.pcall("RPUSH", loglist, msg)
end

logit("foo")
logit("bar")

return 42

输出:

foo@bar:~$ redis-cli --eval log-with-list.lua log
(integer) 42
foo@bar:~$ redis-cli LRANGE log 0 -1
1) "foo"
2) "bar"

优点:类似lua table,代码简单直接;

缺点:需要传入记录日志的redis key,需要写redis,都是额外操作。

4、使用redis的Pub/Sub

稍微麻烦点了,不过实时性很好。

参考文章:https://redislabs.com/blog/5-6-7-methods-for-tracing-and-debugging-redis-lua-scripts/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值