1. Go to this page and download the library: Download noizu-labs/fragmented-keys library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
noizu-labs / fragmented-keys example snippets
use NoizuLabs\FragmentedKeys\Key\StandardKey;
use NoizuLabs\FragmentedKeys\Tag\StandardTag;
$globalGreetingTag = new StandardTag("Global.Greeting", "global");
$userUserNameTag = new StandardTag("User.Username", $userId);
$keyObj = new StandardKey(
"CacheDataThatInvalidatesWhenUserNamesAreChanged",
[$userUserNameTag, $globalGreetingTag],
);
$cacheKey = $keyObj->getKeyStr();
$userUserNameTag = new StandardTag("User.Username", $userId);
$userUserNameTag->increment();
$globalGreetingTag->increment();
use NoizuLabs\FragmentedKeys\CacheHandler\APCuHandler;
use NoizuLabs\FragmentedKeys\CacheHandler\MemcachedHandler;
use NoizuLabs\FragmentedKeys\Configuration;
use NoizuLabs\FragmentedKeys\Tag\StandardTag;
$m = new \Memcached();
Configuration::setDefaultCacheHandler(new MemcachedHandler($m));
Configuration::setGlobalPrefix("MyApp");
// you may override the handler per tag by calling
$tag->setCacheHandler($alternativeHandler);
// or by passing a handler to the constructor.
$tag = new StandardTag("Users", "1234", null, new APCuHandler());
use NoizuLabs\FragmentedKeys\CacheHandler\APCuHandler;
use NoizuLabs\FragmentedKeys\CacheHandler\MemcachedHandler;
use NoizuLabs\FragmentedKeys\CacheHandler\MemoryHandler;
use NoizuLabs\FragmentedKeys\CacheHandler\RedisHandler;
$apcuHandler = new APCuHandler();
$inMemoryHandler = new MemoryHandler();
$memcachedHandler = new MemcachedHandler(new \Memcached());
$redisHandler = new RedisHandler(new \Redis());
use NoizuLabs\FragmentedKeys\CacheHandler\MemcachedHandler;
use NoizuLabs\FragmentedKeys\CacheHandler\MemoryHandler;
use NoizuLabs\FragmentedKeys\Key\StandardKey;
use NoizuLabs\FragmentedKeys\KeyRing;
use NoizuLabs\FragmentedKeys\Tag\ConstantTag;
use NoizuLabs\FragmentedKeys\Tag\StandardTag;
//=================================================
// Config stuff you only need to do this once
//=================================================
/* Somewhere in your bootstrap or wherever you instantiate a KeyRing or KeyRing-derived class */
$cacheHandlers = [
'memcache' => new MemcachedHandler($this->container['memcache']),
'memory' => new MemoryHandler(),
];
$globalOptions = [
'type' => 'standard',
];
$tagOptions = [
'universe' => ['type' => 'constant', 'version' => 5],
];
$ring = new KeyRing($globalOptions, $tagOptions, 'memcache', $cacheHandlers);
/* define your keys */
$ring->defineKey("Users", ['universe', ['tag' => 'planet', 'cache_handler' => 'memory', 'version' => null, 'type' => 'standard'], 'city']);
//==============================================
// Need to check for some cached data? Generating your key now takes one line instead of 5;
//===============================================
$userKey = $ring->getUsersKeyObj('MilkyWay', 'Earth', 'Chicago')->getKeyStr();
$users = $memcache->get($userKey);
if (!$users) {
$users = query("select * from users where universe='MilkyWay' AND planet='Earth' AND city='Chicago'");
$memcache->set($userKey, $users);
}
/* Invalidate them */
$universeTag = new StandardTag('universe', 'MilkyWay');
$universeTag->increment();
//===============================
// Manual (no KeyRing) equivalent
//===============================
$universeTag = new ConstantTag("universe", "MilkyWay", 5);
$worldTag = new StandardTag("planet", "Earth");
$cityTag = new StandardTag("city", "Chicago", null, new MemoryHandler());
$key = new StandardKey("Users", [$universeTag, $worldTag, $cityTag]);
$userKey = $key->getKeyStr();
$users = $memcache->get($userKey);
if (!$users) {
$users = query("select * from users where universe='MilkyWay' AND planet='Earth' AND city='Chicago'");
$memcache->set($userKey, $users);
}
/* Invalidate them */
$universeTag->increment();
use NoizuLabs\FragmentedKeys\KeyInterface;
use NoizuLabs\FragmentedKeys\KeyRing;
class MyGames extends KeyRing
{
public function getGameDescriptionKeyObj(string $gameId): KeyInterface
{
/* Define Key in the usual manner */
/* . . . */
$gameSiteId = $this->pimpleContainer['gameSite'];
$userId = $this->getUserId();
return $this->getKeyObj("GameDescription", [$gameId, $gameSiteId, $userId]);
}
}
// Now your cache code looks simple
$gameDescCacheKey = $ring->getGameDescriptionKeyObj($gameId)->getKeyStr();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.