Redis 事件日志

标签 redis

我们的服务器上运行着一个 Redis 数据库,但由于某种原因,我在数据库中看不到任何键。我只是想知道 Redis 是否存储了一个事件日志,我可以在哪里跟踪 key 是否以及何时被删除?

我在/var/log/redis.log 中有 redis 的常用日志文件,但其中没有我要查找的信息。

最佳答案

我认为没有直接的方法来记录所有内容,但这里有一个 hack。

$ redis-cli monitor  >> ~/my_redis_commands.log 2>&1

此处 >>> 告诉操作系统输出流已从 monitor 更改为 file2>&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 支持的命令列表,并尝试使用 SETGET 等 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/

相关文章:

python - Celery + Redis后端: How to limit queue size?

redis - 为什么建议不要在 Redis 中使用 KEYS?

redis - 在哪里可以下载适用于 Windows 的 RedisInsight v1.2.2?

python - gevent + redis-py : SystemError: NULL result without error in PyObject_Call

ruby - 你如何查看一个redis存储的lua脚本(用于调试)?

redis - 为什么我不能在Redis的此排序集上使用ZRANGEBYLEX?

python - 用redis或者mongodb存储用户信息

c++ - hiredis SET 遇到段错误

redis - 最适合 redis 中的数据结构以维护用户配置文件的值(value)

string - Redis 字符串还是集合?