I use Redis to track valid JWTs by saving the JTI (uuid-v4) mapped to the users id in Redis.
If the JTI can not be found in Redis or the user id in Redis does not match the user id in the JWT the access is denied.
If the JWT has expired (after 30 min) the client sends a token refresh request to get a new token which applies the same rules as before and also checks if the token is more than one month old, removes the old token from Redis, saves the new token to Redis and sends a new token or denies the request.
I also use this setup to invalidate all tokens for a user if the user's password has been changed.
Is there another reason beside the dependency on Redis and memory usage not to use Redis to keep track of valid JWTs ?