Giter Site home page Giter Site logo

azidecupric / expiringdictx Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 35 KB

提供一个带有过期时间的字典数据结构,适用于缓存和临时存储。Provide a dictionary data structure with an expiration time, suitable for caching and temporary storage.

License: MIT License

Python 100.00%

expiringdictx's Introduction

ExpiringDictx

codecov Build Status PyPI version Python version License


简介 | Introduction

这是一个带有过期时间的字典数据结构,适用于缓存和临时存储。
This is a dictionary data structure with an expiration time, suitable for caching and temporary storage.

安装 | Install

使用 pip 安装 | Install with pip

pip install expiringdictx

使用 poetry 安装 | Install with poetry

poetry add expiringdictx

使用 pdm 安装 | Install with pdm

pdm add expiringdictx

使用 | Usage

ExpiringDict

from datetime import timedelta
from expiringdictx import ExpiringDict

# 创建一个 ExpiringDict 实例 | Create an ExpiringDict instance
cache = ExpiringDict[str, str](capacity=100, default_age=60)

# 添加一个元素,过期时间为默认值 | Add an item with the default expiration time
cache["key0"] = "value0"
# 添加一个元素,过期时间为 30 秒 | Add an item with an expiration time of 30 seconds
cache["key1", 30] = "value1"
# 添加一个元素,过期时间为 2 分钟 | Add an item with an expiration time of 2 minutes
cache["key2", timedelta(minutes=2)] = "value2"
# 或者使用 set 方法 | Or use the set method
cache.set("key3", "value3", 60)

# 获取一个元素 | Get an item
value0 = cache["key0"]
value1 = cache.get('key1')
# 获取时附带过期时间 | Get with expiration time
value2, deadtime2 = cache.get_with_deadtime('key2')

# 获取并删除一个元素 | pop an item
value3 = cache.pop('key3')
value4 = cache.popitem(least_recently=True)

# 获取元素ttl(剩余存活时间) | Get the ttl(time to live) of an item
ttl = cache.ttl('key0')
# 获取元素ddl(过期时间) | Get the ddl(deadline) of an item
ddl = cache.ddl('key0')

# 按照给定keys创建一个新的ExpiringDict | Create a new ExpiringDict with the given keys
new_cache = cache.fromkeys(['key0', 'key1', 'key2'], "default_value", 60)
# 按照给定可映射对象创建一个新的ExpiringDict | Create a new ExpiringDict with the given mapping
new_cache = cache.frommapping({'key0': 'value0', 'key1': ('value1', 1), 'key2': ('value2', timedelta(hours=2))}, 60)
# 从另一个ExpiringDict创建一个新的ExpiringDict | Create a new ExpiringDict from another ExpiringDict
new_cache = cache.fromexpiringdict(cache, 60)

测试 | Tests

运行单元测试: | Run the unit tests:

pytest tests/

致谢 | Thanks

lru-dict: ExpiringDict 的内部存储实现
expiringdict: 本项目的灵感来源,在此基础上添加类型注解和其他功能

许可 | License

MIT


expiringdictx's People

Contributors

azidecupric avatar

Stargazers

BalconyJH avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.