Skip to main content

Redis-extensions-base is a base collection of custom extensions for Redis-py.

Project description

redis-extensions-base

Redis-extensions-base is a base collection of custom extensions for Redis-py.

Installation

pip install redis-extensions-base

Usage

In [1]: import redis_extensions as redis

In [2]: r = redis.RedisExtensions(host='localhost', port=6379, db=0)

In [3]: r.zaddwithstamps('sorted_set', 1, 'a', 2, 'b')
Out[3]: 1

In [4]: r.zrange('sorted_set', 0, 100, withscores=True)
Out[4]: [('a', 11472205032192.0), ('b', 21472205032192.0)]

In [5]: r.zrange('sorted_set', 0, 100, withscores=True, score_cast_func=r.rawscore)
Out[5]: [('a', 1.0), ('b', 2.0)]

In [6]: r.zincrbywithstamps('sorted_set', 'a')
Out[6]: 0

In [7]: r.zrange('sorted_set', 0, 100, withscores=True)
Out[7]: [('b', 21472205032192.0), ('a', 21472205071514.0)]

In [8]: r.zrange('sorted_set', 0, 100, withscores=True, score_cast_func=r.rawscore)
Out[8]: [('b', 2.0), ('a', 2.0)]

Expired

In [1]: from redis_extensions import RedisExpires as exp

In [2]: exp.REDIS_EXPIRED
exp.REDIS_EXPIRED_HALF_HOUR  exp.REDIS_EXPIRED_ONE_HOUR   exp.REDIS_EXPIRED_ONE_WEEK
exp.REDIS_EXPIRED_ONE_DAY    exp.REDIS_EXPIRED_ONE_MONTH  exp.REDIS_EXPIRED_ONE_YEAR

In [2]: exp.REDIS_EXPIRED_ONE_HOUR
Out[2]: 3600

In [3]:

In [3]: import redis_extensions as redis

In [4]: r = redis.RedisExtensions(host='localhost', port=6379, db=0)

In [5]: r.REDIS_EXPIRED
r.REDIS_EXPIRED_HALF_HOUR  r.REDIS_EXPIRED_ONE_HOUR   r.REDIS_EXPIRED_ONE_WEEK
r.REDIS_EXPIRED_ONE_DAY    r.REDIS_EXPIRED_ONE_MONTH  r.REDIS_EXPIRED_ONE_YEAR

In [5]: r.REDIS_EXPIRED_ONE_HOUR
Out[5]: 3600

Warnings

In [1]: import redis_extensions as redis

In [2]: r = redis.RedisExtensions(host='localhost', port=6379, db=0)

In [3]: r.delete_keys('redis_extensions')
``r.keys()`` used, may be very very very slow when keys' amount very large
Out[3]: 0

In [4]: r.lock_exists('redis_extensions', regex=True)
``r.keys()`` used, may be very very very slow when keys' amount very large
Out[4]: []

