A data local persistence framework library
Project description
cushy-storage
一个基于磁盘缓存的Python框架
简介
cushy-storage是一个基于磁盘缓存的Python库,可以将Python对象序列化后缓存到磁盘中,以便下次使用时直接读取,从而提高程序的执行效率。另一方面, cushy-storage让你无需花费精力在如何制订一套数据存储规范上,字典般的操作可以减少很多开发的成本。
特性
- 可以方便地将数据(基本数据类型、自定义数据类型)进行本地磁盘存储
- 免去了直接操作文件的工作
- 像操作dict一样读写,十分方便
- 提供序列化操作
- 提供多种数据压缩方式
安装
pip install cushy-storage --upgrade
快速上手
cushy-storage
的使用主要分为三个类,BaseDict
CushyDict
disk_cache
,其中CushyDict
是BaseDict
的增强版,可以实现
BaseDict
的所有功能,还增加了相应序列化操作,因此推荐直接使用CushyDict
来操作保存数据。
BaseDict类
BaseDict类是CushyDict类的基础实现,其只支持简单的二进制数据存储。
from cushy_storage import BaseDict
# 初始化cache,保存在./data文件夹下
cache = BaseDict('./data')
# Base Dict只能存储二进制数据,可以用于流式传输
cache['key'] = b'value'
value = cache['key']
print(value)
CushyDict类
CushyDict类是BaseDict库的高级实现,你可以像操作字典一样操作CushyDict;其增加了对值进行序列化和反序列化的功能,可以存储任意类型的数据。 此外,CushyDict支持多种序列化算法 (pickle和json)和压缩算法(zlib和lzma),可以根据需要选择不同的算法进行数据压缩和序列化,下面是 一些简单的使用教程。
- 存储Python基本数据类型
from cushy_storage import CushyDict
# 初始化cache,保存在./data文件夹下
cache = CushyDict('./data')
cache['key'] = {'value': 42}
print(cache['key'])
cache['a'] = 1
print(cache['a'])
cache['b'] = "hello world"
print(cache['b'])
cache['arr'] = [1, 2, 3, 4, 5]
print(cache['arr'])
以
cache['arr'] = [1, 2, 3, 4, 5]
为例,在指令这段代码之后,CushyDict会将数据存储到指令文件夹下。
- 生成结果
- 存储自定义数据类型
from cushy_storage import CushyDict
class User:
def __init__(self, name, age):
self.name = name
self.age = age
def main():
cache = CushyDict(serialize='pickle')
user = User("Jack", 18)
cache['user'] = user
user = cache['user']
print(type(user))
print(cache['user'].name)
print(cache['user'].age)
if __name__ == '__main__':
main()
需要说明的是,如果你有定义复杂数据的需求,如List里面存json;或者你没有去文件下看原数据的需求,则推荐使用pickle的方式来进行数据存储。
- 如果在初始化的时候不传入参数,则默认保存在
./cache
文件夹下
from cushy_storage import CushyDict
cache = CushyDict()
- 判断key是否存在(和字典操作同理)
from cushy_storage import CushyDict
cache = CushyDict()
if 'key' in cache:
print("key exist")
else:
print("key not exist")
disk_cache装饰器
disk_cache装饰器可以将函数的输出结果缓存到磁盘中,以便下次使用时直接读取。通过该装饰器,可以在不改变原有代码逻辑的情况下,大幅度提高程序的执行效率。
from cushy_storage import disk_cache
@disk_cache('./data')
def my_func():
return {'value': 42}
result = my_func()
待办
- 提供单例模式解决方案,提供更加方便的工具类
- 支持更多的压缩和序列化算法,以满足不同类型数据的需求
- 提供更加友好的错误处理机制,让用户更容易发现和解决问题
- 改进缓存管理策略,确保缓存数据的可靠性和一致性
- 提供更加丰富的测试用例,并定期进行性能测试和升级
- 支持分布式缓存,可以在多台机器上共享缓存数据
- 增加缓存过期功能,可以自动删除长时间未使用的缓存数据
- 改善文档结构和代码注释,方便用户理解和使用库
- 支持Python3中的异步IO,提高程序的并发性和性能
- 增加基于内存的缓存组件,可以更加灵活地选择缓存存储方式
- 支持更多数据格式的持久化方式,如json,xml的直接存储
- 提供ORM框架,封装对象级的CRUD操作
鸣谢
本项目基于https://github.com/RimoChan/rimo_storage 进行二次开发改进,感谢RimoChan 大佬。
This project is based on https://github.com/RimoChan/rimo_storage for secondary development and improvement. Thanks to RimoChan for his great work.
贡献
如果你想为这个项目做贡献,你可以提交pr或issue。我很高兴看到更多的人参与并优化它。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cushy_storage-1.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 169a79f1e70f0a0f6d6d5a24f4366b12f09fe061d16d20b1de7511af8390893c |
|
MD5 | dae40d84b70377d239430bd24e2327ba |
|
BLAKE2b-256 | 3e2eb3f512c8e215293fb4fb78de6c9ad70d9817b6d77e245d6ef0a0fc996200 |