interface Redis_Path_HashLookupInterface in Redis 7.2
Same name and namespace in other branches
- 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
- interface \Redis_Path_HashLookupInterface
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
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Redis_Path_HashLookupInterface:: |
public | function | Alias is being deleted for the given source | 3 |
Redis_Path_HashLookupInterface:: |
public | function | A language is being deleted | 3 |
Redis_Path_HashLookupInterface:: |
constant | Alias HASH key prefix | ||
Redis_Path_HashLookupInterface:: |
constant | Source HASH key prefix | ||
Redis_Path_HashLookupInterface:: |
public | function | Lookup any alias for the given source | 3 |
Redis_Path_HashLookupInterface:: |
public | function | Lookup any source for the given alias | 3 |
Redis_Path_HashLookupInterface:: |
public | function | Alias is being inserted with the given source | 3 |
Redis_Path_HashLookupInterface:: |
constant | Null value (not existing yet cached value) | ||
Redis_Path_HashLookupInterface:: |
constant | Values separator for hash values |