# Mo-Cache
![PyPI](https://img.shields.io/pypi/v/mo-cache.svg)
![PyPI - Downloads](https://img.shields.io/pypi/dm/mo-cache)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mo-cache)
![PyPI - License](https://img.shields.io/pypi/l/mo-cache)
a simple cache lib support memory、file、redis
Github: https://github.com/mouday/mo-cache
## install
```bash
pip install mo-cache
```
## demo
快速开始
```python
from mo_cache import MemoryCache
cache = MemoryCache()
# 此时的key默认是函数名 foo
@cache
def foo(a, b):
return a + b
if __name__ == '__main__':
foo()
```
## 更多示例
1、使用装饰器
```python
# 主动设置key, 过期时间单位:秒s
@cache(key='custom_key', expire=30)
def foo(a, b):
return a + b
```
2、主动设置和获取
```python
cache.set(key='custom_key', value='value', expire=30)
value = cache.get(key='custom_key')
```
MemoryCache, FileCache, RedisCache实现了共同的接口(set/get/call),
只是构造参数稍有不同
```python
from mo_cache import MemoryCache, FileCache, RedisCache
memory_cache = MemoryCache()
file_cache = FileCache(cache_dir='cache')
redis_cache = RedisCache(redis_url='redis://localhost:6379/0')
```
## 继承体系
```python
class CacheAbstract(object):
"""统一的接口"""
def set(self, key, value, expire=-1):
pass
def get(self, key):
pass
class CacheDecorator(CacheAbstract):
"""cache 装饰器"""
def __call__(self, key=None, expire=-1):
pass
class MemoryCache(CacheDecorator):
"""内存缓存"""
class FileCache(CacheDecorator):
"""文件缓存"""
class RedisCache(CacheDecorator):
"""Redis 缓存"""
```
Raw data
{
"_id": null,
"home_page": "https://github.com/mouday/mo-cache",
"name": "mo-cache",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "cache",
"author": "Peng Shiyu",
"author_email": "pengshiyuyx@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/b7/20/f9a90499a89827cf892f47e175d57494ed83987ab3c5d242b473d85eeffc/mo-cache-0.0.8.tar.gz",
"platform": "",
"description": "# Mo-Cache\n\n![PyPI](https://img.shields.io/pypi/v/mo-cache.svg)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/mo-cache)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mo-cache)\n![PyPI - License](https://img.shields.io/pypi/l/mo-cache)\n\n\na simple cache lib support memory\u3001file\u3001redis\n\nGithub: https://github.com/mouday/mo-cache\n\n## install\n\n```bash\npip install mo-cache\n```\n\n## demo\n\n\u5feb\u901f\u5f00\u59cb\n\n```python\nfrom mo_cache import MemoryCache\n\ncache = MemoryCache()\n\n\n# \u6b64\u65f6\u7684key\u9ed8\u8ba4\u662f\u51fd\u6570\u540d foo\n@cache\ndef foo(a, b):\n return a + b\n\nif __name__ == '__main__':\n foo()\n\n```\n\n## \u66f4\u591a\u793a\u4f8b\n\n1\u3001\u4f7f\u7528\u88c5\u9970\u5668\n\n```python\n\n# \u4e3b\u52a8\u8bbe\u7f6ekey, \u8fc7\u671f\u65f6\u95f4\u5355\u4f4d\uff1a\u79d2s\n@cache(key='custom_key', expire=30)\ndef foo(a, b):\n return a + b\n```\n\n2\u3001\u4e3b\u52a8\u8bbe\u7f6e\u548c\u83b7\u53d6\n\n```python\n\ncache.set(key='custom_key', value='value', expire=30)\n\nvalue = cache.get(key='custom_key')\n```\n\nMemoryCache, FileCache, RedisCache\u5b9e\u73b0\u4e86\u5171\u540c\u7684\u63a5\u53e3(set/get/call)\uff0c\n\n\u53ea\u662f\u6784\u9020\u53c2\u6570\u7a0d\u6709\u4e0d\u540c\n\n```python\n\nfrom mo_cache import MemoryCache, FileCache, RedisCache\n\nmemory_cache = MemoryCache()\n\nfile_cache = FileCache(cache_dir='cache')\n\nredis_cache = RedisCache(redis_url='redis://localhost:6379/0')\n```\n\n## \u7ee7\u627f\u4f53\u7cfb\n\n```python\n\nclass CacheAbstract(object):\n \"\"\"\u7edf\u4e00\u7684\u63a5\u53e3\"\"\"\n def set(self, key, value, expire=-1):\n pass\n\n def get(self, key):\n pass\n\nclass CacheDecorator(CacheAbstract):\n \"\"\"cache \u88c5\u9970\u5668\"\"\"\n def __call__(self, key=None, expire=-1):\n pass\n\nclass MemoryCache(CacheDecorator):\n \"\"\"\u5185\u5b58\u7f13\u5b58\"\"\"\n\nclass FileCache(CacheDecorator):\n \"\"\"\u6587\u4ef6\u7f13\u5b58\"\"\"\n\nclass RedisCache(CacheDecorator):\n \"\"\"Redis \u7f13\u5b58\"\"\"\n\n```\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "a simple cache lib support memory\u3001file\u3001redis",
"version": "0.0.8",
"project_urls": {
"Homepage": "https://github.com/mouday/mo-cache"
},
"split_keywords": [
"cache"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c3f126689a304c84b631464790d5a87a0da69e4eecfc3c657fb8e5b1ba66aa9a",
"md5": "03da5e36284a3a9b4ca9c44b8c78b4b6",
"sha256": "51dececac4db8a51daa38abf9cde951822ee2796ed5d35c422a6f0ce935cd06d"
},
"downloads": -1,
"filename": "mo_cache-0.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "03da5e36284a3a9b4ca9c44b8c78b4b6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 8442,
"upload_time": "2021-03-01T03:00:11",
"upload_time_iso_8601": "2021-03-01T03:00:11.878329Z",
"url": "https://files.pythonhosted.org/packages/c3/f1/26689a304c84b631464790d5a87a0da69e4eecfc3c657fb8e5b1ba66aa9a/mo_cache-0.0.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b720f9a90499a89827cf892f47e175d57494ed83987ab3c5d242b473d85eeffc",
"md5": "e85ab233cd162dc8d6e8f7e421c88ac1",
"sha256": "3fd1561dca04a8f780b50ca55d1d4ea66aa989405872ac7a638b50f98e3e8f87"
},
"downloads": -1,
"filename": "mo-cache-0.0.8.tar.gz",
"has_sig": false,
"md5_digest": "e85ab233cd162dc8d6e8f7e421c88ac1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4699,
"upload_time": "2021-03-01T03:00:14",
"upload_time_iso_8601": "2021-03-01T03:00:14.212417Z",
"url": "https://files.pythonhosted.org/packages/b7/20/f9a90499a89827cf892f47e175d57494ed83987ab3c5d242b473d85eeffc/mo-cache-0.0.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2021-03-01 03:00:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "mouday",
"github_project": "mo-cache",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "mo-cache"
}