Source code for redis_func_cache.policies.lfu
"""LFU eviction policy."""
from typing import final
from ..mixins.hash import PickleMd5HashMixin
from ..mixins.scripts import LfuScriptsMixin
from .base import BaseClusterMultiplePolicy, BaseClusterSinglePolicy, BaseMultiplePolicy, BaseSinglePolicy
__all__ = ("LfuPolicy", "LfuMultiplePolicy", "LfuClusterPolicy", "LfuClusterMultiplePolicy")
[docs]
@final
class LfuPolicy(LfuScriptsMixin, PickleMd5HashMixin, BaseSinglePolicy):
"""
LFU eviction policy, single key pair.
.. inheritance-diagram:: LfuPolicy
:parts: 1
All decorated functions share the same Redis key pair.
"""
__key__ = "lfu"
[docs]
@final
class LfuMultiplePolicy(LfuScriptsMixin, PickleMd5HashMixin, BaseMultiplePolicy):
"""
LFU eviction policy, multiple key pairs.
.. inheritance-diagram:: LfuMultiplePolicy
:parts: 1
Each decorated function has its own Redis key pair.
"""
__key__ = "lfu-m"
[docs]
@final
class LfuClusterPolicy(LfuScriptsMixin, PickleMd5HashMixin, BaseClusterSinglePolicy):
"""
LFU eviction policy with Redis cluster support, single key pair.
.. inheritance-diagram:: LfuClusterPolicy
:parts: 1
All decorated functions share the same Redis key pair.
"""
__key__ = "lfu-c"
[docs]
@final
class LfuClusterMultiplePolicy(LfuScriptsMixin, PickleMd5HashMixin, BaseClusterMultiplePolicy):
"""
LFU eviction policy with Redis cluster support, multiple key pairs.
.. inheritance-diagram:: LfuClusterMultiplePolicy
:parts: 1
Each decorated function has its own Redis key pair.
"""
__key__ = "lfu-cm"