Format: application/x-python-code
⬇ Download File (6.5 KB)
   1  o
   2  
   3  2'h��@s4ddlZddlmZddlmZGdd�de�ZdS)�N)�	BaseCache)�RedisSerializerc@s�eZdZUdZdZejed<dZejed<e	�Z
   4  						d4d	ejd
   5  edeje
   6  ded
   7  edejeje
   8  ejge
   9  ffdejfdd�Zde
  10  fdd�Zdejedefdd�Zde
  11  dejfdd�Zde
  12  dejejfdd�Zd5de
  13  dejdejedejfdd �Zd5de
  14  dejdejedejfd!d"�Z	d5d#eje
  15  ejfdejedejejfd$d%�Zde
  16  defd&d'�Zde
  17  dejejfd(d)�Zde
  18  defd*d+�Zdefd,d-�Zd6de
  19  d/edejfd0d1�Zd6de
  20  d/edejfd2d3�Z dS)7�
  21  RedisCacheaUses the Redis key-value store as a cache backend.
  22  
  23      The first argument can be either a string denoting address of the Redis
  24      server or an object resembling an instance of a redis.Redis class.
  25  
  26      Note: Python Redis API already takes care of encoding unicode strings on
  27      the fly.
  28  
  29      :param host: address of the Redis server or an object which API is
  30                   compatible with the official Python Redis client (redis-py).
  31      :param port: port number on which Redis server listens for connections.
  32      :param password: password authentication for the Redis server.
  33      :param db: db (zero-based numeric index) on Redis Server to connect.
  34      :param default_timeout: the default timeout that is used if no timeout is
  35                              specified on :meth:`~BaseCache.set`. A timeout of
  36                              0 indicates that the cache never expires.
  37      :param key_prefix: A prefix that should be added to all keys.
  38  
  39      Any additional keyword arguments will be passed to ``redis.Redis``.
  40      N�_read_client�
  41  _write_client�	localhost��r�,�host�port�password�db�default_timeout�
  42  key_prefix�kwargsc
  43  
  44  Ks�t�||�|durtd��t|t�rGzddl}Wnty*}	ztd�|	�d}	~	ww|�dd�r5td��|j	d||||d�|��|_
  45  |_n||_|_
  46  |pPd|_dS)	Nz)RedisCache host parameter may not be Nonerzno redis module foundZdecode_responsesz0decode_responses is not supported by RedisCache.)r
  47  rrr
  48  ��)
  49  r�__init__�
  50  ValueError�
  51  isinstance�str�redis�ImportError�RuntimeError�getZRedisrrr)
  52  �selfr
  53  rrr
  54  rrrr�errrr�DC:\Users\shubh\Videos\agent\nova\Lib\site-packages\cachelib/redis.pyr!s&
  55  
  56  
  57  ����zRedisCache.__init__�returncCst|jt�r	|jS|��S�N)rrr�rrrr�_get_prefix<s��zRedisCache._get_prefix�timeoutcCst�||�}|dkrd}|S)z�Normalize timeout by setting it to default of 300 if
  58          not defined (None) or -1 if explicitly set to zero.
  59  
  60          :param timeout: timeout to normalize.
  61          r�����)r�_normalize_timeout)rr"rrrr$AszRedisCache._normalize_timeout�keycCs |j�|j�|���|����Sr)�
  62  serializer�loadsrrr!�rr%rrrrLs�zRedisCache.get�keyscs<�jr
  63  �fdd�|D�}nt|�}�fdd��j�|�D�S)Nc�g|]
  64  }����|���qSr�r!��.0r%r rr�
  65  <listcomp>S�z'RedisCache.get_many.<locals>.<listcomp>csg|]}�j�|��qSr)r&r')r-�xr rrr.V�)r�listrZmget�rr)Z
  66  prefixed_keysrr r�get_manyQszRedisCache.get_many�valuecCs`|�|�}|j�|�}|dkr|jj|���|��|d�}|S|jj|���|��||d�}|S)Nr#��namer5�r7r5�time)r$r&�dumpsr�setr!�setex)rr%r5r"�dump�resultrrrr;Xs
  67  ���zRedisCache.setcCs^|�|�}|j�|�}|jj|���|��|d�}|r-|dkr-|jj|���|��|d�|S)Nr6r#)r7r9)r$r&r:rZsetnxr!Zexpire)rr%r5r"r=�createdrrr�addes
  68  �zRedisCache.add�mappingcCs�|�|�}|jjdd�}|��D]*\}}|j�|�}|dkr,|j|���|��|d�q|j|���|��||d�q|�	�}dd�t
  69  |��|�D�S)NF)Ztransactionr#r6r8cSsg|]\}}|r|�qSrr)r-�kZwas_setrrrr.r1z'RedisCache.set_many.<locals>.<listcomp>)r$rZpipeline�itemsr&r:r;r!r<�execute�zipr))rrAr"�piper%r5r=�resultsrrr�set_manyps
  70  zRedisCache.set_manycC�t|j�|���|����Sr)�boolr�deleter!r(rrrrK��zRedisCache.deletecsN|sgS�jr�fdd�|D�}ndd�|D�}�jj|��fdd�|D�S)Ncr*rr+r,r rrr.�r/z*RedisCache.delete_many.<locals>.<listcomp>cSsg|]}|�qSrr�r-rBrrrr.�scsg|]	}��|�s|�qSr)�hasrMr rrr.�s)rrrKr3rr r�delete_many�szRedisCache.delete_manycCrIr)rJr�existsr!r(rrrrN�rLzRedisCache.hascCsHd}|jr|j�|��d�}|r|jj|�}t|�S|j��}t|�S)Nr�*)rrr)r!rrKZflushdbrJ)r�statusr)rrr�clear�s
  71  �zRedisCache.clear��deltacCs|jj|���|��|d�S�N)r7�amount�r�incrr!�rr%rUrrr�inc�rLzRedisCache.inccCs|jj|���|��|d�SrVrXrZrrr�dec�szRedisCache.dec)rrNrr	Nr)rT)!�__name__�
  72  __module__�__qualname__�__doc__r�_t�Any�__annotations__rrr&�int�Optionalr�Union�Callablerr!r$r�Listr4r;r@�DictrHrJrKrOrNrSr[r\rrrrrs\
  73  �������
  74  �&&
  75  ���
  76  
  77  �
  78  
  79  r)�typingraZ
  80  cachelib.baserZcachelib.serializersrrrrrr�<module>s