Sunday, 16 October 2016

Memcached and other caching

Here are a few notes about some of the technologies you have mentioned above.

Memcached:

Memcached is only a caching system and will not provide you with any data persistence. If you choose to use memcached then you will need to choose some other type of persistent store to keep all of you data. Memcached is also a very simple caching system and does not provide you with replication, but their are different project (like repcache) that have added features like this to memcached. I would only use memcached if I wanted to use a relational database as my persistence layer.

Redis:

Redis is a data structure server and should only be used for that purpose. The downside to Redis is that you can only run it on a single server and if you want to have multiple servers of Redis then you need to do application sharding. Most of the deployments of Redis I have seen are along side another database technology.

Couchbase:

Couchbase 2.0 will will turn the product into a document database. The product has memcached technology inside it so you get memcached out of the box which means sub-millisecond latencies. On top of this you get replication, cross data center replication and querying support. Also, note that most Couchbase SDK's don't use moxi and that the Python SDK is still in beta.
One thing that might be useful for you to do is to check out the YCSB benchmarking project along with some of the results that have already been published. This project will allow you to get a good idea of how these and other databases perform under load. Then once you find some you like you can look through their feature list and figure out with product has the features that best fits the application your developing.
Also, if any of my information about the databases above is incorrect please let me know. These projects are evolving quickly and sometimes it's hard to keep up.
EDIT: I should also mention that Couchbase is the only databases out of the ones listed that provide replication, sharding, and low latency. I imagine redis will allow you to have a replica server and therefore replication, but any sharding you do will have to be done at the application layer

No comments:

Post a Comment