Python缓存cacheout的使用

        在开发过程中,有时候可能为了优化性能,需要进行一些一级缓存的处理,实际就是缓存到内存中。对于缓存到内存中,可以自己实现一个全局变量来实现,也可以使用一些三方的开源库实现,这里主要讲述使用cacheout来实现缓存。

        cacheout地址: https://github.com/dgilland/cacheout

        文档地址:https://cacheout.readthedocs.io

        特性:

        ①后端使用字典进行缓存

        ②使用缓存管理轻松访问多个缓存对象

        ③当使用模块级缓存对象,重构运行时的缓存设置

        ④最大缓存大小限制

        ⑤默认的缓存时间设置以及缓存项自定义存活时间

        ⑥批量的设置、获取、删除操作

        ⑦线程安全

        缓存机制:

        ①FIFO(先进先出)

        ②LIFO(后进先出)

        ③LRU (最近最少使用机制)

        ④MRU (最近最多使用机制)

        ⑤LFU (最小频率使用机制)

        ⑥RR (随机替换机制)

        首先安装:

pip install cacheout

        简单使用:

from cacheout import Cache

cache = Cache()

        默认的缓存(maxsize)大小为256,默认存活时间(ttl)是关闭的,属性设置如下:

cache = Cache(maxsize=256, ttl=0, timer=time.time, default=None)

        设置缓存:

key = 1
value = 'test'
cache.set(key, value)

        获取缓存:

key = 1
value = cache.get(key)

        获取不存在的缓存,返回None:

cache.set(1, 'test')

print(cache.get(2))

        设置存活时间:

cache.set(1, 'test', ttl=3)
print(cache.get(1))
time.sleep(3)
print(cache.get(1))

 

        删除缓存中的一个键值对:

cache.set(1, 'test')
cache.delete(1)

         清除全部缓存:

cache.clear()

        批量处理:

# 批量设置
cache.set_many({1: 'test1',2: 'test2',3: 'test3'})
# 批量获取
cache.get_many([1, 2, 3])
# 批量删除
cache.delete_many([1, 2, 3])

        迭代缓存数据:

cache.set_many({1: 'test1', 2: 'test2', 3: 'test3'})
for key, value in cache.items():
    print(str(key) + ':' + value)
for key in cache.keys():
    print(key)
for value in cache.values():
    print(value)

        cacheout能够对cache进行统一管理:

# 对cache进行统一管理
class CacheManagerConfig:
    cacheman = CacheManager({
        'cache1': {"maxsize": 5120, 'ttl': 0},
        'cache2': {"maxsize": 5120, 'ttl': 0}
    })

# cache工具类
class CacheUtils:
    @staticmethod
    def set_cache(cache, key, value):
        cache.set(key, value)

    @staticmethod
    def get_cache(cache, key):
        value = cache.get(key)
        return value

    @staticmethod
    def delete_cache(cache, key):
        cache.delete(key)

    @staticmethod
    def clear_cache(cache):
        cache.clear()

    @staticmethod
    def has_key(cache, key):
        return cache.has(key)

# cache测试
class CacheJob:
    def cache_test():
        cache = CacheManagerConfig.cacheman['cache1']
        key = 1
        value = 'test'
        CacheUtils.set_cache(cache, key, value)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值