---
title: Inspect Redis commands using MONITOR
teaser: 'Take a look at a live log of all commands run on your Redis server.

  '
tags: redis,debugging,web
author: Eebs Kobeissi
published_on: 2021-03-15
---

I needed to check if the [Redis] client in our Rails application was namespacing
keys correctly on certain commands. Instead of adding some debugging code on the
Rails side to see what keys were being used, I chose to look at my local Redis
server instead. If I saw any key without the `app:development` prefix, I knew
the issue was still present.

Using the [MONITOR] command and the [redis-cli] program, I was able to watch in
real-time all the commands that were being sent to the server.

```
❯ redis-cli MONITOR
OK
1614720201.775951 [0 127.0.0.1:62649] "exists" "session:abc123"
1614720201.776312 [0 127.0.0.1:62649] "get" "app:development:session:abc123"
1614720202.509717 [0 127.0.0.1:62649] "setex" "app:development:session:abc123" "2592000" "<a bunch of data>"
```

The return values of the MONITOR command is a direct dump of the commands the
server has received. It shows the timestamp, database, and connection info along
with the command and arguments. Seeing the [EXISTS] command requesting a key
without the prefix let me know I still had work to do. I could try new
approaches without stopping the `redis-cli` program until I saw the desired
change.

[Redis]: https://redis.io/
[MONITOR]: https://redis.io/commands/MONITOR
[EXISTS]: https://redis.io/commands/exists
[redis-cli]: https://redis.io/topics/rediscli
