使用多个密钥的LRU缓存?

时间:2019-06-21 23:25:52

标签: python

所以,我有如下代码:

cache = {}

def fetch_data(keys):
     vals_in_cache, keys_to_fetch = check_cache(keys)
     new_vals = fetch_data_from_api(keys_to_fetch)
     update_cache(new_vals) # add these k,v in cache
     # new_vals = {key:val ..} dict
     all_vals = vals_in_cache.update(keys_to_fetch)
     return all_vals

def check_cache(keys):
     vals_in_cache, to_fetch = {}, []
     for key in keys:
          if key in cache:
              vals_in_cache[key] = cache[key]
          else:
             to_fetch.append(key)
    return vals_in_cache, to_fetch

很显然,这是一个哑缓存。 我想使用LRU缓存或更合适的方法。 但是,我的问题是fetch_data_from_api调用接受list作为参数,并且由于该调用是通过网络进行的。因此最好一次性获得所有值,而不是多次调用api ... 另外,这种方法每次都很慢...我必须遍历键..以弄清缓存中的内容和要获取的内容

我想要的是。一种快速的方法来检查多个键并在高速缓存中获取其值..然后将高速缓存中不可用的内容分离出来,以便我可以调用以获取数据? 然后还更新缓存...

0 个答案:

没有答案