Package

com.redis

cluster

Permalink

package cluster

Visibility
  1. Public
  2. All

Type Members

  1. case class ClusterNode(nodename: String, host: String, port: Int, database: Int = 0, maxIdle: Int = 8, secret: Option[Any] = None, timeout: Int = 0) extends Product with Serializable

    Permalink

    a level of abstraction for each node decoupling it from the address.

    a level of abstraction for each node decoupling it from the address. A node is now identified by a name, so functions like replaceServer works seamlessly.

  2. case class HashRing[T](nodes: List[T], replicas: Int) extends Product with Serializable

    Permalink

    Consistent Hashing node ring abstraction.

  3. trait KeyTag extends AnyRef

    Permalink

    Consistent hashing distributes keys across multiple servers.

    Consistent hashing distributes keys across multiple servers. But there are situations like sorting or computing set intersections or operations like rpoplpush in redis that require all keys to be collocated on the same server.

    One of the techniques that redis encourages for such forced key locality is called key tagging. See <http://code.google.com/p/redis/wiki/FAQ> for reference.

    The trait KeyTag defines a method tag that takes a key and returns the part of the key on which we hash to determine the server on which it will be located. If it returns None then we hash on the whole key, otherwise we hash only on the returned part.

    redis-rb implements a regex based trick to achieve key-tagging. Here is the technique explained in redis FAQ: A key tag is a special pattern inside a key that, if preset, is the only part of the key hashed in order to select the server for this key. For example in order to hash the key "foo" I simply perform the CRC32 checksum of the whole string, but if this key has a pattern in the form of the characters {...} I only hash this substring. So for example for the key "foo{bared}" the key hashing code will simply perform the CRC32 of "bared". This way using key tags you can ensure that related keys will be stored on the same Redis instance just using the same key tag for all this keys. Redis-rb already implements key tags.

  4. abstract class RedisCluster extends RedisCommand

    Permalink
  5. abstract class RedisShards extends RedisCommand

    Permalink

Value Members

  1. object NoOpKeyTag extends KeyTag

    Permalink
  2. object RegexKeyTag extends KeyTag

    Permalink

Ungrouped