Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

(To note, I have limited experience with using Redis. My questions may be stupid.)

As far as I can tell, most of the advantages of Redis come from the fact that it's all held in memory and so access is fast. Is networked access to other parts of the cluster quick enough that it is quicker than storing the data on one computer, partly on disk? When would one want to use a Redis cluster rather than something stored on-disk and cached in memory?



The performance section of the spec[1] does a pretty good job explaining how the implementation remains fast.

    In Redis Cluster nodes don't proxy commands to the right
    node in charge for a given key, but instead they redirect
    clients to the right nodes serving a given portion of the
    key space.

    Eventually clients obtain an up to date representation 
    of the cluster and which node serves which subset of 
    keys, so during normal operations clients directly 
    contact the right nodes in order to send a given command.

    Because of the use of asynchronous replication, nodes 
    does not wait for other nodes acknowledgment of writes 
    (if not explicitly requested using the WAIT command).
[1] http://redis.io/topics/cluster-spec#performance


The primary advantage of Redis is native data types and access patterns beyond simple key-values: lists, sets, sorted sets, hash tables, pub/sub, hyperloglog, and scripting (lua) support.

Being memory-based was simply a feature but not necessarily something that set it apart: Memcached had that area pretty well locked down for being a blazing fast key-value store. And then Membase was basically memcached + persistence and clustering. Now Redis has clustering too!


seconded. memory = fast is not the point. the point is that it gives you specific data types that do specific things and since it's in memory it does those things very quickly. that said, you need to implement your own clustering or sharing solution. jury is still out on the new cluster code, i havent reviewed it yet.


As well as the optimisations mentioned by famousactress, note that it's common to run Redis (or other in-memory databases such as memcached) on a separate server anyway. So there's already some network overhead but it tends to be small enough if the content is small and everything's co-located.


Right, but I assume the commenter was more curious about the presumed multiple-network-accesses usually involved with a cluster which proxies to some other node to satisfy requests would do to the overall performance of the system... which is a totally reasonable question/concern.




Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: