You are comparing the high-level ZooKeeper data model with other key value stores, but this is not what makes it unique. From the point of view of distributed systems, ZooKeeper differs from many other key value stores (especially Redis) because it is highly consistent and can fail, while most of the cluster is connected. In addition, while the data is stored in memory, it is synchronously replicated to most clusters and supported on disk, so after a successful recording, it ensures that the recording will not be lost (missile strike ban). This makes ZooKeeper very useful for storing small amounts of critical states, such as configurations.
Conversely, Redis is not a distributed system and does not provide the same guarantees as ZooKeeper, and many other key value stores that are distributed are ultimately consistent. In other words, there is no guarantee that after a value is written, all other processes in the distributed system can see that value.
Finally, in addition to a file system, such as an interface for storing state, ZooKeeper provides fairly low-level functions on which more complex problems can be solved. Examples of this look at Apache Curator. The curator uses the ZooKeeper ephemeral nodes (nodes that disappear when the client who created them disconnects) to create things like locks and leader choices that are extremely useful for coordinating distributed systems. Thus, from this point of view, the ZooKeeper data model and related functions serve as primitives on which higher-level tools for distributed coordination can be created.
kuujo source share