Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I use Redis for LRU caching with Postgresql?

I'm new to Redis and wondering how to use Redis and PostgreSql together — specifically using Redis just for LRU caching in Postgres.

Is there any special configuration for connecting Redis to Postgres?

Then if I want to store data, should I store it in Postgres db? If so, what does Redis do?

Thanks.

like image 343
cma Avatar asked Oct 22 '25 08:10

cma


2 Answers

I think you misunderstand what memory stores like Redis or memcached can do for you.

They are not connected to PostgreSQL or any other RDBMS. It is the job of your application to write the data in both stores: the permanent store (PostgreSQL in your case) and the transient one (Redis).

Redis and memcached do not offer many connectivity features. For caching, they have a rather simple and unobtrusive behavior. The smart part to manage the cache is on application side, and it is your job to define it.

You can imagine several strategies:

  • each time you write in the RDBMS, you write in the cache. Each time you need to read the data, read first in the cache. If nothing is found, read from the RDBMS and write it back to the cache.

  • each time you write in the RDBMS, you just invalidate the data in the cache (delete it). Each time you need to read the data, read first in the cache. If nothing is found, read from the RDBMS and write it back to the cache.

The tricky part is to clearly define a policy regarding the consistency of the data (between the RDBMS and the cache).

like image 186
Didier Spezia Avatar answered Oct 24 '25 22:10

Didier Spezia


You can use Redis as LRU cache - I am assuming that you are using Redis for in-memory operations only and PostgreSQL as your persistent datastore. The following URL sheds more light on using Redis as LRU cache:

http://redis.io/topics/lru-cache

You will need to write to both Redis and PostgreSQL (Redis will not write to PostgreSQL). It would be a good idea to briefly test and compare results against other options such as Memcached to figure out the best approach for your use case.

Also, the LRU cache implementation in Redis is different between v2.6 and v2.8 (not sure if the 2.8 changes were backported to v2.6 or not).

In case you are not familiar, you can persist data onto the disk vai Redis as well though you should be aware of memory limitations of using Redis as your sole data store (and impact on Redis for disk persistence).

like image 40
ali haider Avatar answered Oct 24 '25 23:10

ali haider



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!