zoukankan      html  css  js  c++  java
  • retools 0.1 : Python Package Index

    retools 0.1 : Python Package Index

    retools 0.1

    Redis Tools

    Downloads ↓

    Latest Version:
    0.2

    Redis Tools (retools)

    retools is a package of Redis tools. It's aim is to provide a variety of
    Redis backed Python tools that are always 100% unit tested, fast, efficient,
    and utilize the capabilities of Redis.

    Current tools in retools:

    • Caching
    • Global Lock

    On the horizon for future implementation:

    • A worker/job processing system similar to Celery but based on how Ruby's
      Resque system works.

    Caching

    A high performance caching system that can act as a drop-in replacement for
    Beaker's caching. Unlike Beaker's caching, this utilizes Redis for distributed
    write-locking dogpile prevention. It also collects hit/miss cache statistics
    along with recording what regions are used by which functions and arguments.

    Example:

    from retools.cache import CacheRegion, cache_region, invalidate_function
    
    CacheRegion.add_region('short_term', expires=3600)
    
    @cache_region('short_term')
    def slow_function(*search_terms):
        # Do a bunch of work
        return results
    
    my_results = slow_function('bunny')
    
    # Invalidate the cache for 'bunny'
    invalidate_function(slow_function, [], 'bunny')
    

    Differences from Beaker

    Unlike Beaker's caching system, this is built strictly for Redis. As such, it
    adds several features that Beaker doesn't possess:

    • A distributed write-lock so that only one writer updates the cache at a time
      across a cluster.
    • Hit/Miss cache statistics to give you insight into what caches are less
      effectively utilized (and may need either higher expiration times, or just
      not very worthwhile to cache).
    • Very small, compact code-base with 100% unit test coverage.

    Locking

    A Redis based lock implemented as a Python context manager, based on Chris
    Lamb's example
    .

    Example:

    from retools.lock import Lock
    
    with Lock('a_key', expires=60, timeout=10):
        # do something that should only be done one at a time
  • 相关阅读:
    BZOJ1051 [HAOI2006]受欢迎的牛 强连通分量缩点
    This blog has been cancelled for a long time
    欧拉定理、费马小定理及其拓展应用
    同余基础
    [LeetCode] 73. Set Matrix Zeroes
    [LeetCode] 42. Trapping Rain Water
    [LeetCode] 41. First Missing Positive
    [LeetCode] 71. Simplify Path
    [LeetCode] 148. Sort List
    [LeetCode] 239. Sliding Window Maximum
  • 原文地址:https://www.cnblogs.com/lexus/p/2409559.html
Copyright © 2011-2022 走看看