You are here

interface Redis_Path_HashLookupInterface in Redis 7.2

Same name and namespace in other branches
  1. 7.3 lib/Redis/Path/HashLookupInterface.php \Redis_Path_HashLookupInterface

Very fast hash based lookup interface.

This will work for any key-value store whether it's APC, Redis, memcache... Rationale behind this is that Drupal calls hundreds of time per request the drupal_lookup_path() function and we need it to be very fast. The key of success to keep it stupid simple and coherent as the same time is that we consider this backend as a cache (more or less permanent) that might be cleared at any time, and synchronized as when necessary or incrementally. This should be very fast.

Redis implementation will be the following:

Aliases are stored into a Redis HASH and are stored per language basis. Key is: [SITEPREFIX:]path:dst:LANGUAGE Keys inside the hash are a MD5() of the source and values are the alias

Sources are also stored the same way except the HASH key is the following: [SITEPREFIX:]path:src:LANGUAGE Keys inside the hash are a MD5() of the alias and values are the sources.

In both case values are a comma separated list of string values.

The MD5() should give us low collision algorithm and we'll keep it until no one experiences any problem.

Alias and sources are always looked up using the language, hence the different keys for different languages.

Hierarchy

Expanded class hierarchy of Redis_Path_HashLookupInterface

All classes that implement Redis_Path_HashLookupInterface

File

lib/Redis/Path/HashLookupInterface.php, line 33

View source
interface Redis_Path_HashLookupInterface {

  /**
   * Alias HASH key prefix
   */
  const KEY_ALIAS = 'path:a';

  /**
   * Source HASH key prefix
   */
  const KEY_SOURCE = 'path:s';

  /**
   * Null value (not existing yet cached value)
   */
  const VALUE_NULL = '!';

  /**
   * Values separator for hash values
   */
  const VALUE_SEPARATOR = '#';

  /**
   * Alias is being inserted with the given source
   *
   * @param string $source
   * @param string $alias
   * @param string $language
   */
  public function saveAlias($source, $alias, $language = null);

  /**
   * Alias is being deleted for the given source
   *
   * @param string $source
   * @param string $alias
   * @param string $language
   */
  public function deleteAlias($source, $alias, $language = null);

  /**
   * A language is being deleted
   *
   * @param string $language
   */
  public function deleteLanguage($language);

  /**
   * Lookup any alias for the given source
   *
   * First that has been inserted wins over the others
   *
   * @param string $source
   * @param string $language
   *
   * @return string|null|false
   *   - The string value if found
   *   - null if not found
   *   - false if set as non existing
   */
  public function lookupAlias($source, $language = null);

  /**
   * Lookup any source for the given alias
   *
   * First that has been inserted wins over the others
   *
   * @param string $alias
   * @param string $language
   *
   * @return string|null|false
   *   - The string value if found
   *   - null if not found
   *   - false if set as non existing
   */
  public function lookupSource($alias, $language = null);

}

Members

Namesort descending Modifiers Type Description Overrides
Redis_Path_HashLookupInterface::deleteAlias public function Alias is being deleted for the given source 3
Redis_Path_HashLookupInterface::deleteLanguage public function A language is being deleted 3
Redis_Path_HashLookupInterface::KEY_ALIAS constant Alias HASH key prefix
Redis_Path_HashLookupInterface::KEY_SOURCE constant Source HASH key prefix
Redis_Path_HashLookupInterface::lookupAlias public function Lookup any alias for the given source 3
Redis_Path_HashLookupInterface::lookupSource public function Lookup any source for the given alias 3
Redis_Path_HashLookupInterface::saveAlias public function Alias is being inserted with the given source 3
Redis_Path_HashLookupInterface::VALUE_NULL constant Null value (not existing yet cached value)
Redis_Path_HashLookupInterface::VALUE_SEPARATOR constant Values separator for hash values