Solutions

  • Lock

    In [1]: import redis_extensions as redis
    
    In [2]: r = redis.RedisExtensions(host='localhost', port=6379, db=0)
    
    In [3]: r.acquire_lock('redis_extensions')
    Out[3]: '026ad2a7-2b58-435f-8ba2-467458a687f1'
    
    In [4]: r.acquire_lock('redis_extensions')
    Out[4]: False
    
    In [5]: r.release_lock('redis_extensions', '026ad2a7-2b58-435f-8ba2-467458a687f1')
    Out[5]: True
    
    In [6]: r.acquire_lock('redis_extensions', ex=10)
    Out[6]: '84f6b991-7c30-4210-947a-deb56bbc769a'
    
    In [7]: r.exists('redis:extensions:lock:redis_extensions')
    Out[7]: True
    
    In [8]: # 10 Seconds Later
    
    In [9]: r.exists('redis:extensions:lock:redis_extensions')
    Out[9]: False
    
  • Quota

    In [1]: import redis_extensions as redis
    
    In [2]: r = redis.RedisExtensions(host='localhost', port=6379, db=0)
    
    In [3]: r.quota('redis_extensions', amount=1, time=10)
    Out[3]: False
    
    In [4]: r.quota('redis_extensions', amount=1, time=10)
    Out[4]: True
    
  • Quote/UnQuote

    In [1]: import redis_extensions as redis
    
    In [2]: r = redis.RedisExtensions(host='localhost', port=6379, db=0)
    
    In [3]: r.quote('http://a.com')
    Out[3]: '6eb19fa3-9e26-457b-bb88-83ea5927ac29'
    
    In [4]: r.unquote('6eb19fa3-9e26-457b-bb88-83ea5927ac29')
    Out[4]: 'http://a.com'
    
  • Token

    In [1]: import redis_extensions as redis
    
    In [2]: r = redis.RedisExtensions(host='localhost', port=6379, db=0)
    
    In [3]: phone = '18888888888'
    
    In [4]: r.token(phone)
    Out[4]: '8bde88aa-71e9-4dea-846c-b1684a02b0f5'
    
    In [5]: r.token_exists(phone, '8bde88aa-71e9-4dea-846c-b1684a02b0f5')
    Out[5]: True
    
    In [6]: r.token_delete(phone)
    Out[6]: 1
    
  • Signin

    In [1]: import redis_extensions as redis
    
    In [2]: r = redis.RedisExtensions(host='localhost', port=6379, db=0)
    
    In [3]: r.signin_status('redis_extensions')
    Out[3]:
    {'delta_days': 10394,  # Signin Interval, Check Duplicate Signin
     'signed_today': False,  # Signed Today Or Not
     'signin_date': '1988-06-15',  # Last Signin Date
     'signin_days': 0,  # Continuous Signin Days
     'signin_longest_days': 0,  # Longest Continuous Signin Days In History
     'signin_total_days': 0}  # Total Signin Days
    
    In [4]: r.signin('redis_extensions')
    Out[4]:
    {'delta_days': 10394,
     'signed_today': True,
     'signin_date': '2016-11-29',
     'signin_days': 1,
     'signin_longest_days': 1,
     'signin_total_days': 1}
    
    In [5]: r.signin_status('redis_extensions')
    Out[5]:
    {'delta_days': 0,
     'signed_today': True,
     u'signin_date': u'2016-11-29',
     u'signin_days': 1,
     u'signin_longest_days': 1,
     u'signin_total_days': 1}
    
    In [6]: r.signin('redis_extensions')
    Out[6]:
    {'delta_days': 0,  # Duplicate Signin
     'signed_today': True,
     u'signin_date': u'2016-11-29',
     u'signin_days': 1,
     u'signin_longest_days': 1,
     u'signin_total_days': 1}
    
  • Counter

    In [1]: import redis_extensions as redis
    
    In [2]: r = redis.RedisExtensions(host='localhost', port=6379, db=0)
    
    In [3]: r.counter('a')
    Out[3]: (1, 0, 1)  # cur, pre, incr
    
    In [4]: r._counter_key('a')
    Out[4]: 'redis:extensions:counter:a:20170215'
    
    In [5]: r.ttl(_4)
    Out[5]: 86390L
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

redis-extensions-base-4.1.6.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

redis_extensions_base-4.1.6-py2.py3-none-any.whl (14.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file redis-extensions-base-4.1.6.tar.gz.

File metadata

  • Download URL: redis-extensions-base-4.1.6.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.2

File hashes

Hashes for redis-extensions-base-4.1.6.tar.gz
Algorithm Hash digest
SHA256 0ba86ef181a5ace8e73f6cc6c01a3d4f3e13ac12a36d820f944c74d2f48d9acf
MD5 d44444c67913b0e75ae831c03f0fb440
BLAKE2b-256 5730054ed4545e874a31026ef6f4c71e92dab7f012c26c799c6f7e6c3ccf6740

See more details on using hashes here.

File details

Details for the file redis_extensions_base-4.1.6-py2.py3-none-any.whl.

File metadata

  • Download URL: redis_extensions_base-4.1.6-py2.py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.2

File hashes

Hashes for redis_extensions_base-4.1.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 28f9824e37bb007ff7b4e4d56f5312fe8f54cf55f083d4a43994fa79c8126c41
MD5 bd8cfad58fb40dc8591215fd1466dadf
BLAKE2b-256 aa94b082e034f67db34153f3228a4fdb113a49df8c3684660f4715faa59e3326

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page