Azure: Redis vs. Table Storage for Web Cache


We currently use Redis as our persistent cache for our web application but with it's limited memory and cost I'm starting to consider whether Table storage is a viable option.

The data we store is fairly basic json data with a clear 2 part key which we'd use for the partition and row key in table storage so I'm hoping that would mean fast querying.

I appreciate one is in memory and one is out so table storage will be a bit slower but as we scale I believe there is only one CPU serving data from a Redis cache whereas with Table storage we wouldn't have that issue as it would be down to the number of web servers we have running.

Does anyone have any experience of using Table storage in this way or comparisons between the 2.

I should add we use Redis in a very minimalist way get/set and nothing more, we evict our own data and failing that leave the eviction to Redis when it runs out of space.

This is a fairly broad/opinion-soliciting question. But from an objective perspective, these are the attributes you'll want to consider when deciding which to use:

  • Table Storage is a durable, key/value store. As such, content doesn't expire. You'll be responsible for clearing out data.
  • Table Storage scales to 500TB.
  • Redis is scalable horizontally across multiple nodes (or, scalable via Redis Service). In contrast, Table Storage will provide up to 2,000 transactions / sec on a partition, 20,000 transactions / sec across the storage account, and to scale beyond, you'd need to utilize multiple storage accounts.
  • Table Storage will have a significantly lower cost footprint than a VM or Redis service.
  • Redis provides features beyond Azure Storage tables (such as pub/sub, content eviction, etc).
  • Both Table Storage and Redis Cache are accessible via an endpoint, with many language-specific SDK wrappers around the API's.