Thomas Jespersen
Thomas Jespersen

Reputation: 11783

How to share Azure Redis Cache between environments?

We want to save a few bucks and share our 1GB dedicated Azure Redis Cache between Development, Test, QA and maybe even production.

Is there a better way than prefixing all keys with an environment string like "Dev_[key]", "Test_[key]" etc.

We are using the StackExchange Redis client for .NET.

PS: We tried using the cheap 250GB (Shared infrastructure), but had very slow performance. Read operations were consistent between 600-800ms... without any load (for a ~300KB object). Upgrading to dedicated 1GB services changed that to 30-40ms. See more here: StackExchange.Redis with Azure Redis is unusably slow or throws timeout errors

Upvotes: 4

Views: 1917

Answers (2)

Liviu Costea
Liviu Costea

Reputation: 3774

Here is another idea to save some bucks: use separate Redis cache machines for each environment - so no problems with the keys, but stop them when you don't use them, like in the weekend and during nights. Probably more than 50% of the time you are not using them. I think it would be easy to start and stop them with some PowerShell script, we are using AWS and here it is possible.

Now from what I see the Redis persistence in Azure is not enabled, but they started working on it http://feedback.azure.com/forums/169382-cache/status/191763 - it would be nice to do a RDB snapshot before stopping and then on start to load it. So if you need to save some values and reload them on start you should do it manually (with your own service).

Upvotes: 0

Sunil D.
Sunil D.

Reputation: 18193

One approach is to use multiple Redis databases. I'm assuming this is available in your environment :)

Some advantages over prefixing your keys might be:

  • data is kept separate, you can flushdb in test and not touch the production data
  • keys are smaller and consume less memory

The main disadvantage would be not taking advantage of multiple cores, like you could do if you ran multiple instances of Redis on the same server. Obviously not an issue in this case. Also note that this feature is not deprecated, like one of the answers suggests.

Another thing I've seen people complain about is that databases are numbered, they don't have meaningful names. Some people create a hash in database 0 that maps each number to a name.

Upvotes: 1

Related Questions