valkey-glide 2.0.1__cp310-cp310-macosx_11_0_arm64.whl → 2.1.0rc2__cp310-cp310-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of valkey-glide might be problematic. Click here for more details.
- glide/__init__.py +95 -119
- glide/async_commands/cluster_commands.py +11 -11
- glide/async_commands/core.py +537 -414
- glide/async_commands/{server_modules/ft.py → ft.py} +8 -7
- glide/async_commands/{server_modules/glide_json.py → glide_json.py} +15 -92
- glide/async_commands/standalone_commands.py +9 -11
- glide/glide.cpython-310-darwin.so +0 -0
- glide/glide.pyi +1 -1
- glide/glide_client.py +39 -46
- glide/logger.py +3 -3
- glide/opentelemetry.py +8 -4
- glide_shared/__init__.py +326 -0
- {glide/async_commands → glide_shared/commands}/batch.py +396 -10
- {glide/async_commands → glide_shared/commands}/batch_options.py +1 -1
- glide_shared/commands/core_options.py +407 -0
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_aggregate_options.py +3 -3
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_create_options.py +4 -2
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_profile_options.py +4 -4
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_search_options.py +4 -2
- {glide/async_commands → glide_shared/commands}/server_modules/json_batch.py +4 -4
- glide_shared/commands/server_modules/json_options.py +93 -0
- {glide/async_commands → glide_shared/commands}/sorted_set.py +2 -2
- {glide/async_commands → glide_shared/commands}/stream.py +1 -1
- {glide → glide_shared}/config.py +28 -21
- {glide → glide_shared}/constants.py +3 -3
- {glide → glide_shared}/exceptions.py +27 -1
- glide_shared/protobuf/command_request_pb2.py +54 -0
- {glide → glide_shared}/routes.py +29 -15
- {valkey_glide-2.0.1.dist-info → valkey_glide-2.1.0rc2.dist-info}/METADATA +119 -58
- valkey_glide-2.1.0rc2.dist-info/RECORD +39 -0
- glide/protobuf/command_request_pb2.py +0 -54
- glide/protobuf/command_request_pb2.pyi +0 -1193
- glide/protobuf/connection_request_pb2.pyi +0 -299
- glide/protobuf/response_pb2.pyi +0 -106
- valkey_glide-2.0.1.dist-info/RECORD +0 -39
- /glide/py.typed → /glide_shared/commands/__init__.py +0 -0
- {glide/async_commands → glide_shared/commands}/bitmap.py +0 -0
- {glide/async_commands → glide_shared/commands}/command_args.py +0 -0
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_constants.py +0 -0
- {glide → glide_shared}/protobuf/connection_request_pb2.py +0 -0
- {glide → glide_shared}/protobuf/response_pb2.py +0 -0
- {glide → glide_shared}/protobuf_codec.py +0 -0
- {valkey_glide-2.0.1.dist-info → valkey_glide-2.1.0rc2.dist-info}/WHEEL +0 -0
{glide → glide_shared}/config.py
RENAMED
|
@@ -6,12 +6,18 @@ from dataclasses import dataclass
|
|
|
6
6
|
from enum import Enum, IntEnum
|
|
7
7
|
from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Union
|
|
8
8
|
|
|
9
|
-
from
|
|
10
|
-
from
|
|
11
|
-
from
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
from
|
|
9
|
+
from glide_shared.commands.core_options import PubSubMsg
|
|
10
|
+
from glide_shared.exceptions import ConfigurationError
|
|
11
|
+
from glide_shared.protobuf.connection_request_pb2 import (
|
|
12
|
+
ConnectionRequest,
|
|
13
|
+
)
|
|
14
|
+
from glide_shared.protobuf.connection_request_pb2 import (
|
|
15
|
+
ProtocolVersion as SentProtocolVersion,
|
|
16
|
+
)
|
|
17
|
+
from glide_shared.protobuf.connection_request_pb2 import ReadFrom as ProtobufReadFrom
|
|
18
|
+
from glide_shared.protobuf.connection_request_pb2 import (
|
|
19
|
+
TlsMode,
|
|
20
|
+
)
|
|
15
21
|
|
|
16
22
|
|
|
17
23
|
class NodeAddress:
|
|
@@ -73,7 +79,7 @@ class BackoffStrategy:
|
|
|
73
79
|
"""
|
|
74
80
|
Represents the strategy used to determine how and when to reconnect, in case of connection failures.
|
|
75
81
|
The time between attempts grows exponentially, to the formula rand(0 .. factor * (exponentBase ^ N)), where N
|
|
76
|
-
is the number of failed attempts, and
|
|
82
|
+
is the number of failed attempts, and rand(...) applies a jitter of up to jitter_percent% to introduce randomness and reduce retry storms.
|
|
77
83
|
Once the maximum value is reached, that will remain the time between retry attempts until a reconnect attempt is
|
|
78
84
|
successful.
|
|
79
85
|
The client will attempt to reconnect indefinitely.
|
|
@@ -83,6 +89,7 @@ class BackoffStrategy:
|
|
|
83
89
|
where the time between retries increases. Once the retries have reached the maximum value, the time between
|
|
84
90
|
retries will remain constant until a reconnect attempt is succesful.
|
|
85
91
|
factor (int): The multiplier that will be applied to the waiting time between each retry.
|
|
92
|
+
This value is specified in milliseconds.
|
|
86
93
|
exponent_base (int): The exponent base configured for the strategy.
|
|
87
94
|
jitter_percent (Optional[int]): The Jitter percent on the calculated duration. If not set, a default value will be used.
|
|
88
95
|
"""
|
|
@@ -223,9 +230,9 @@ class BaseClientConfiguration:
|
|
|
223
230
|
For example::
|
|
224
231
|
|
|
225
232
|
[
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
]
|
|
233
|
+
NodeAddress("sample-address-0001.use1.cache.amazonaws.com", 6379),
|
|
234
|
+
NodeAddress("sample-address-0002.use1.cache.amazonaws.com", 6379)
|
|
235
|
+
]
|
|
229
236
|
|
|
230
237
|
use_tls (bool): True if communication with the cluster should use Transport Level Security.
|
|
231
238
|
Should match the TLS configuration of the server/cluster, otherwise the connection attempt will fail.
|
|
@@ -373,7 +380,7 @@ class BaseClientConfiguration:
|
|
|
373
380
|
|
|
374
381
|
def _get_pubsub_callback_and_context(
|
|
375
382
|
self,
|
|
376
|
-
) -> Tuple[Optional[Callable[[
|
|
383
|
+
) -> Tuple[Optional[Callable[[PubSubMsg, Any], None]], Any]:
|
|
377
384
|
return None, None
|
|
378
385
|
|
|
379
386
|
|
|
@@ -397,12 +404,12 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
397
404
|
|
|
398
405
|
Attributes:
|
|
399
406
|
addresses (List[NodeAddress]): DNS Addresses and ports of known nodes in the cluster.
|
|
400
|
-
|
|
407
|
+
Only nodes whose addresses were provided will be used by the client.
|
|
401
408
|
For example::
|
|
402
409
|
|
|
403
410
|
[
|
|
404
|
-
|
|
405
|
-
|
|
411
|
+
NodeAddress("sample-address-0001.use1.cache.amazonaws.com", 6379),
|
|
412
|
+
NodeAddress("sample-address-0002.use1.cache.amazonaws.com", 6379)
|
|
406
413
|
]
|
|
407
414
|
|
|
408
415
|
use_tls (bool): True if communication with the cluster should use Transport Level Security.
|
|
@@ -457,7 +464,7 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
457
464
|
Attributes:
|
|
458
465
|
channels_and_patterns (Dict[GlideClientConfiguration.PubSubChannelModes, Set[str]]):
|
|
459
466
|
Channels and patterns by modes.
|
|
460
|
-
callback (Optional[Callable[[
|
|
467
|
+
callback (Optional[Callable[[PubSubMsg, Any], None]]):
|
|
461
468
|
Optional callback to accept the incomming messages.
|
|
462
469
|
context (Any):
|
|
463
470
|
Arbitrary context to pass to the callback.
|
|
@@ -466,7 +473,7 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
466
473
|
channels_and_patterns: Dict[
|
|
467
474
|
GlideClientConfiguration.PubSubChannelModes, Set[str]
|
|
468
475
|
]
|
|
469
|
-
callback: Optional[Callable[[
|
|
476
|
+
callback: Optional[Callable[[PubSubMsg, Any], None]]
|
|
470
477
|
context: Any
|
|
471
478
|
|
|
472
479
|
def __init__(
|
|
@@ -540,7 +547,7 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
540
547
|
|
|
541
548
|
def _get_pubsub_callback_and_context(
|
|
542
549
|
self,
|
|
543
|
-
) -> Tuple[Optional[Callable[[
|
|
550
|
+
) -> Tuple[Optional[Callable[[PubSubMsg, Any], None]], Any]:
|
|
544
551
|
if self.pubsub_subscriptions:
|
|
545
552
|
return self.pubsub_subscriptions.callback, self.pubsub_subscriptions.context
|
|
546
553
|
return None, None
|
|
@@ -569,7 +576,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
|
|
|
569
576
|
For example::
|
|
570
577
|
|
|
571
578
|
[
|
|
572
|
-
|
|
579
|
+
NodeAddress("sample-address-0001.use1.cache.amazonaws.com", 6379),
|
|
573
580
|
]
|
|
574
581
|
|
|
575
582
|
use_tls (bool): True if communication with the cluster should use Transport Level Security.
|
|
@@ -634,7 +641,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
|
|
|
634
641
|
Attributes:
|
|
635
642
|
channels_and_patterns (Dict[GlideClusterClientConfiguration.PubSubChannelModes, Set[str]]):
|
|
636
643
|
Channels and patterns by modes.
|
|
637
|
-
callback (Optional[Callable[[
|
|
644
|
+
callback (Optional[Callable[[PubSubMsg, Any], None]]):
|
|
638
645
|
Optional callback to accept the incoming messages.
|
|
639
646
|
context (Any):
|
|
640
647
|
Arbitrary context to pass to the callback.
|
|
@@ -643,7 +650,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
|
|
|
643
650
|
channels_and_patterns: Dict[
|
|
644
651
|
GlideClusterClientConfiguration.PubSubChannelModes, Set[str]
|
|
645
652
|
]
|
|
646
|
-
callback: Optional[Callable[[
|
|
653
|
+
callback: Optional[Callable[[PubSubMsg, Any], None]]
|
|
647
654
|
context: Any
|
|
648
655
|
|
|
649
656
|
def __init__(
|
|
@@ -725,7 +732,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
|
|
|
725
732
|
|
|
726
733
|
def _get_pubsub_callback_and_context(
|
|
727
734
|
self,
|
|
728
|
-
) -> Tuple[Optional[Callable[[
|
|
735
|
+
) -> Tuple[Optional[Callable[[PubSubMsg, Any], None]], Any]:
|
|
729
736
|
if self.pubsub_subscriptions:
|
|
730
737
|
return self.pubsub_subscriptions.callback, self.pubsub_subscriptions.context
|
|
731
738
|
return None, None
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import Any, Dict, List, Literal, Mapping, Optional, Set, TypeVar, Union
|
|
4
4
|
|
|
5
|
-
from
|
|
6
|
-
from
|
|
7
|
-
from
|
|
5
|
+
from glide_shared.protobuf.command_request_pb2 import CommandRequest
|
|
6
|
+
from glide_shared.protobuf.connection_request_pb2 import ConnectionRequest
|
|
7
|
+
from glide_shared.routes import ByAddressRoute, RandomNode, SlotIdRoute, SlotKeyRoute
|
|
8
8
|
|
|
9
9
|
OK: str = "OK"
|
|
10
10
|
DEFAULT_READ_BYTES_SIZE: int = pow(2, 16)
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Copyright Valkey GLIDE Project Contributors - SPDX Identifier: Apache-2.0
|
|
2
2
|
|
|
3
|
-
from typing import Optional
|
|
3
|
+
from typing import Optional, Type
|
|
4
|
+
|
|
5
|
+
from glide_shared.protobuf.response_pb2 import RequestErrorType
|
|
4
6
|
|
|
5
7
|
|
|
6
8
|
class GlideError(Exception):
|
|
@@ -60,3 +62,27 @@ class ConfigurationError(RequestError):
|
|
|
60
62
|
"""
|
|
61
63
|
Errors that are thrown when a request cannot be completed in current configuration settings.
|
|
62
64
|
"""
|
|
65
|
+
|
|
66
|
+
pass
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class LoggerError(GlideError):
|
|
70
|
+
"""
|
|
71
|
+
Errors that are thrown when the logger has an error initializing.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
pass
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def get_request_error_class(
|
|
78
|
+
error_type: Optional[RequestErrorType.ValueType],
|
|
79
|
+
) -> Type[RequestError]:
|
|
80
|
+
if error_type == RequestErrorType.Disconnect:
|
|
81
|
+
return ConnectionError
|
|
82
|
+
if error_type == RequestErrorType.ExecAbort:
|
|
83
|
+
return ExecAbortError
|
|
84
|
+
if error_type == RequestErrorType.Timeout:
|
|
85
|
+
return TimeoutError
|
|
86
|
+
if error_type == RequestErrorType.Unspecified:
|
|
87
|
+
return RequestError
|
|
88
|
+
return RequestError
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: protobuf/command_request.proto
|
|
4
|
+
# Protobuf Python Version: 4.25.1
|
|
5
|
+
"""Generated protocol buffer code."""
|
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
9
|
+
from google.protobuf.internal import builder as _builder
|
|
10
|
+
# @@protoc_insertion_point(imports)
|
|
11
|
+
|
|
12
|
+
_sym_db = _symbol_database.Default()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eprotobuf/command_request.proto\x12\x0f\x63ommand_request\"M\n\x0bSlotIdRoute\x12-\n\tslot_type\x18\x01 \x01(\x0e\x32\x1a.command_request.SlotTypes\x12\x0f\n\x07slot_id\x18\x02 \x01(\x05\"O\n\x0cSlotKeyRoute\x12-\n\tslot_type\x18\x01 \x01(\x0e\x32\x1a.command_request.SlotTypes\x12\x10\n\x08slot_key\x18\x02 \x01(\t\",\n\x0e\x42yAddressRoute\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\"\xf6\x01\n\x06Routes\x12\x36\n\rsimple_routes\x18\x01 \x01(\x0e\x32\x1d.command_request.SimpleRoutesH\x00\x12\x37\n\x0eslot_key_route\x18\x02 \x01(\x0b\x32\x1d.command_request.SlotKeyRouteH\x00\x12\x35\n\rslot_id_route\x18\x03 \x01(\x0b\x32\x1c.command_request.SlotIdRouteH\x00\x12;\n\x10\x62y_address_route\x18\x04 \x01(\x0b\x32\x1f.command_request.ByAddressRouteH\x00\x42\x07\n\x05value\"\xb6\x01\n\x07\x43ommand\x12\x32\n\x0crequest_type\x18\x01 \x01(\x0e\x32\x1c.command_request.RequestType\x12\x38\n\nargs_array\x18\x02 \x01(\x0b\x32\".command_request.Command.ArgsArrayH\x00\x12\x1a\n\x10\x61rgs_vec_pointer\x18\x03 \x01(\x04H\x00\x1a\x19\n\tArgsArray\x12\x0c\n\x04\x61rgs\x18\x01 \x03(\x0c\x42\x06\n\x04\x61rgs\"\x80\x01\n\x18ScriptInvocationPointers\x12\x0c\n\x04hash\x18\x01 \x01(\t\x12\x19\n\x0ckeys_pointer\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x19\n\x0c\x61rgs_pointer\x18\x03 \x01(\x04H\x01\x88\x01\x01\x42\x0f\n\r_keys_pointerB\x0f\n\r_args_pointer\"<\n\x10ScriptInvocation\x12\x0c\n\x04hash\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\x0c\n\x04\x61rgs\x18\x03 \x03(\x0c\"\x90\x02\n\x05\x42\x61tch\x12\x11\n\tis_atomic\x18\x01 \x01(\x08\x12*\n\x08\x63ommands\x18\x02 \x03(\x0b\x32\x18.command_request.Command\x12\x1b\n\x0eraise_on_error\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12\x14\n\x07timeout\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x1f\n\x12retry_server_error\x18\x05 \x01(\x08H\x02\x88\x01\x01\x12#\n\x16retry_connection_error\x18\x06 \x01(\x08H\x03\x88\x01\x01\x42\x11\n\x0f_raise_on_errorB\n\n\x08_timeoutB\x15\n\x13_retry_server_errorB\x19\n\x17_retry_connection_error\"\xb4\x01\n\x0b\x43lusterScan\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t\x12\x1a\n\rmatch_pattern\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\x03H\x01\x88\x01\x01\x12\x18\n\x0bobject_type\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1f\n\x17\x61llow_non_covered_slots\x18\x05 \x01(\x08\x42\x10\n\x0e_match_patternB\x08\n\x06_countB\x0e\n\x0c_object_type\"V\n\x18UpdateConnectionPassword\x12\x15\n\x08password\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\x0eimmediate_auth\x18\x02 \x01(\x08\x42\x0b\n\t_password\"\xfc\x03\n\x0e\x43ommandRequest\x12\x14\n\x0c\x63\x61llback_idx\x18\x01 \x01(\r\x12\x32\n\x0esingle_command\x18\x02 \x01(\x0b\x32\x18.command_request.CommandH\x00\x12\'\n\x05\x62\x61tch\x18\x03 \x01(\x0b\x32\x16.command_request.BatchH\x00\x12>\n\x11script_invocation\x18\x04 \x01(\x0b\x32!.command_request.ScriptInvocationH\x00\x12O\n\x1ascript_invocation_pointers\x18\x05 \x01(\x0b\x32).command_request.ScriptInvocationPointersH\x00\x12\x34\n\x0c\x63luster_scan\x18\x06 \x01(\x0b\x32\x1c.command_request.ClusterScanH\x00\x12O\n\x1aupdate_connection_password\x18\x07 \x01(\x0b\x32).command_request.UpdateConnectionPasswordH\x00\x12&\n\x05route\x18\x08 \x01(\x0b\x32\x17.command_request.Routes\x12\x1a\n\rroot_span_ptr\x18\t \x01(\x04H\x01\x88\x01\x01\x42\t\n\x07\x63ommandB\x10\n\x0e_root_span_ptr*:\n\x0cSimpleRoutes\x12\x0c\n\x08\x41llNodes\x10\x00\x12\x10\n\x0c\x41llPrimaries\x10\x01\x12\n\n\x06Random\x10\x02*%\n\tSlotTypes\x12\x0b\n\x07Primary\x10\x00\x12\x0b\n\x07Replica\x10\x01*\xea\x30\n\x0bRequestType\x12\x12\n\x0eInvalidRequest\x10\x00\x12\x11\n\rCustomCommand\x10\x01\x12\x0c\n\x08\x42itCount\x10\x65\x12\x0c\n\x08\x42itField\x10\x66\x12\x14\n\x10\x42itFieldReadOnly\x10g\x12\t\n\x05\x42itOp\x10h\x12\n\n\x06\x42itPos\x10i\x12\n\n\x06GetBit\x10j\x12\n\n\x06SetBit\x10k\x12\x0b\n\x06\x41sking\x10\xc9\x01\x12\x14\n\x0f\x43lusterAddSlots\x10\xca\x01\x12\x19\n\x14\x43lusterAddSlotsRange\x10\xcb\x01\x12\x15\n\x10\x43lusterBumpEpoch\x10\xcc\x01\x12\x1f\n\x1a\x43lusterCountFailureReports\x10\xcd\x01\x12\x1b\n\x16\x43lusterCountKeysInSlot\x10\xce\x01\x12\x14\n\x0f\x43lusterDelSlots\x10\xcf\x01\x12\x19\n\x14\x43lusterDelSlotsRange\x10\xd0\x01\x12\x14\n\x0f\x43lusterFailover\x10\xd1\x01\x12\x16\n\x11\x43lusterFlushSlots\x10\xd2\x01\x12\x12\n\rClusterForget\x10\xd3\x01\x12\x19\n\x14\x43lusterGetKeysInSlot\x10\xd4\x01\x12\x10\n\x0b\x43lusterInfo\x10\xd5\x01\x12\x13\n\x0e\x43lusterKeySlot\x10\xd6\x01\x12\x11\n\x0c\x43lusterLinks\x10\xd7\x01\x12\x10\n\x0b\x43lusterMeet\x10\xd8\x01\x12\x10\n\x0b\x43lusterMyId\x10\xd9\x01\x12\x15\n\x10\x43lusterMyShardId\x10\xda\x01\x12\x11\n\x0c\x43lusterNodes\x10\xdb\x01\x12\x14\n\x0f\x43lusterReplicas\x10\xdc\x01\x12\x15\n\x10\x43lusterReplicate\x10\xdd\x01\x12\x11\n\x0c\x43lusterReset\x10\xde\x01\x12\x16\n\x11\x43lusterSaveConfig\x10\xdf\x01\x12\x1a\n\x15\x43lusterSetConfigEpoch\x10\xe0\x01\x12\x13\n\x0e\x43lusterSetslot\x10\xe1\x01\x12\x12\n\rClusterShards\x10\xe2\x01\x12\x12\n\rClusterSlaves\x10\xe3\x01\x12\x11\n\x0c\x43lusterSlots\x10\xe4\x01\x12\r\n\x08ReadOnly\x10\xe5\x01\x12\x0e\n\tReadWrite\x10\xe6\x01\x12\t\n\x04\x41uth\x10\xad\x02\x12\x12\n\rClientCaching\x10\xae\x02\x12\x12\n\rClientGetName\x10\xaf\x02\x12\x13\n\x0e\x43lientGetRedir\x10\xb0\x02\x12\r\n\x08\x43lientId\x10\xb1\x02\x12\x0f\n\nClientInfo\x10\xb2\x02\x12\x15\n\x10\x43lientKillSimple\x10\xb3\x02\x12\x0f\n\nClientKill\x10\xb4\x02\x12\x0f\n\nClientList\x10\xb5\x02\x12\x12\n\rClientNoEvict\x10\xb6\x02\x12\x12\n\rClientNoTouch\x10\xb7\x02\x12\x10\n\x0b\x43lientPause\x10\xb8\x02\x12\x10\n\x0b\x43lientReply\x10\xb9\x02\x12\x12\n\rClientSetInfo\x10\xba\x02\x12\x12\n\rClientSetName\x10\xbb\x02\x12\x13\n\x0e\x43lientTracking\x10\xbc\x02\x12\x17\n\x12\x43lientTrackingInfo\x10\xbd\x02\x12\x12\n\rClientUnblock\x10\xbe\x02\x12\x12\n\rClientUnpause\x10\xbf\x02\x12\t\n\x04\x45\x63ho\x10\xc0\x02\x12\n\n\x05Hello\x10\xc1\x02\x12\t\n\x04Ping\x10\xc2\x02\x12\t\n\x04Quit\x10\xc3\x02\x12\n\n\x05Reset\x10\xc4\x02\x12\x0b\n\x06Select\x10\xc5\x02\x12\t\n\x04\x43opy\x10\x91\x03\x12\x08\n\x03\x44\x65l\x10\x92\x03\x12\t\n\x04\x44ump\x10\x93\x03\x12\x0b\n\x06\x45xists\x10\x94\x03\x12\x0b\n\x06\x45xpire\x10\x95\x03\x12\r\n\x08\x45xpireAt\x10\x96\x03\x12\x0f\n\nExpireTime\x10\x97\x03\x12\t\n\x04Keys\x10\x98\x03\x12\x0c\n\x07Migrate\x10\x99\x03\x12\t\n\x04Move\x10\x9a\x03\x12\x13\n\x0eObjectEncoding\x10\x9b\x03\x12\x0f\n\nObjectFreq\x10\x9c\x03\x12\x13\n\x0eObjectIdleTime\x10\x9d\x03\x12\x13\n\x0eObjectRefCount\x10\x9e\x03\x12\x0c\n\x07Persist\x10\x9f\x03\x12\x0c\n\x07PExpire\x10\xa0\x03\x12\x0e\n\tPExpireAt\x10\xa1\x03\x12\x10\n\x0bPExpireTime\x10\xa2\x03\x12\t\n\x04PTTL\x10\xa3\x03\x12\x0e\n\tRandomKey\x10\xa4\x03\x12\x0b\n\x06Rename\x10\xa5\x03\x12\r\n\x08RenameNX\x10\xa6\x03\x12\x0c\n\x07Restore\x10\xa7\x03\x12\t\n\x04Scan\x10\xa8\x03\x12\t\n\x04Sort\x10\xa9\x03\x12\x11\n\x0cSortReadOnly\x10\xaa\x03\x12\n\n\x05Touch\x10\xab\x03\x12\x08\n\x03TTL\x10\xac\x03\x12\t\n\x04Type\x10\xad\x03\x12\x0b\n\x06Unlink\x10\xae\x03\x12\t\n\x04Wait\x10\xaf\x03\x12\x0c\n\x07WaitAof\x10\xb0\x03\x12\x0b\n\x06GeoAdd\x10\xf5\x03\x12\x0c\n\x07GeoDist\x10\xf6\x03\x12\x0c\n\x07GeoHash\x10\xf7\x03\x12\x0b\n\x06GeoPos\x10\xf8\x03\x12\x0e\n\tGeoRadius\x10\xf9\x03\x12\x16\n\x11GeoRadiusReadOnly\x10\xfa\x03\x12\x16\n\x11GeoRadiusByMember\x10\xfb\x03\x12\x1e\n\x19GeoRadiusByMemberReadOnly\x10\xfc\x03\x12\x0e\n\tGeoSearch\x10\xfd\x03\x12\x13\n\x0eGeoSearchStore\x10\xfe\x03\x12\t\n\x04HDel\x10\xd9\x04\x12\x0c\n\x07HExists\x10\xda\x04\x12\t\n\x04HGet\x10\xdb\x04\x12\x0c\n\x07HGetAll\x10\xdc\x04\x12\x0c\n\x07HIncrBy\x10\xdd\x04\x12\x11\n\x0cHIncrByFloat\x10\xde\x04\x12\n\n\x05HKeys\x10\xdf\x04\x12\t\n\x04HLen\x10\xe0\x04\x12\n\n\x05HMGet\x10\xe1\x04\x12\n\n\x05HMSet\x10\xe2\x04\x12\x0f\n\nHRandField\x10\xe3\x04\x12\n\n\x05HScan\x10\xe4\x04\x12\t\n\x04HSet\x10\xe5\x04\x12\x0b\n\x06HSetNX\x10\xe6\x04\x12\x0c\n\x07HStrlen\x10\xe7\x04\x12\n\n\x05HVals\x10\xe8\x04\x12\x0b\n\x06HSetEx\x10\xe9\x04\x12\x0b\n\x06HGetEx\x10\xea\x04\x12\x0c\n\x07HExpire\x10\xeb\x04\x12\x0e\n\tHExpireAt\x10\xec\x04\x12\r\n\x08HPExpire\x10\xed\x04\x12\x0f\n\nHPExpireAt\x10\xee\x04\x12\r\n\x08HPersist\x10\xef\x04\x12\t\n\x04HTtl\x10\xf0\x04\x12\n\n\x05HPTtl\x10\xf1\x04\x12\x10\n\x0bHExpireTime\x10\xf2\x04\x12\x11\n\x0cHPExpireTime\x10\xf3\x04\x12\n\n\x05PfAdd\x10\xbd\x05\x12\x0c\n\x07PfCount\x10\xbe\x05\x12\x0c\n\x07PfMerge\x10\xbf\x05\x12\x0b\n\x06\x42LMove\x10\xa1\x06\x12\x0b\n\x06\x42LMPop\x10\xa2\x06\x12\n\n\x05\x42LPop\x10\xa3\x06\x12\n\n\x05\x42RPop\x10\xa4\x06\x12\x0f\n\nBRPopLPush\x10\xa5\x06\x12\x0b\n\x06LIndex\x10\xa6\x06\x12\x0c\n\x07LInsert\x10\xa7\x06\x12\t\n\x04LLen\x10\xa8\x06\x12\n\n\x05LMove\x10\xa9\x06\x12\n\n\x05LMPop\x10\xaa\x06\x12\t\n\x04LPop\x10\xab\x06\x12\t\n\x04LPos\x10\xac\x06\x12\n\n\x05LPush\x10\xad\x06\x12\x0b\n\x06LPushX\x10\xae\x06\x12\x0b\n\x06LRange\x10\xaf\x06\x12\t\n\x04LRem\x10\xb0\x06\x12\t\n\x04LSet\x10\xb1\x06\x12\n\n\x05LTrim\x10\xb2\x06\x12\t\n\x04RPop\x10\xb3\x06\x12\x0e\n\tRPopLPush\x10\xb4\x06\x12\n\n\x05RPush\x10\xb5\x06\x12\x0b\n\x06RPushX\x10\xb6\x06\x12\x0f\n\nPSubscribe\x10\x85\x07\x12\x0c\n\x07Publish\x10\x86\x07\x12\x13\n\x0ePubSubChannels\x10\x87\x07\x12\x11\n\x0cPubSubNumPat\x10\x88\x07\x12\x11\n\x0cPubSubNumSub\x10\x89\x07\x12\x18\n\x13PubSubShardChannels\x10\x8a\x07\x12\x16\n\x11PubSubShardNumSub\x10\x8b\x07\x12\x11\n\x0cPUnsubscribe\x10\x8c\x07\x12\r\n\x08SPublish\x10\x8d\x07\x12\x0f\n\nSSubscribe\x10\x8e\x07\x12\x0e\n\tSubscribe\x10\x8f\x07\x12\x11\n\x0cSUnsubscribe\x10\x90\x07\x12\x10\n\x0bUnsubscribe\x10\x91\x07\x12\t\n\x04\x45val\x10\xe9\x07\x12\x11\n\x0c\x45valReadOnly\x10\xea\x07\x12\x0c\n\x07\x45valSha\x10\xeb\x07\x12\x14\n\x0f\x45valShaReadOnly\x10\xec\x07\x12\n\n\x05\x46\x43\x61ll\x10\xed\x07\x12\x12\n\rFCallReadOnly\x10\xee\x07\x12\x13\n\x0e\x46unctionDelete\x10\xef\x07\x12\x11\n\x0c\x46unctionDump\x10\xf0\x07\x12\x12\n\rFunctionFlush\x10\xf1\x07\x12\x11\n\x0c\x46unctionKill\x10\xf2\x07\x12\x11\n\x0c\x46unctionList\x10\xf3\x07\x12\x11\n\x0c\x46unctionLoad\x10\xf4\x07\x12\x14\n\x0f\x46unctionRestore\x10\xf5\x07\x12\x12\n\rFunctionStats\x10\xf6\x07\x12\x10\n\x0bScriptDebug\x10\xf7\x07\x12\x11\n\x0cScriptExists\x10\xf8\x07\x12\x10\n\x0bScriptFlush\x10\xf9\x07\x12\x0f\n\nScriptKill\x10\xfa\x07\x12\x0f\n\nScriptLoad\x10\xfb\x07\x12\x0f\n\nScriptShow\x10\xfc\x07\x12\x0b\n\x06\x41\x63lCat\x10\xcd\x08\x12\x0f\n\nAclDelUser\x10\xce\x08\x12\x0e\n\tAclDryRun\x10\xcf\x08\x12\x0f\n\nAclGenPass\x10\xd0\x08\x12\x0f\n\nAclGetUser\x10\xd1\x08\x12\x0c\n\x07\x41\x63lList\x10\xd2\x08\x12\x0c\n\x07\x41\x63lLoad\x10\xd3\x08\x12\x0b\n\x06\x41\x63lLog\x10\xd4\x08\x12\x0c\n\x07\x41\x63lSave\x10\xd5\x08\x12\x0f\n\nAclSetSser\x10\xd6\x08\x12\r\n\x08\x41\x63lUsers\x10\xd7\x08\x12\x0e\n\tAclWhoami\x10\xd8\x08\x12\x11\n\x0c\x42gRewriteAof\x10\xd9\x08\x12\x0b\n\x06\x42gSave\x10\xda\x08\x12\r\n\x08\x43ommand_\x10\xdb\x08\x12\x11\n\x0c\x43ommandCount\x10\xdc\x08\x12\x10\n\x0b\x43ommandDocs\x10\xdd\x08\x12\x13\n\x0e\x43ommandGetKeys\x10\xde\x08\x12\x1b\n\x16\x43ommandGetKeysAndFlags\x10\xdf\x08\x12\x10\n\x0b\x43ommandInfo\x10\xe0\x08\x12\x10\n\x0b\x43ommandList\x10\xe1\x08\x12\x0e\n\tConfigGet\x10\xe2\x08\x12\x14\n\x0f\x43onfigResetStat\x10\xe3\x08\x12\x12\n\rConfigRewrite\x10\xe4\x08\x12\x0e\n\tConfigSet\x10\xe5\x08\x12\x0b\n\x06\x44\x42Size\x10\xe6\x08\x12\r\n\x08\x46\x61ilOver\x10\xe7\x08\x12\r\n\x08\x46lushAll\x10\xe8\x08\x12\x0c\n\x07\x46lushDB\x10\xe9\x08\x12\t\n\x04Info\x10\xea\x08\x12\r\n\x08LastSave\x10\xeb\x08\x12\x12\n\rLatencyDoctor\x10\xec\x08\x12\x11\n\x0cLatencyGraph\x10\xed\x08\x12\x15\n\x10LatencyHistogram\x10\xee\x08\x12\x13\n\x0eLatencyHistory\x10\xef\x08\x12\x12\n\rLatencyLatest\x10\xf0\x08\x12\x11\n\x0cLatencyReset\x10\xf1\x08\x12\x0b\n\x06Lolwut\x10\xf2\x08\x12\x11\n\x0cMemoryDoctor\x10\xf3\x08\x12\x16\n\x11MemoryMallocStats\x10\xf4\x08\x12\x10\n\x0bMemoryPurge\x10\xf5\x08\x12\x10\n\x0bMemoryStats\x10\xf6\x08\x12\x10\n\x0bMemoryUsage\x10\xf7\x08\x12\x0f\n\nModuleList\x10\xf8\x08\x12\x0f\n\nModuleLoad\x10\xf9\x08\x12\x11\n\x0cModuleLoadEx\x10\xfa\x08\x12\x11\n\x0cModuleUnload\x10\xfb\x08\x12\x0c\n\x07Monitor\x10\xfc\x08\x12\n\n\x05PSync\x10\xfd\x08\x12\r\n\x08ReplConf\x10\xfe\x08\x12\x0e\n\tReplicaOf\x10\xff\x08\x12\x12\n\rRestoreAsking\x10\x80\t\x12\t\n\x04Role\x10\x81\t\x12\t\n\x04Save\x10\x82\t\x12\r\n\x08ShutDown\x10\x83\t\x12\x0c\n\x07SlaveOf\x10\x84\t\x12\x0f\n\nSlowLogGet\x10\x85\t\x12\x0f\n\nSlowLogLen\x10\x86\t\x12\x11\n\x0cSlowLogReset\x10\x87\t\x12\x0b\n\x06SwapDb\x10\x88\t\x12\t\n\x04Sync\x10\x89\t\x12\t\n\x04Time\x10\x8a\t\x12\t\n\x04SAdd\x10\xb1\t\x12\n\n\x05SCard\x10\xb2\t\x12\n\n\x05SDiff\x10\xb3\t\x12\x0f\n\nSDiffStore\x10\xb4\t\x12\x0b\n\x06SInter\x10\xb5\t\x12\x0f\n\nSInterCard\x10\xb6\t\x12\x10\n\x0bSInterStore\x10\xb7\t\x12\x0e\n\tSIsMember\x10\xb8\t\x12\r\n\x08SMembers\x10\xb9\t\x12\x0f\n\nSMIsMember\x10\xba\t\x12\n\n\x05SMove\x10\xbb\t\x12\t\n\x04SPop\x10\xbc\t\x12\x10\n\x0bSRandMember\x10\xbd\t\x12\t\n\x04SRem\x10\xbe\t\x12\n\n\x05SScan\x10\xbf\t\x12\x0b\n\x06SUnion\x10\xc0\t\x12\x10\n\x0bSUnionStore\x10\xc1\t\x12\x0b\n\x06\x42ZMPop\x10\x95\n\x12\r\n\x08\x42ZPopMax\x10\x96\n\x12\r\n\x08\x42ZPopMin\x10\x97\n\x12\t\n\x04ZAdd\x10\x98\n\x12\n\n\x05ZCard\x10\x99\n\x12\x0b\n\x06ZCount\x10\x9a\n\x12\n\n\x05ZDiff\x10\x9b\n\x12\x0f\n\nZDiffStore\x10\x9c\n\x12\x0c\n\x07ZIncrBy\x10\x9d\n\x12\x0b\n\x06ZInter\x10\x9e\n\x12\x0f\n\nZInterCard\x10\x9f\n\x12\x10\n\x0bZInterStore\x10\xa0\n\x12\x0e\n\tZLexCount\x10\xa1\n\x12\n\n\x05ZMPop\x10\xa2\n\x12\x0c\n\x07ZMScore\x10\xa3\n\x12\x0c\n\x07ZPopMax\x10\xa4\n\x12\x0c\n\x07ZPopMin\x10\xa5\n\x12\x10\n\x0bZRandMember\x10\xa6\n\x12\x0b\n\x06ZRange\x10\xa7\n\x12\x10\n\x0bZRangeByLex\x10\xa8\n\x12\x12\n\rZRangeByScore\x10\xa9\n\x12\x10\n\x0bZRangeStore\x10\xaa\n\x12\n\n\x05ZRank\x10\xab\n\x12\t\n\x04ZRem\x10\xac\n\x12\x13\n\x0eZRemRangeByLex\x10\xad\n\x12\x14\n\x0fZRemRangeByRank\x10\xae\n\x12\x15\n\x10ZRemRangeByScore\x10\xaf\n\x12\x0e\n\tZRevRange\x10\xb0\n\x12\x13\n\x0eZRevRangeByLex\x10\xb1\n\x12\x15\n\x10ZRevRangeByScore\x10\xb2\n\x12\r\n\x08ZRevRank\x10\xb3\n\x12\n\n\x05ZScan\x10\xb4\n\x12\x0b\n\x06ZScore\x10\xb5\n\x12\x0b\n\x06ZUnion\x10\xb6\n\x12\x10\n\x0bZUnionStore\x10\xb7\n\x12\t\n\x04XAck\x10\xf9\n\x12\t\n\x04XAdd\x10\xfa\n\x12\x0f\n\nXAutoClaim\x10\xfb\n\x12\x0b\n\x06XClaim\x10\xfc\n\x12\t\n\x04XDel\x10\xfd\n\x12\x11\n\x0cXGroupCreate\x10\xfe\n\x12\x19\n\x14XGroupCreateConsumer\x10\xff\n\x12\x16\n\x11XGroupDelConsumer\x10\x80\x0b\x12\x12\n\rXGroupDestroy\x10\x81\x0b\x12\x10\n\x0bXGroupSetId\x10\x82\x0b\x12\x13\n\x0eXInfoConsumers\x10\x83\x0b\x12\x10\n\x0bXInfoGroups\x10\x84\x0b\x12\x10\n\x0bXInfoStream\x10\x85\x0b\x12\t\n\x04XLen\x10\x86\x0b\x12\r\n\x08XPending\x10\x87\x0b\x12\x0b\n\x06XRange\x10\x88\x0b\x12\n\n\x05XRead\x10\x89\x0b\x12\x0f\n\nXReadGroup\x10\x8a\x0b\x12\x0e\n\tXRevRange\x10\x8b\x0b\x12\x0b\n\x06XSetId\x10\x8c\x0b\x12\n\n\x05XTrim\x10\x8d\x0b\x12\x0b\n\x06\x41ppend\x10\xdd\x0b\x12\t\n\x04\x44\x65\x63r\x10\xde\x0b\x12\x0b\n\x06\x44\x65\x63rBy\x10\xdf\x0b\x12\x08\n\x03Get\x10\xe0\x0b\x12\x0b\n\x06GetDel\x10\xe1\x0b\x12\n\n\x05GetEx\x10\xe2\x0b\x12\r\n\x08GetRange\x10\xe3\x0b\x12\x0b\n\x06GetSet\x10\xe4\x0b\x12\t\n\x04Incr\x10\xe5\x0b\x12\x0b\n\x06IncrBy\x10\xe6\x0b\x12\x10\n\x0bIncrByFloat\x10\xe7\x0b\x12\x08\n\x03LCS\x10\xe8\x0b\x12\t\n\x04MGet\x10\xe9\x0b\x12\t\n\x04MSet\x10\xea\x0b\x12\x0b\n\x06MSetNX\x10\xeb\x0b\x12\x0b\n\x06PSetEx\x10\xec\x0b\x12\x08\n\x03Set\x10\xed\x0b\x12\n\n\x05SetEx\x10\xee\x0b\x12\n\n\x05SetNX\x10\xef\x0b\x12\r\n\x08SetRange\x10\xf0\x0b\x12\x0b\n\x06Strlen\x10\xf1\x0b\x12\x0b\n\x06Substr\x10\xf2\x0b\x12\x0c\n\x07\x44iscard\x10\xc1\x0c\x12\t\n\x04\x45xec\x10\xc2\x0c\x12\n\n\x05Multi\x10\xc3\x0c\x12\x0c\n\x07UnWatch\x10\xc4\x0c\x12\n\n\x05Watch\x10\xc5\x0c\x12\x12\n\rJsonArrAppend\x10\xd1\x0f\x12\x11\n\x0cJsonArrIndex\x10\xd2\x0f\x12\x12\n\rJsonArrInsert\x10\xd3\x0f\x12\x0f\n\nJsonArrLen\x10\xd4\x0f\x12\x0f\n\nJsonArrPop\x10\xd5\x0f\x12\x10\n\x0bJsonArrTrim\x10\xd6\x0f\x12\x0e\n\tJsonClear\x10\xd7\x0f\x12\x0e\n\tJsonDebug\x10\xd8\x0f\x12\x0c\n\x07JsonDel\x10\xd9\x0f\x12\x0f\n\nJsonForget\x10\xda\x0f\x12\x0c\n\x07JsonGet\x10\xdb\x0f\x12\r\n\x08JsonMGet\x10\xdc\x0f\x12\x12\n\rJsonNumIncrBy\x10\xdd\x0f\x12\x12\n\rJsonNumMultBy\x10\xde\x0f\x12\x10\n\x0bJsonObjKeys\x10\xdf\x0f\x12\x0f\n\nJsonObjLen\x10\xe0\x0f\x12\r\n\x08JsonResp\x10\xe1\x0f\x12\x0c\n\x07JsonSet\x10\xe2\x0f\x12\x12\n\rJsonStrAppend\x10\xe3\x0f\x12\x0f\n\nJsonStrLen\x10\xe4\x0f\x12\x0f\n\nJsonToggle\x10\xe5\x0f\x12\r\n\x08JsonType\x10\xe6\x0f\x12\x0b\n\x06\x46tList\x10\xb5\x10\x12\x10\n\x0b\x46tAggregate\x10\xb6\x10\x12\x0f\n\nFtAliasAdd\x10\xb7\x10\x12\x0f\n\nFtAliasDel\x10\xb8\x10\x12\x10\n\x0b\x46tAliasList\x10\xb9\x10\x12\x12\n\rFtAliasUpdate\x10\xba\x10\x12\r\n\x08\x46tCreate\x10\xbb\x10\x12\x10\n\x0b\x46tDropIndex\x10\xbc\x10\x12\x0e\n\tFtExplain\x10\xbd\x10\x12\x11\n\x0c\x46tExplainCli\x10\xbe\x10\x12\x0b\n\x06\x46tInfo\x10\xbf\x10\x12\x0e\n\tFtProfile\x10\xc0\x10\x12\r\n\x08\x46tSearch\x10\xc1\x10\x62\x06proto3')
|
|
18
|
+
|
|
19
|
+
_globals = globals()
|
|
20
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
21
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protobuf.command_request_pb2', _globals)
|
|
22
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
23
|
+
DESCRIPTOR._options = None
|
|
24
|
+
_globals['_SIMPLEROUTES']._serialized_start=1941
|
|
25
|
+
_globals['_SIMPLEROUTES']._serialized_end=1999
|
|
26
|
+
_globals['_SLOTTYPES']._serialized_start=2001
|
|
27
|
+
_globals['_SLOTTYPES']._serialized_end=2038
|
|
28
|
+
_globals['_REQUESTTYPE']._serialized_start=2041
|
|
29
|
+
_globals['_REQUESTTYPE']._serialized_end=8291
|
|
30
|
+
_globals['_SLOTIDROUTE']._serialized_start=51
|
|
31
|
+
_globals['_SLOTIDROUTE']._serialized_end=128
|
|
32
|
+
_globals['_SLOTKEYROUTE']._serialized_start=130
|
|
33
|
+
_globals['_SLOTKEYROUTE']._serialized_end=209
|
|
34
|
+
_globals['_BYADDRESSROUTE']._serialized_start=211
|
|
35
|
+
_globals['_BYADDRESSROUTE']._serialized_end=255
|
|
36
|
+
_globals['_ROUTES']._serialized_start=258
|
|
37
|
+
_globals['_ROUTES']._serialized_end=504
|
|
38
|
+
_globals['_COMMAND']._serialized_start=507
|
|
39
|
+
_globals['_COMMAND']._serialized_end=689
|
|
40
|
+
_globals['_COMMAND_ARGSARRAY']._serialized_start=656
|
|
41
|
+
_globals['_COMMAND_ARGSARRAY']._serialized_end=681
|
|
42
|
+
_globals['_SCRIPTINVOCATIONPOINTERS']._serialized_start=692
|
|
43
|
+
_globals['_SCRIPTINVOCATIONPOINTERS']._serialized_end=820
|
|
44
|
+
_globals['_SCRIPTINVOCATION']._serialized_start=822
|
|
45
|
+
_globals['_SCRIPTINVOCATION']._serialized_end=882
|
|
46
|
+
_globals['_BATCH']._serialized_start=885
|
|
47
|
+
_globals['_BATCH']._serialized_end=1157
|
|
48
|
+
_globals['_CLUSTERSCAN']._serialized_start=1160
|
|
49
|
+
_globals['_CLUSTERSCAN']._serialized_end=1340
|
|
50
|
+
_globals['_UPDATECONNECTIONPASSWORD']._serialized_start=1342
|
|
51
|
+
_globals['_UPDATECONNECTIONPASSWORD']._serialized_end=1428
|
|
52
|
+
_globals['_COMMANDREQUEST']._serialized_start=1431
|
|
53
|
+
_globals['_COMMANDREQUEST']._serialized_end=1939
|
|
54
|
+
# @@protoc_insertion_point(module_scope)
|
{glide → glide_shared}/routes.py
RENAMED
|
@@ -3,9 +3,13 @@
|
|
|
3
3
|
from enum import Enum
|
|
4
4
|
from typing import Optional
|
|
5
5
|
|
|
6
|
-
from
|
|
7
|
-
from
|
|
8
|
-
|
|
6
|
+
from glide_shared.exceptions import RequestError
|
|
7
|
+
from glide_shared.protobuf.command_request_pb2 import (
|
|
8
|
+
CommandRequest,
|
|
9
|
+
Routes,
|
|
10
|
+
SimpleRoutes,
|
|
11
|
+
)
|
|
12
|
+
from glide_shared.protobuf.command_request_pb2 import SlotTypes as ProtoSlotTypes
|
|
9
13
|
|
|
10
14
|
|
|
11
15
|
class SlotType(Enum):
|
|
@@ -125,23 +129,33 @@ def to_protobuf_slot_type(slot_type: SlotType) -> ProtoSlotTypes.ValueType:
|
|
|
125
129
|
)
|
|
126
130
|
|
|
127
131
|
|
|
128
|
-
def
|
|
132
|
+
def build_protobuf_route(route: Optional[Route]) -> Optional[Routes]:
|
|
129
133
|
if route is None:
|
|
130
|
-
return
|
|
131
|
-
|
|
132
|
-
|
|
134
|
+
return None
|
|
135
|
+
|
|
136
|
+
protobuf_route = Routes()
|
|
137
|
+
if isinstance(route, AllNodes):
|
|
138
|
+
protobuf_route.simple_routes = SimpleRoutes.AllNodes
|
|
133
139
|
elif isinstance(route, AllPrimaries):
|
|
134
|
-
|
|
140
|
+
protobuf_route.simple_routes = SimpleRoutes.AllPrimaries
|
|
135
141
|
elif isinstance(route, RandomNode):
|
|
136
|
-
|
|
142
|
+
protobuf_route.simple_routes = SimpleRoutes.Random
|
|
137
143
|
elif isinstance(route, SlotKeyRoute):
|
|
138
|
-
|
|
139
|
-
|
|
144
|
+
protobuf_route.slot_key_route.slot_type = to_protobuf_slot_type(route.slot_type)
|
|
145
|
+
protobuf_route.slot_key_route.slot_key = route.slot_key
|
|
140
146
|
elif isinstance(route, SlotIdRoute):
|
|
141
|
-
|
|
142
|
-
|
|
147
|
+
protobuf_route.slot_id_route.slot_type = to_protobuf_slot_type(route.slot_type)
|
|
148
|
+
protobuf_route.slot_id_route.slot_id = route.slot_id
|
|
143
149
|
elif isinstance(route, ByAddressRoute):
|
|
144
|
-
|
|
145
|
-
|
|
150
|
+
protobuf_route.by_address_route.host = route.host
|
|
151
|
+
protobuf_route.by_address_route.port = route.port
|
|
146
152
|
else:
|
|
147
153
|
raise RequestError(f"Received invalid route type: {type(route)}")
|
|
154
|
+
|
|
155
|
+
return protobuf_route
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def set_protobuf_route(request: CommandRequest, route: Optional[Route]) -> None:
|
|
159
|
+
protobuf_route = build_protobuf_route(route)
|
|
160
|
+
if protobuf_route:
|
|
161
|
+
request.route.CopyFrom(protobuf_route)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: valkey-glide
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.0rc2
|
|
4
4
|
Classifier: Topic :: Database
|
|
5
5
|
Classifier: Topic :: Utilities
|
|
6
6
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
@@ -9,13 +9,10 @@ Classifier: Topic :: Software Development
|
|
|
9
9
|
Classifier: Programming Language :: Rust
|
|
10
10
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
11
11
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
12
|
-
Classifier: Framework :: AsyncIO
|
|
13
|
-
Classifier: Framework :: Trio
|
|
14
|
-
Classifier: Framework :: AnyIO
|
|
15
12
|
Requires-Dist: anyio>=4.9.0
|
|
13
|
+
Requires-Dist: protobuf>=6.20
|
|
16
14
|
Requires-Dist: typing-extensions>=4.8.0; python_version < '3.11'
|
|
17
|
-
|
|
18
|
-
Summary: An open source Valkey client library that supports Valkey and Redis open source 6.2, 7.0, 7.2 and 8.0.
|
|
15
|
+
Summary: Valkey GLIDE Async client. Supports Valkey and Redis OSS.
|
|
19
16
|
Author: Valkey GLIDE Maintainers
|
|
20
17
|
License: Apache-2.0
|
|
21
18
|
Requires-Python: >=3.9
|
|
@@ -76,67 +73,131 @@ Valkey GLIDE transparently supports both the `asyncio` and `trio` concurrency fr
|
|
|
76
73
|
|
|
77
74
|
## Installation and Setup
|
|
78
75
|
|
|
79
|
-
###
|
|
76
|
+
### ✅ Async Client
|
|
80
77
|
|
|
81
|
-
To install
|
|
78
|
+
To install the async version:
|
|
82
79
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
80
|
+
```bash
|
|
81
|
+
pip install valkey-glide
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Verify installation:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
python3
|
|
88
|
+
>>> import glide
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### ✅ Sync Client
|
|
92
|
+
|
|
93
|
+
To install the sync version:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
pip install valkey-glide-sync
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Verify installation:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
python3
|
|
103
|
+
>>> import glide_sync
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
93
107
|
|
|
94
108
|
## Basic Examples
|
|
95
109
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
### 🔁 Async Client
|
|
111
|
+
|
|
112
|
+
### ✅ Async Cluster Mode
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
import asyncio
|
|
116
|
+
from glide import GlideClusterClientConfiguration, NodeAddress, GlideClusterClient
|
|
117
|
+
|
|
118
|
+
async def test_cluster_client():
|
|
119
|
+
addresses = [NodeAddress("address.example.com", 6379)]
|
|
120
|
+
# It is recommended to set a timeout for your specific use case
|
|
121
|
+
config = GlideClusterClientConfiguration(addresses, request_timeout=500) # 500ms timeout
|
|
122
|
+
client = await GlideClusterClient.create(config)
|
|
123
|
+
set_result = await client.set("foo", "bar")
|
|
124
|
+
print(f"Set response is {set_result}")
|
|
125
|
+
get_result = await client.get("foo")
|
|
126
|
+
print(f"Get response is {get_result}")
|
|
127
|
+
|
|
128
|
+
asyncio.run(test_cluster_client())
|
|
114
129
|
```
|
|
115
130
|
|
|
116
|
-
#### Standalone Mode
|
|
117
|
-
|
|
118
|
-
```python
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
Get response is bar
|
|
131
|
+
#### ✅ Async Standalone Mode
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
import asyncio
|
|
135
|
+
from glide import GlideClientConfiguration, NodeAddress, GlideClient
|
|
136
|
+
|
|
137
|
+
async def test_standalone_client():
|
|
138
|
+
addresses = [
|
|
139
|
+
NodeAddress("server_primary.example.com", 6379),
|
|
140
|
+
NodeAddress("server_replica.example.com", 6379)
|
|
141
|
+
]
|
|
142
|
+
# It is recommended to set a timeout for your specific use case
|
|
143
|
+
config = GlideClientConfiguration(addresses, request_timeout=500) # 500ms timeout
|
|
144
|
+
client = await GlideClient.create(config)
|
|
145
|
+
set_result = await client.set("foo", "bar")
|
|
146
|
+
print(f"Set response is {set_result}")
|
|
147
|
+
get_result = await client.get("foo")
|
|
148
|
+
print(f"Get response is {get_result}")
|
|
149
|
+
|
|
150
|
+
asyncio.run(test_standalone_client())
|
|
137
151
|
```
|
|
138
152
|
|
|
139
|
-
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
### 🔂 Sync Client
|
|
156
|
+
|
|
157
|
+
#### ✅ Sync Cluster Mode
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
from glide_sync import GlideClusterClientConfiguration, NodeAddress, GlideClusterClient
|
|
161
|
+
|
|
162
|
+
def test_cluster_client():
|
|
163
|
+
addresses = [NodeAddress("address.example.com", 6379)]
|
|
164
|
+
# It is recommended to set a timeout for your specific use case
|
|
165
|
+
config = GlideClusterClientConfiguration(addresses, request_timeout=500) # 500ms timeout
|
|
166
|
+
client = GlideClusterClient.create(config)
|
|
167
|
+
set_result = client.set("foo", "bar")
|
|
168
|
+
print(f"Set response is {set_result}")
|
|
169
|
+
get_result = client.get("foo")
|
|
170
|
+
print(f"Get response is {get_result}")
|
|
171
|
+
|
|
172
|
+
test_cluster_client()
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
#### ✅ Sync Standalone Mode
|
|
176
|
+
|
|
177
|
+
```python
|
|
178
|
+
from glide_sync import GlideClientConfiguration, NodeAddress, GlideClient
|
|
179
|
+
|
|
180
|
+
def test_standalone_client():
|
|
181
|
+
addresses = [
|
|
182
|
+
NodeAddress("server_primary.example.com", 6379),
|
|
183
|
+
NodeAddress("server_replica.example.com", 6379)
|
|
184
|
+
]
|
|
185
|
+
# It is recommended to set a timeout for your specific use case
|
|
186
|
+
config = GlideClientConfiguration(addresses, request_timeout=500) # 500ms timeout
|
|
187
|
+
client = GlideClient.create(config)
|
|
188
|
+
set_result = client.set("foo", "bar")
|
|
189
|
+
print(f"Set response is {set_result}")
|
|
190
|
+
get_result = client.get("foo")
|
|
191
|
+
print(f"Get response is {get_result}")
|
|
192
|
+
|
|
193
|
+
test_standalone_client()
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
For complete examples with error handling, please refer to:
|
|
199
|
+
- [Async Cluster Example](https://github.com/valkey-io/valkey-glide/blob/main/examples/python/cluster_example.py)
|
|
200
|
+
- [Async Standalone Example](https://github.com/valkey-io/valkey-glide/blob/main/examples/python/standalone_example.py)
|
|
140
201
|
|
|
141
202
|
|
|
142
203
|
### Building & Testing
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
valkey_glide-2.1.0rc2.dist-info/METADATA,sha256=L-6ijxqrcX8M-7wPnlDsySJuTqq7QGhovD2ZyY-oafo,6978
|
|
2
|
+
valkey_glide-2.1.0rc2.dist-info/WHEEL,sha256=YB4nIpEaVbQYtEelAR0MsnJWBlMXhW33ztHgM37Axhc,106
|
|
3
|
+
glide/async_commands/glide_json.py,sha256=H5dnB4vJkGPpNXJZhhVyPQoTSbkN_chq5Xw6tkP0wMQ,60410
|
|
4
|
+
glide/async_commands/ft.py,sha256=1v96sBCgiXtPbj85ZurY3ruLCmok3cPoaIXSiJBEv9Y,16849
|
|
5
|
+
glide/async_commands/__init__.py,sha256=_tbTAFATlzp4L2qe-H77PpAQK-16VsV-y7uKNUKLC_o,136
|
|
6
|
+
glide/async_commands/core.py,sha256=RdfOTxpvgY4sQsSL3PqHi-05CV_AmDhsZad-ALg4EHU,328057
|
|
7
|
+
glide/async_commands/standalone_commands.py,sha256=y6hH6iE4ngAJlB9JTa1y_ZHRmM1MDMvWQKOHghyN73E,39450
|
|
8
|
+
glide/async_commands/cluster_commands.py,sha256=Lji6eo2LaoXwy4Ha3e6bcGOHyMQHdDBiSQLt1kf9gGo,60129
|
|
9
|
+
glide/__init__.py,sha256=r0VyTcuIdVzXTTZW6TmWwCsTCIg54ciyba1iDM8PFVQ,7055
|
|
10
|
+
glide/glide.pyi,sha256=6JIpAeADQ-1fU1Mp99pyh7aJORDxAAdtQebV5aByIVI,2093
|
|
11
|
+
glide/opentelemetry.py,sha256=vg9fTYXj7_rni7hVBkZBJ1ZN4-RSGde5fOH4DsnVx_4,7476
|
|
12
|
+
glide/glide_client.py,sha256=4RKpPvaci7XmlFgoI5s__P3dATk8sM2QcpUBFnFVq78,32405
|
|
13
|
+
glide/logger.py,sha256=5-bAhfH_6hYEXdcgBR9R_wdeffSLHqEN-aQeIyMHnYY,4103
|
|
14
|
+
glide_shared/__init__.py,sha256=Jgl61tWsX5n1F1a5_rxPvWBuMkBYtJ7gCLFRDPwGV8o,7141
|
|
15
|
+
glide_shared/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
+
glide_shared/commands/batch.py,sha256=HxvswR5epj2A9nx-i69xzlO0L3jRWQNAfOg9pmmg3dE,246833
|
|
17
|
+
glide_shared/commands/batch_options.py,sha256=i2lDCLhMzUvpArb2bxX16xu7X-im0hLPaLXALkxWeQ8,11130
|
|
18
|
+
glide_shared/commands/bitmap.py,sha256=ZHGLcKBP7RADtANqIR7PWdIW_gfDBFgpkIsQ-T4QFBQ,10125
|
|
19
|
+
glide_shared/commands/command_args.py,sha256=55vpSxeQr8wFU7olkFTEecl66wPk1g6vWxVYj16UvXs,2529
|
|
20
|
+
glide_shared/commands/core_options.py,sha256=Y_1dFbW50hIHl16xkF4gnJnX_o2_f8neyXNjmc8KCKA,12607
|
|
21
|
+
glide_shared/commands/server_modules/ft_options/ft_aggregate_options.py,sha256=8b3sfsASS3Dr4eSNeRtn28gx8PjrRPOhoXZyoOmVF18,9928
|
|
22
|
+
glide_shared/commands/server_modules/ft_options/ft_constants.py,sha256=r9uLAExg2qThjwOBC8LxqXBITF0fwa5xfnD7EXnyPrw,1704
|
|
23
|
+
glide_shared/commands/server_modules/ft_options/ft_create_options.py,sha256=ll8AQPRe0_v10BdQXfCdN03bml3TEYbTWdaV3L5J_QU,13738
|
|
24
|
+
glide_shared/commands/server_modules/ft_options/ft_profile_options.py,sha256=yIapUTI_f7EI75BcVff9GpAZTT_GD1HS7QVhqjnyV6k,4283
|
|
25
|
+
glide_shared/commands/server_modules/ft_options/ft_search_options.py,sha256=imrnNhBaVsYjlknQpqitXDePoF8sXYdqQS4Ek_DXf7w,4872
|
|
26
|
+
glide_shared/commands/server_modules/json_batch.py,sha256=uqkLXPCOkzp53GfffnII1xA9ga0DefLYPnQ8ta899HE,36651
|
|
27
|
+
glide_shared/commands/server_modules/json_options.py,sha256=0dFk3EEtcERpmkNoO8930MqfEHLVaQRBRcg3CpL7nmE,3042
|
|
28
|
+
glide_shared/commands/sorted_set.py,sha256=hnXud0Ewn1uBdM6T2xzfCneZWfTeP-2U0XfEDGNCqlI,11466
|
|
29
|
+
glide_shared/commands/stream.py,sha256=MlllDP3teVX8BOB4ANb0JFC4RkUp8SQLCGlGMSPU_s4,15589
|
|
30
|
+
glide_shared/config.py,sha256=UvbRFMSVC8rVux895RG9mLsiIC_8waavc3OfM5bnUQs,33108
|
|
31
|
+
glide_shared/constants.py,sha256=pS7Xbjvq_qG3mlolVf51cCAGzXRhGdhvGIs2QK3R_b4,4375
|
|
32
|
+
glide_shared/exceptions.py,sha256=Z_szeAE-m1gsoBr5bPQymF6W6wiaunoHvBrt1dHbiYw,1852
|
|
33
|
+
glide_shared/protobuf/command_request_pb2.py,sha256=AHS04ukttbfhXQtEsW5_wAPUS6TzGMd5uqcrSt7lWJo,19320
|
|
34
|
+
glide_shared/protobuf/connection_request_pb2.py,sha256=b3jDmMetSHUrZGmQd8b5DooZZQ_eIbcWvbu1nFgVW7Y,5365
|
|
35
|
+
glide_shared/protobuf/response_pb2.py,sha256=oT2GHUwjrxvBVdINRKCvb3_BFN0Fq2wqwHbTj7KAX2E,2110
|
|
36
|
+
glide_shared/protobuf_codec.py,sha256=xwt4-D4WbvNIY_vjOd-00c73HOyNjWq7nN-Z718PBVA,3667
|
|
37
|
+
glide_shared/routes.py,sha256=HFccxCzXQXSi6Y1HFsRUm9ZcbJgCrar6y6uOWpGJWe0,4746
|
|
38
|
+
glide/glide.cpython-310-darwin.so,sha256=c6AwrdNsLTlYgTZgiNFbzhAjvzy4pUNJ_QPqCbMNXO4,9924560
|
|
39
|
+
valkey_glide-2.1.0rc2.dist-info/RECORD,,
|