我们的服务器上运行着一个 Redis 数据库,但由于某种原因,我在数据库中看不到任何键。我只是想知道 Redis 是否存储了一个事件日志,我可以在哪里跟踪 key 是否以及何时被删除?
我在/var/log/redis.log 中有 redis 的常用日志文件,但其中没有我要查找的信息。
最佳答案
我认为没有直接的方法来记录所有内容,但这里有一个 hack。
$ redis-cli monitor >> ~/my_redis_commands.log 2>&1
此处 >>>
告诉操作系统输出流已从 monitor
更改为 file
和 2>&1
指示将 STDERR
重定向到 STDOUT
。
n
>&m
Merge output from stream n with stream m.Note that file descriptor 0 is normally standard input (STDIN), 1 is standard output (STDOUT), and 2 is standard error output (STDERR).
在一些 SSH session 中查看文件内容以进行调试。
$ tail -f ~/my_redis_commands.log
或者您可以使用 grep 来查找“DEL”。您可以查看 Redis 支持的命令列表,并尝试使用 SET
、GET
等 grep 查询
$ grep '"DEL"' ~/my_redis_commands.log
这个想法的缺点是:
- 您需要运行一个单独的进程来执行此操作
- 它会消耗内存和 CPU
- 单个 MONITOR 客户端可以将吞吐量降低 50% 以上。运行更多 MONITOR 客户端将进一步降低吞吐量。
- 出于安全考虑,某些特殊管理命令(如 CONFIG)未记录到 MONITOR 输出中
有关更多信息,请参阅此 https://redis.io/commands/monitor
关于Redis 事件日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41619704/