|
1 | | -from datetime import timedelta |
2 | 1 | from typing import ( |
3 | 2 | Dict, |
4 | | - List, |
5 | 3 | Optional, |
6 | 4 | Protocol, |
7 | 5 | Sequence, |
8 | 6 | Tuple, |
9 | | - Union, |
10 | | - overload, |
11 | 7 | ) |
12 | 8 |
|
13 | 9 | import redis |
@@ -85,133 +81,3 @@ def delete_many(self, keys: Sequence[str]) -> None: |
85 | 81 | def delete_all(self) -> None: |
86 | 82 | self.client.delete(self.hash_name) |
87 | 83 |
|
88 | | - |
89 | | -class DeprecatedRedisAdapter: |
90 | | - """Expands basic redis functionality |
91 | | -
|
92 | | - Serves the purpose of adding custom logic on top of basic redis functions |
93 | | - (e.g. adding expiry to hset, which is not available out of the box). |
94 | | - """ |
95 | | - |
96 | | - DEFAULT_EXPIRY: timedelta = timedelta(days=60) |
97 | | - REDIS_STORED_VALUE_TYPE = Union[bytes, str, int, float] |
98 | | - |
99 | | - def __init__( |
100 | | - self, |
101 | | - hash_name: str, |
102 | | - client: redis.Redis, |
103 | | - ): |
104 | | - self.default_name = hash_name |
105 | | - self.client = client |
106 | | - |
107 | | - self.client.ping() |
108 | | - |
109 | | - @overload |
110 | | - def hset( |
111 | | - self, |
112 | | - name: Optional[str] = ..., |
113 | | - key: str = ..., |
114 | | - value: REDIS_STORED_VALUE_TYPE = ..., |
115 | | - mapping: None = ..., |
116 | | - expiry: Union[int, timedelta, None] = ..., |
117 | | - ) -> int: |
118 | | - ... |
119 | | - |
120 | | - @overload |
121 | | - def hset( |
122 | | - self, |
123 | | - name: Optional[str] = ..., |
124 | | - key: None = ..., |
125 | | - value: None = ..., |
126 | | - mapping: Dict[str, REDIS_STORED_VALUE_TYPE] = ..., |
127 | | - expiry: Union[int, timedelta, None] = ..., |
128 | | - ) -> int: |
129 | | - ... |
130 | | - |
131 | | - def hset( |
132 | | - self, |
133 | | - name=None, |
134 | | - key=None, |
135 | | - value=None, |
136 | | - mapping=None, |
137 | | - expiry=DEFAULT_EXPIRY, |
138 | | - ) -> int: |
139 | | - """Stores the data in cache |
140 | | -
|
141 | | - params: |
142 | | - key: key, which will contain the data |
143 | | - value: data to be saved |
144 | | - mapping: dict of key:data pairs to be saved |
145 | | - expiry: time in seconds for when data will be deleted from cache |
146 | | - expiration is reset with every hset call |
147 | | - expiration can be disabled by setting expiry to None |
148 | | - returns: number of inserted elements |
149 | | - """ |
150 | | - |
151 | | - name = name or self.default_name |
152 | | - |
153 | | - n_set = self.client.hset(name=name, key=key, value=value, mapping=mapping) |
154 | | - |
155 | | - if expiry is None and self.pttl(name=name) > 0: |
156 | | - self.client.persist(name=name) |
157 | | - |
158 | | - if expiry is not None: |
159 | | - self.client.expire(name=name, time=expiry) |
160 | | - |
161 | | - return n_set |
162 | | - |
163 | | - def hget( |
164 | | - self, key: str, name: Optional[str] = None |
165 | | - ) -> Union[REDIS_STORED_VALUE_TYPE, None]: |
166 | | - """Loads data from cache |
167 | | -
|
168 | | - params: |
169 | | - key: key to load data from |
170 | | - returns: stored data |
171 | | - """ |
172 | | - |
173 | | - name = name or self.default_name |
174 | | - return self.client.hget(name=name, key=key) |
175 | | - |
176 | | - def hgetall( |
177 | | - self, name: Optional[str] = None |
178 | | - ) -> Dict[str, Union[REDIS_STORED_VALUE_TYPE]]: |
179 | | - """Loads all data from cache""" |
180 | | - |
181 | | - name = name or self.default_name |
182 | | - return self.client.hgetall(name=name) |
183 | | - |
184 | | - def hdel(self, keys: List[str], name: Optional[str] = None) -> int: |
185 | | - """Deletes some data from cache |
186 | | -
|
187 | | - params: |
188 | | - keys: list of keys to delete |
189 | | - returns: number of deleted elements |
190 | | - """ |
191 | | - |
192 | | - name = name or self.default_name |
193 | | - return self.client.hdel(name, *keys) |
194 | | - |
195 | | - def delete(self, *names: List[str]) -> int: |
196 | | - """Deletes all data from cache""" |
197 | | - |
198 | | - delete_names = names or [self.default_name] |
199 | | - return self.client.delete(*delete_names) |
200 | | - |
201 | | - def ttl(self, name: Optional[str] = None) -> int: |
202 | | - """Returns the number of seconds until expiration""" |
203 | | - |
204 | | - name = name or self.default_name |
205 | | - return self.client.ttl(name=name) |
206 | | - |
207 | | - def pttl(self, name: Optional[str] = None) -> int: |
208 | | - """Returns the number of milliseconds until expiration""" |
209 | | - |
210 | | - name = name or self.default_name |
211 | | - return self.client.pttl(name=name) |
212 | | - |
213 | | - def exists(self, *names: List[str]) -> int: |
214 | | - """Returns whether there is data in cache""" |
215 | | - |
216 | | - exists_names = names or [self.default_name] |
217 | | - return self.client.exists(*exists_names) |
0 commit comments