Solution 1:

What you're describing here is a solution where you can just keep the latest RT used by the user in the database and allow only refresh requests with the RT saved in the DB. This is a valid approach but it has one drawback: you can have only one active pair of AT/RT for the user. If that is OK for you then you can go with this solution.

wasting time and memory storing the list and querying in the database

Either way you will have to query the database, so that doesn't change much. What you gain is a bit of storage space.