qmegas/memcache-search

用于搜索memcache键的PHP库

0.1.3 2023-07-18 11:30 UTC

This package is not auto-updated.

Last update: 2024-09-24 16:58:53 UTC


README

PHP库,允许在memcache中搜索键。它使用lru_crawler非阻塞机制在memcache键之间迭代。此库不需要安装memcache扩展

为什么它比其他解决方案更好?

  1. 标准的Memcached扩展具有getAllKeys函数,该函数基于memcached_dump函数,这并不能保证导出所有键。此外,据报道,从memcache 1.4.23开始,此函数不再工作。
  2. 标准的Memcache扩展没有此类功能,并且有不同的 解决方案,这些解决方案基于stats cachedump,这会对memcache服务器性能产生影响,并且同样不能保证导出所有键。

安装

composer require qmegas/memcache-search

要求

  • PHP >= 7.1
  • Memcache服务器应在类Unix系统上运行,且版本应>= 1.4.24

使用示例

<?php

$search = new \Qmegas\MemcacheSearch();
$search->addServer('127.0.0.1', 11211);

//Inline search in key name
$find = new \Qmegas\Finder\Inline('test');
foreach ($search->search($find) as $item) {
	echo "Key: {$item->getKey()} expires ".($item->getExpiration() === -1 ? 'NEVER' : 'on '.date('d/m/Y H:m:i', $item->getExpiration()))."\n";
}

//Inline search in key name - method 2
foreach ($search->search('test') as $item) {
	...
}

//Searching for non expiring items
$find = new \Qmegas\Finder\ExpiresNever();
foreach ($search->search($find) as $item) {
	...
}

//Searching in name by using regular expression
$find = new \Qmegas\Finder\RegExp('/Test([0-9]*)/i');
foreach ($search->search($find) as $item) {
	...
}

//Custom search logic
foreach ($search->search(function(\Qmegas\MemcacheItem $item): bool {
	//Your logic is here
}) as $item) {
	...
}

许可

该库是开源软件,许可协议为MIT协议