Localcache

1 常用方法

1.1 Index

1.1.1 使用

from conf import config
from xlib import diskcache as _dc
from xlib.util import time_util
addr_list_a = _dc.Index("{data_dir}/addr_list_a".format(data_dir=config.LOCALDATA_DIR))

addr_list_a['127.0.0.1:8585'] = time_util.get_current_time()
addr_list_a['127.0.0.2:8585'] = time_util.get_current_time()
for item in addr_list_a:
    print "key={key} value={value}".format(key=item, value=addr_list_a[item])

# pop
print "--------------------------------pop"
addr_list_a.pop('127.0.0.2:8585')
for item in addr_list_a:
    print "key={key} value={value}".format(key=item, value=addr_list_a[item])

1.1.2 例子:服务启动时将 slot key 加载到本地存储中

1.2 kv

这里的 value 可以是 list 也可以是 dict

1.3 lock

acquire() 是同步的,即若加锁失败,会一直处于等待中,默认会 block,可以指定 block=False 为非阻塞

is_acquire = acquire(block=False) // 返回 True or False

2 实践

2.1 装饰器

2.2 普通方式缓存结果

场景:

  • (1) 通过 req 指定了 idc,需要根据 idc 手动生成 key 名

  • (2) 仅缓存成功的结果

3 传送门

DiskCache Tutorial

Last updated