在PHP中实现LRU(最近最少使用)缓存算法是一个常见的任务,尤其是在需要快速访问大量数据时。以下是一个简单的PHP实例,展示了如何实现一个基于LRU策略的缓存系统。
实例描述
在这个例子中,我们将创建一个简单的LRU缓存类,该类将存储固定数量的元素,并且当超出这个数量时,将移除最长时间未被访问的元素。
代码实现
```php
class LRUcache {
private $capacity;
private $cache;
public function __construct($capacity) {
$this->capacity = $capacity;
$this->cache = [];
}
public function get($key) {
if (!isset($this->cache[$key])) {
return null;
}
// 将访问过的元素移动到数组的末尾
$value = array_shift($this->cache[$key]);
$this->cache[$key] = [$value];
return $value;
}
public function put($key, $value) {
if (!isset($this->cache[$key])) {
if (count($this->cache) >= $this->capacity) {
// 删除最老的键值对
$this->removeOldest();
}
$this->cache[$key] = [$value];
} else {
// 如果键存在,更新值并将元素移动到数组末尾
array_unshift($this->cache[$key], $value);
}
}
private function removeOldest() {
reset($this->cache);
$oldestKey = key($this->cache);
unset($this->cache[$oldestKey]);
}
}
// 使用示例
$cache = new LRUCache(3);
$cache->put("