It isn't the data which often matters in a caching scenario but the *availability* of that data and the load you are avoiding by using the cache. If the load is low enough that tossing your cache entirely is a reasonable option, I'd question the need for the cache in the first place. If you know or expect that such load will require the use of a cache, you should realize that the loss of the cache will mean a cascading failure is highly likely to occur. When that happens you will wish you had replication. ;)
Frankly if you truly have no concern for backend servers (perhaps you are only caching transient generated data), and don't care for replication, your complexity level is severely lowered by using a client library which does the sharding and simply throwing redis instances at it. Alternatively, you can use twemproxy which essentially does that for you and doesn't need replication, redis cluster, or hobbled variants of Redis Cluster.
Cheers,
Bill
Good point about resources overloading Baldguy. Perhaps a few more details would explain better what I'm after.Our use case is a fast cache not a data store. Performance is the first priority, data availability is coming next.Currently, we use 30+ standalone Redis servers and our clients do sharding using consistent hashing. No proxies to avoid extra network hop. In case of a single host failure we loose 1/30th of the cached data. Overall, the load is evenly spread, no major spikes.
I started looking at the Redis Cluster as an alternative to our existing deployment to introduce replication for data consistency.
There are 2 concerns I have:1. Performance - haven't tested it myself yet but found some people report noticeable throughput/latency degradation comparing to a single instance. I get this as a compromise between consistency and performance and I hoped to get the Redis cluster running for now without replication to get cluster performance on par with standalone instances.
2. The whole cluster is unresponsive during failovers (not just affected master/slave pair) - this may be a showstopper for us. I tested a cluster with 3 masters and 3 slaves on a single host with continuous set/get operations of a single cluster client. I see thousands of operations fail during the time failover is taking place after killing a master even though the 2/3 of keys in this test case are routed to the other 2 masters. This is what will cause a spike on other resources you brought up and may cause a lot of grief during high load.
Any suggestions?
--On Mon, Aug 17, 2015 at 10:33 PM, The Baldguy <ucn...@gmail.com> wrote:I've worked with many who *used* to think that way. To say that you don't care about data in a cache is to apply a minor case to a general one. Take, for example, using it as a cache to ease load on a database, such as an SQL one. When you get to the point the cache truly matters and suddenly you have no data in your cache you can easily watch your SQL servers fall over because they can't handle the load you used the cache for. This has, and continues, to take out major sites. I've also seen this behavior in the "oh we have issues, just flush the cache" mindset which produces the same problem for the same reasons. The cache gets cold and the backend databases overheat.
It isn't the data which often matters in a caching scenario but the *availability* of that data and the load you are avoiding by using the cache. If the load is low enough that tossing your cache entirely is a reasonable option, I'd question the need for the cache in the first place. If you know or expect that such load will require the use of a cache, you should realize that the loss of the cache will mean a cascading failure is highly likely to occur. When that happens you will wish you had replication. ;)
Frankly if you truly have no concern for backend servers (perhaps you are only caching transient generated data), and don't care for replication, your complexity level is severely lowered by using a client library which does the sharding and simply throwing redis instances at it. Alternatively, you can use twemproxy which essentially does that for you and doesn't need replication, redis cluster, or hobbled variants of Redis Cluster.
Cheers,
Bill
--
You received this message because you are subscribed to the Google Groups "Redis DB" group.
To unsubscribe from this group and stop receiving emails from it, send an email to redis-db+u...@googlegroups.com.
To post to this group, send email to redi...@googlegroups.com.
Visit this group at http://groups.google.com/group/redis-db.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to a topic in the Google Groups "Redis DB" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/redis-db/kzY-0U2Abvs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to redis-db+u...@googlegroups.com.