@@ -204,15 +204,16 @@ class ClientCommands(Generic[Backend]):
204
204
def __contains__ (self , key : KeyT ) -> bool :
205
205
return self .has_key (key )
206
206
207
- def _get_client (self , write = True , tried = None , client = None ):
207
+ def _get_client (self , write = True , tried = None , client = None , ** kwargs ):
208
208
if client :
209
209
return client
210
- return self .get_client (write = write , tried = tried )
210
+ return self .get_client (write = write , tried = tried , ** kwargs )
211
211
212
212
def get_client (
213
213
self : BaseClient ,
214
214
write : bool = True ,
215
215
tried : List [int ] | None = None ,
216
+ ** kwargs ,
216
217
) -> Backend | Any :
217
218
"""
218
219
Method used for obtain a raw valkey client.
@@ -402,10 +403,10 @@ def get(
402
403
403
404
Returns decoded value if key is found, the default if not.
404
405
"""
405
- client = self ._get_client (write = False , client = client )
406
-
407
406
key = self .make_key (key , version = version )
408
407
408
+ client = self ._get_client (write = False , client = client , key = key )
409
+
409
410
try :
410
411
value = client .get (key )
411
412
except _main_exceptions as e :
@@ -422,10 +423,10 @@ def persist(
422
423
version : int | None = None ,
423
424
client : Backend | Any | None = None ,
424
425
) -> bool :
425
- client = self ._get_client (write = True , client = client )
426
-
427
426
key = self .make_key (key , version = version )
428
427
428
+ client = self ._get_client (write = True , client = client , key = key )
429
+
429
430
return client .persist (key )
430
431
431
432
def expire (
@@ -438,10 +439,10 @@ def expire(
438
439
if timeout is DEFAULT_TIMEOUT :
439
440
timeout = self ._backend .default_timeout # type: ignore
440
441
441
- client = self ._get_client (write = True , client = client )
442
-
443
442
key = self .make_key (key , version = version )
444
443
444
+ client = self ._get_client (write = True , client = client , key = key )
445
+
445
446
# for some strange reason mypy complains,
446
447
# saying that timeout type is float | timedelta
447
448
return client .expire (key , timeout ) # type: ignore
@@ -457,10 +458,10 @@ def expire_at(
457
458
Set an expiry flag on a ``key`` to ``when``, which can be represented
458
459
as an integer indicating unix time or a Python datetime object.
459
460
"""
460
- client = self ._get_client (write = True , client = client )
461
-
462
461
key = self .make_key (key , version = version )
463
462
463
+ client = self ._get_client (write = True , client = client , key = key )
464
+
464
465
return client .expireat (key , when )
465
466
466
467
def pexpire (
@@ -473,10 +474,10 @@ def pexpire(
473
474
if timeout is DEFAULT_TIMEOUT :
474
475
timeout = self ._backend .default_timeout # type: ignore
475
476
476
- client = self ._get_client (write = True , client = client )
477
-
478
477
key = self .make_key (key , version = version )
479
478
479
+ client = self ._get_client (write = True , client = client , key = key )
480
+
480
481
# TODO: see if the casting is necessary
481
482
# for some strange reason mypy complains,
482
483
# saying that timeout type is float | timedelta
@@ -493,10 +494,10 @@ def pexpire_at(
493
494
Set an expiry flag on a ``key`` to ``when``, which can be represented
494
495
as an integer indicating unix time or a Python datetime object.
495
496
"""
496
- client = self ._get_client (write = True , client = client )
497
-
498
497
key = self .make_key (key , version = version )
499
498
499
+ client = self ._get_client (write = True , client = client , key = key )
500
+
500
501
return client .pexpireat (key , when )
501
502
502
503
def get_lock (
@@ -511,9 +512,10 @@ def get_lock(
511
512
lock_class = None ,
512
513
thread_local : bool = True ,
513
514
) -> "Lock" :
514
- client = self ._get_client (write = True , client = client )
515
-
516
515
key = self .make_key (key , version = version )
516
+
517
+ client = self ._get_client (write = True , client = client , key = key )
518
+
517
519
return client .lock (
518
520
key ,
519
521
timeout = timeout ,
@@ -537,10 +539,12 @@ def delete(
537
539
"""
538
540
Remove a key from the cache.
539
541
"""
540
- client = self ._get_client (write = True , client = client )
542
+ key = self .make_key (key , version = version , prefix = prefix )
543
+
544
+ client = self ._get_client (write = True , client = client , key = key )
541
545
542
546
try :
543
- return client .delete (self . make_key ( key , version = version , prefix = prefix ) )
547
+ return client .delete (key )
544
548
except _main_exceptions as e :
545
549
raise ConnectionInterrupted (connection = client ) from e
546
550
@@ -717,10 +721,10 @@ def _incr(
717
721
client : Backend | Any | None = None ,
718
722
ignore_key_check : bool = False ,
719
723
) -> int :
720
- client = self ._get_client (write = True , client = client )
721
-
722
724
key = self .make_key (key , version = version )
723
725
726
+ client = self ._get_client (write = True , client = client , key = key )
727
+
724
728
try :
725
729
try :
726
730
# if key expired after exists check, then we get
@@ -806,9 +810,10 @@ def ttl(
806
810
Executes TTL valkey command and return the "time-to-live" of specified key.
807
811
If key is a non-volatile key, it returns None.
808
812
"""
809
- client = self ._get_client (write = False , client = client )
810
-
811
813
key = self .make_key (key , version = version )
814
+
815
+ client = self ._get_client (write = False , client = client , key = key )
816
+
812
817
if not client .exists (key ):
813
818
return 0
814
819
@@ -832,9 +837,9 @@ def pttl(
832
837
Executes PTTL valkey command and return the "time-to-live" of specified key.
833
838
If key is a non-volatile key, it returns None.
834
839
"""
835
- client = self ._get_client (write = False , client = client )
836
-
837
840
key = self .make_key (key , version = version )
841
+ client = self ._get_client (write = False , client = client , key = key )
842
+
838
843
if not client .exists (key ):
839
844
return 0
840
845
@@ -857,10 +862,9 @@ def has_key(
857
862
"""
858
863
Test if key exists.
859
864
"""
860
-
861
- client = self ._get_client (write = False , client = client )
862
-
863
865
key = self .make_key (key , version = version )
866
+
867
+ client = self ._get_client (write = False , client = client , key = key )
864
868
try :
865
869
return client .exists (key ) == 1
866
870
except _main_exceptions as e :
@@ -912,9 +916,10 @@ def sadd(
912
916
version : int | None = None ,
913
917
client : Backend | Any | None = None ,
914
918
) -> int :
915
- client = self ._get_client (write = True , client = client )
916
-
917
919
key = self .make_key (key , version = version )
920
+
921
+ client = self ._get_client (write = True , client = client , key = key )
922
+
918
923
encoded_values = [self .encode (value ) for value in values ]
919
924
return client .sadd (key , * encoded_values )
920
925
@@ -924,9 +929,10 @@ def scard(
924
929
version : int | None = None ,
925
930
client : Backend | Any | None = None ,
926
931
) -> int :
927
- client = self ._get_client (write = False , client = client )
928
-
929
932
key = self .make_key (key , version = version )
933
+
934
+ client = self ._get_client (write = False , client = client , key = key )
935
+
930
936
return client .scard (key )
931
937
932
938
def sdiff (
@@ -985,9 +991,10 @@ def smismember(
985
991
version : int | None = None ,
986
992
client : Backend | Any | None = None ,
987
993
) -> List [bool ]:
988
- client = self ._get_client (write = False , client = client )
989
-
990
994
key = self .make_key (key , version = version )
995
+
996
+ client = self ._get_client (write = False , client = client , key = key )
997
+
991
998
encoded_members = [self .encode (member ) for member in members ]
992
999
993
1000
return [bool (value ) for value in client .smismember (key , * encoded_members )]
@@ -999,9 +1006,10 @@ def sismember(
999
1006
version : int | None = None ,
1000
1007
client : Backend | Any | None = None ,
1001
1008
) -> bool :
1002
- client = self ._get_client (write = False , client = client )
1003
-
1004
1009
key = self .make_key (key , version = version )
1010
+
1011
+ client = self ._get_client (write = False , client = client , key = key )
1012
+
1005
1013
member = self .encode (member )
1006
1014
return bool (client .sismember (key , member ))
1007
1015
@@ -1011,9 +1019,10 @@ def smembers(
1011
1019
version : int | None = None ,
1012
1020
client : Backend | Any | None = None ,
1013
1021
) -> Set [Any ]:
1014
- client = self ._get_client (write = False , client = client )
1015
-
1016
1022
key = self .make_key (key , version = version )
1023
+
1024
+ client = self ._get_client (write = False , client = client , key = key )
1025
+
1017
1026
return {self .decode (value ) for value in client .smembers (key )}
1018
1027
1019
1028
def smove (
@@ -1024,10 +1033,11 @@ def smove(
1024
1033
version : int | None = None ,
1025
1034
client : Backend | Any | None = None ,
1026
1035
) -> bool :
1027
- client = self ._get_client (write = True , client = client )
1028
-
1029
1036
source = self .make_key (source , version = version )
1030
1037
destination = self .make_key (destination )
1038
+
1039
+ client = self ._get_client (write = True , client = client , key = source )
1040
+
1031
1041
member = self .encode (member )
1032
1042
return client .smove (source , destination , member )
1033
1043
@@ -1038,9 +1048,10 @@ def spop(
1038
1048
version : int | None = None ,
1039
1049
client : Backend | Any | None = None ,
1040
1050
) -> Set | Any :
1041
- client = self ._get_client (write = True , client = client )
1042
-
1043
1051
nkey = self .make_key (key , version = version )
1052
+
1053
+ client = self ._get_client (write = True , client = client , key = nkey )
1054
+
1044
1055
result = client .spop (nkey , count )
1045
1056
return self ._decode_iterable_result (result )
1046
1057
@@ -1051,9 +1062,10 @@ def srandmember(
1051
1062
version : int | None = None ,
1052
1063
client : Backend | Any | None = None ,
1053
1064
) -> List | Any :
1054
- client = self ._get_client (write = False , client = client )
1055
-
1056
1065
key = self .make_key (key , version = version )
1066
+
1067
+ client = self ._get_client (write = False , client = client , key = key )
1068
+
1057
1069
result = client .srandmember (key , count )
1058
1070
return self ._decode_iterable_result (result , convert_to_set = False )
1059
1071
@@ -1064,9 +1076,10 @@ def srem(
1064
1076
version : int | None = None ,
1065
1077
client : Backend | Any | None = None ,
1066
1078
) -> int :
1067
- client = self ._get_client (write = True , client = client )
1068
-
1069
1079
key = self .make_key (key , version = version )
1080
+
1081
+ client = self ._get_client (write = True , client = client , key = key )
1082
+
1070
1083
nmembers = [self .encode (member ) for member in members ]
1071
1084
return client .srem (key , * nmembers )
1072
1085
@@ -1082,10 +1095,10 @@ def sscan(
1082
1095
err_msg = "Using match with compression is not supported."
1083
1096
raise ValueError (err_msg )
1084
1097
1085
- client = self ._get_client (write = False , client = client )
1086
-
1087
1098
key = self .make_key (key , version = version )
1088
1099
1100
+ client = self ._get_client (write = False , client = client , key = key )
1101
+
1089
1102
cursor , result = client .sscan (
1090
1103
key ,
1091
1104
match = cast (PatternT , self .encode (match )) if match else None ,
@@ -1105,9 +1118,10 @@ def sscan_iter(
1105
1118
err_msg = "Using match with compression is not supported."
1106
1119
raise ValueError (err_msg )
1107
1120
1108
- client = self ._get_client (write = False , client = client )
1109
-
1110
1121
key = self .make_key (key , version = version )
1122
+
1123
+ client = self ._get_client (write = False , client = client , key = key )
1124
+
1111
1125
for value in client .sscan_iter (
1112
1126
key ,
1113
1127
match = cast (PatternT , self .encode (match )) if match else None ,
@@ -1170,9 +1184,10 @@ def touch(
1170
1184
if timeout is DEFAULT_TIMEOUT :
1171
1185
timeout = self ._backend .default_timeout
1172
1186
1173
- client = self ._get_client (write = True , client = client )
1174
-
1175
1187
key = self .make_key (key , version = version )
1188
+
1189
+ client = self ._get_client (write = True , client = client , key = key )
1190
+
1176
1191
if timeout is None :
1177
1192
return bool (client .persist (key ))
1178
1193
0 commit comments