This article was also posted on the Gumtree devteam blog
If there was one golden rule when working with redis in production, it would be
“Don’t use KEYS”
The reason for this is that it blocks the redis event loop until it completes, i.e. while it’s busy scanning its entire keyspace, it can’t serve any other clients.
Recently, we had a situation where code was storing keys in redis without setting an expiry time, with the result that our keyspace started to grow: