我们希望节省一些资金,并在开发,测试,质量检查甚至生产之间共享我们的1GB专用Azure Redis缓存。
是否有比使用" Dev_ [key]"," Test_ [key]"等环境字符串为所有键添加前缀更好的方法。等
我们正在使用StackExchange Redis客户端进行.NET。
PS:我们尝试使用便宜的250GB(共享基础架构),但性能非常低。读操作在600-800ms之间是一致的......没有任何负载(对于~300KB对象)。升级到专用的1GB服务将其更改为30-40ms。点击此处:
StackExchange.Redis with Azure Redis is unusably slow or throws timeout errors
2 个答案:
答案 0 :(得分:1)
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.
答案 1 :(得分:0)
这是节省一些钱的另一个想法:为每个环境使用单独的Redis缓存机 - 所以没有问题,但是当你不使用它们时停止它们,比如在周末和夜晚。可能超过50%的时间你没有使用它们。我认为用一些PowerShell脚本启动和停止它们很容易,我们使用的是AWS,在这里它是可能的。
现在从我看到的Azure中的Redis持久性没有启用,但是他们开始使用它http://feedback.azure.com/forums/169382-cache/status/191763 - 在停止之前做一个RDB快照然后开始加载它会很不错。因此,如果您需要保存一些值并在启动时重新加载它们,您应该手动执行(使用您自己的服务)。