cache替换算法代码
时间: 2023-08-11 18:03:29 浏览: 103
ReD_redcache_替换算法代码_
当涉及到缓存替换算法,常见的算法包括最近最少使用(Least Recently Used,LRU)、先进先出(First-In-First-Out,FIFO)和最不经常使用(Least Frequently Used,LFU)等。下面是一个简单的LRU缓存替换算法的代码示例:
```python
class LRUCache:
def __init__(self, capacity):
self.capacity = capacity
self.cache = {}
self.queue = []
def get(self, key):
if key in self.cache:
self.queue.remove(key) # 将键从队列中移除
self.queue.append(key) # 将键添加到队列末尾
return self.cache[key]
else:
return -1
def put(self, key, value):
if key in self.cache:
self.queue.remove(key) # 将键从队列中移除
elif len(self.cache) >= self.capacity:
# 如果缓存已满,则移除最久未使用的键
oldest_key = self.queue.pop(0)
del self.cache[oldest_key]
self.cache[key] = value
self.queue.append(key) # 将键添加到队列末尾
```
在这个示例中,LRUCache类实现了一个LRU缓存,其中capacity表示缓存的最大容量。cache是一个字典,用于存储键值对。queue是一个列表,用于按照访问顺序存储键,最近使用的键位于列表末尾。
get方法接收一个键作为参数,如果键存在于缓存中,则将其从队列中移除,并将其添加到队列末尾,然后返回对应的值。如果键不存在于缓存中,则返回-1。
put方法接收一个键和一个值作为参数。如果键已经存在于缓存中,则将其从队列中移除。如果缓存已满,则移除最久未使用的键(队列中的第一个键)。然后将新的键值对添加到缓存和队列中。
注意:这只是一个简单的示例,实际使用时,可能需要考虑线程安全性、性能优化等因素。
阅读全文