ServiceStack.Redis
Provides thread-safe retrieval of redis clients since each client is a new one.
Allows the configuration of different ReadWrite and ReadOnly hosts
Provides thread-safe retrieval of redis clients since each client is a new one.
Allows the configuration of different ReadWrite and ReadOnly hosts
BasicRedisClientManager for ICacheClient
For more interoperability I'm also implementing the ICacheClient on
this cache client manager which has the affect of calling
GetCacheClient() for all write operations and GetReadOnlyCacheClient()
for the read ones.
This works well for master-replica replication scenarios where you have
1 master that replicates to multiple read replicas.
Gets or sets object key prefix.
Hosts can be an IP Address or Hostname in the format: host[:port]
e.g. 127.0.0.1:6379
default is: localhost:6379
The write hosts.
The read hosts.
Returns a Read/Write client (The default) using the hosts defined in ReadWriteHosts
Returns a ReadOnly client using the hosts defined in ReadOnlyHosts.
BufferedReader is a minimal buffer implementation that provides
efficient sync and async access for byte-by-byte consumption;
like BufferedStream, but with the async part
A complete redis command, with method to send command, receive response, and run callback on success or failure
A complete redis command, with method to send command, receive response, and run callback on success or failure
Wrap the common redis set operations under a ICollection[string] interface.
Wrap the common redis set operations under a ICollection[string] interface.
Wrap the common redis set operations under a ICollection[string] interface.
Allows you to get Redis value operations to operate against POCO types.
Use this to share the same redis connection with another
The client.
Queue of commands for redis typed client
Adds support for Redis Transactions (i.e. MULTI/EXEC/DISCARD operations).
Adds support for Redis Transactions (i.e. MULTI/EXEC/DISCARD operations).
Put "QUEUED" messages at back of queue
Issue exec command (not queued)
callback for after result count is read in
Pipeline for redis typed client
Pipeline for redis typed client
A complete redis command, with method to send command, receive response, and run callback on success or failure
A complete redis command, with method to send command, receive response, and run callback on success or failure
General purpose pipeline
Flush send buffer, and read responses
Redis command that does not get queued
Redis command that does not get queued
Redis operation (transaction/pipeline) that allows queued commands to be completed
Provides thread-safe pooling of redis client connections.
Allows load-balancing of master-write and read-replica hosts, ideal for
1 master and multiple replicated read replicas.
Use previous client resolving behavior
Gets or sets object key prefix.
Hosts can be an IP Address or Hostname in the format: host[:port]
e.g. 127.0.0.1:6379
default is: localhost:6379
The write hosts.
The read hosts.
The config.
Returns a Read/Write client (The default) using the hosts defined in ReadWriteHosts
Called within a lock
Returns a ReadOnly client using the hosts defined in ReadOnlyHosts.
Called within a lock
Disposes the read only client.
The client.
Disposes the write client.
The client.
Manage a client acquired from the PooledRedisClientManager
Dispose method will release the client back to the pool.
wrap the acquired client
access the wrapped client
release the wrapped client back to the pool
The client wraps the native redis operations into a more readable c# API.
Where possible these operations are also exposed in common c# interfaces,
e.g. RedisClient.Lists => IList[string]
RedisClient.Sets => ICollection[string]
Access this instance for async usage
Creates a new instance of the Redis Client from NewFactoryFn.
Store object fields as a dictionary of values in a Hash value.
Conversion to Dictionary can be customized with RedisClient.ConvertToHashFn
Returns key with automatic object id detection in provided value with generic type.
Returns key with explicit object id.
Returns key with explicit object type and id.
Wrap the common redis set operations under a ICollection[string] interface.
Wrap the common redis list operations under a IList[string] interface.
For interoperability GetCacheClient() and GetReadOnlyCacheClient()
return an ICacheClient wrapper around the redis manager which has the affect of calling
GetClient() for all write operations and GetReadOnlyClient() for the read ones.
This works well for master-replica replication scenarios where you have
1 master that replicates to multiple read replicas.
Ignore dispose on RedisClientsManager, which should be registered as a singleton
Wrap the common redis set operations under a ICollection[string] interface.
Useful wrapper IRedisClientsManager to cut down the boiler plate of most IRedisClient access
Useful wrapper IRedisClientsManager to cut down the boiler plate of most IRedisClient access
Creates a PubSubServer that uses a background thread to listen and process for
Redis Pub/Sub messages published to the specified channel.
Use optional callbacks to listen for message, error and life-cycle events.
Callbacks can be assigned later, then call Start() for PubSubServer to start listening for messages
Wrap the common redis set operations under a ICollection[string] interface.
Factory used to Create `RedisClient` instances
The default RedisClient Socket ConnectTimeout (default -1, None)
The default RedisClient Socket SendTimeout (default -1, None)
The default RedisClient Socket ReceiveTimeout (default -1, None)
Default Idle TimeOut before a connection is considered to be stale (default 240 secs)
The default RetryTimeout for auto retry of failed operations (default 10,000ms)
Default Max Pool Size for Pooled Redis Client Managers (default none)
The default pool size multiplier if no pool size is specified (default 50)
The BackOff multiplier failed Auto Retries starts from (default 10ms)
The Byte Buffer Size to combine Redis Operations within (1450 bytes)
The Byte Buffer Size for Operations to use a byte buffer pool (default 500kb)
Batch size of keys to include in a single Redis Command (e.g. DEL k1 k2...)
Whether Connections to Master hosts should be verified they're still master instances (default true)
Whether to retry re-connecting on same connection if not a master instance (default true)
For Managed Services (e.g. AWS ElastiCache) which eventually restores master instances on same host
The ConnectTimeout on clients used to find the next available host (default 200ms)
Skip ServerVersion Checks by specifying Min Version number, e.g: 2.8.12 => 2812, 2.9.1 => 2910
How long to hold deactivated clients for before disposing their connection (default 0 seconds)
Dispose of deactivated Clients immediately with TimeSpan.Zero
Whether Debug Logging should log detailed Redis operations (default false)
Assert all access using pooled RedisClient instance should be limited to same thread.
Captures StackTrace so is very slow, use only for debugging connection issues.
Resets Redis Config and Redis Stats back to default values
ACL Username
Redis-specific exception. Thrown if unable to connect to Redis server due to socket exception, for example.
Provides thread-safe pooling of redis client connections. All connections are treated as read and write hosts.
Returns a Read/Write client (The default) using the hosts defined in ReadWriteHosts
Called within a lock
Disposes the write client.
The client.
Configuration class for the RedisManagerPool
Default pool size used by every new instance of . (default: 40)
Maximum amount of s created by the .
This class contains all the common operations for the RedisClient.
The client contains a 1:1 mapping of c# methods to redis operations of the same name.
Not threadsafe, use a pooled manager!
All redis calls on a single instances write to the same Socket.
If used in multiple threads (or async Tasks) at the same time you will find
that commands are not executed properly by redis and Servicestack wont be able to (json) serialize
the data that comes back.
Used to manage connection pooling
Gets or sets object key prefix.
ACL Username
Requires custom result parsing
Number of results
Command to set multiple binary safe arguments
Send command outside of managed Write Buffer
Called before returning pooled client/socket
reset buffer index in send buffer
Callback fired on each message received, handle with (channel, msg) => ...
Change to use a different IRedisClientsManager
Configure the Redis Connection String to use for a Redis Instance Host
Configure the Redis Connection String to use for a Redis Sentinel Host
The configured Redis Client Manager this Sentinel managers
Fired when Sentinel fails over the Redis Client Manager to a new master
Fired when the Redis Sentinel Worker connection fails
Fired when the Sentinel worker receives a message from the Sentinel Subscription
Map the internal IP's returned by Sentinels to its external IP
Whether to routinely scan for other sentinel hosts (default true)
What interval to scan for other sentinel hosts (default 10 mins)
How long to wait after failing before connecting to next redis instance (default 250ms)
How long to retry connecting to hosts before throwing (default 60 secs)
How long to wait after consecutive failed connection attempts to master before forcing
a Sentinel to failover the current master (default 60 secs)
The Max Connection time for Sentinel Worker (default 250ms)
The Max TCP Socket Receive time for Sentinel Worker (default 250ms)
The Max TCP Socket Send time for Sentinel Worker (default 250ms)
Reset client connections when Sentinel reports redis instance is subjectively down (default true)
Reset client connections when Sentinel reports redis instance is objectively down (default true)
Initialize Sentinel Subscription and Configure Redis ClientsManager
Check if GetValidSentinel should try the next sentinel server
This will be true if the failures is less than either RedisSentinel.MaxFailures or the # of sentinels, whatever is greater
Event that is fired when the sentinel subscription raises an event
Don't immediately kill connections of active clients after failover to give them a chance to dispose gracefully.
Deactivating clients are automatically cleared from the pool.
Total number of commands sent
Number of times the Redis Client Managers have FailoverTo() either by sentinel or manually
Number of times a Client was deactivated from the pool, either by FailoverTo() or exceptions on client
Number of times connecting to a Sentinel has failed
Number of times we've forced Sentinel to failover to another master due to
consecutive errors beyond sentinel.WaitBeforeForcingMasterFailover
Number of times a connecting to a reported Master wasn't actually a Master
Number of times no Masters could be found in any of the configured hosts
Number of Redis Client instances created with RedisConfig.ClientFactory
Number of times a Redis Client was created outside of pool, either due to overflow or reserved slot was overridden
Number of times Redis Sentinel reported a Subjective Down (sdown)
Number of times Redis Sentinel reported an Objective Down (sdown)
Number of times a Redis Request was retried due to Socket or Retryable exception
Number of times a Request succeeded after it was retried
Number of times a Retry Request failed after exceeding RetryTimeout
Total number of deactivated clients that are pending being disposed
Provides a redis connection pool that can be sharded
logical name
An arbitrary weight relative to other nodes
logical name
An arbitrary weight relative to other nodes
redis nodes
Provides sharding of redis client connections.
uses consistent hashing to distribute keys across connection pools
maps a key to a redis connection pool
key to map
a redis connection pool
Adds a node and maps points across the circle
node to add
An arbitrary number, specifies how often it occurs relative to other targets.
A variation of Binary Search algorithm. Given a number, matches the next highest number from the sorted array.
If a higher number does not exist, then the first number in the array is returned.
a sorted array to perform the search
number to find the next highest number against
next highest number
Given a key, generates an unsigned 64 bit hash code using MD5
Provides access to the method reflection data as part of the before/after event
Stores details about the context in which an IRedisClient is allocated.
Represents a generic collection of key/value pairs that are ordered independently of the key and value.
The type of the keys in the dictionary
The type of the values in the dictionary
Adds an entry with the specified key and value into the IOrderedDictionary<TKey,TValue> collection with the lowest available index.
The key of the entry to add.
The value of the entry to add.
The index of the newly added entry
You can also use the property to add new elements by setting the value of a key that does not exist in the IOrderedDictionary<TKey,TValue> collection; however, if the specified key already exists in the IOrderedDictionary<TKey,TValue>, setting the property overwrites the old value. In contrast, the method does not modify existing elements.
An element with the same key already exists in the IOrderedDictionary<TKey,TValue>
The IOrderedDictionary<TKey,TValue> is read-only.
-or-
The IOrderedDictionary<TKey,TValue> has a fized size.
Inserts a new entry into the IOrderedDictionary<TKey,TValue> collection with the specified key and value at the specified index.
The zero-based index at which the element should be inserted.
The key of the entry to add.
The value of the entry to add. The value can be if the type of the values in the dictionary is a reference type.
is less than 0.
-or-
is greater than .
An element with the same key already exists in the IOrderedDictionary<TKey,TValue>.
The IOrderedDictionary<TKey,TValue> is read-only.
-or-
The IOrderedDictionary<TKey,TValue> has a fized size.
Gets or sets the value at the specified index.
The zero-based index of the value to get or set.
The value of the item at the specified index.
is less than 0.
-or-
is equal to or greater than .
distributed lock class that follows the Resource Allocation Is Initialization pattern
Lock
in seconds
in seconds
unlock
acquire distributed, non-reentrant lock on key
global key for this lock
timeout for acquiring lock
timeout for lock, in seconds (stored as value against lock key)
unlock key
Distributed lock interface
Distributed lock interface
Locking strategy interface
This class manages a read lock for a local readers/writer lock,
using the Resource Acquisition Is Initialization pattern
RAII initialization
RAII disposal
This class manages a write lock for a local readers/writer lock,
using the Resource Acquisition Is Initialization pattern
RAII disposal
serialize/deserialize arbitrary objects
(objects must be serializable)
Serialize object to buffer
serializable object
Deserialize buffer to object
byte array to deserialize
Optimized implementation. Primitive types are manually serialized, the rest are serialized using binary serializer />.
serialize value and wrap with
Unwrap object wrapped in
Represents a generic collection of key/value pairs that are ordered independently of the key and value.
The type of the keys in the dictionary
The type of the values in the dictionary
Initializes a new instance of the OrderedDictionary<TKey,TValue> class.
Initializes a new instance of the OrderedDictionary<TKey,TValue> class using the specified initial capacity.
The initial number of elements that the OrderedDictionary<TKey,TValue> can contain.
is less than 0
Initializes a new instance of the OrderedDictionary<TKey,TValue> class using the specified comparer.
The IEqualityComparer<TKey> to use when comparing keys, or to use the default EqualityComparer<TKey> for the type of the key.
Initializes a new instance of the OrderedDictionary<TKey,TValue> class using the specified initial capacity and comparer.
The initial number of elements that the OrderedDictionary<TKey,TValue> collection can contain.
The IEqualityComparer<TKey> to use when comparing keys, or to use the default EqualityComparer<TKey> for the type of the key.
is less than 0
Converts the object passed as a key to the key type of the dictionary
The key object to check
The key object, cast as the key type of the dictionary
is .
The key type of the OrderedDictionary<TKey,TValue> is not in the inheritance hierarchy of .
Converts the object passed as a value to the value type of the dictionary
The object to convert to the value type of the dictionary
The value object, converted to the value type of the dictionary
is , and the value type of the OrderedDictionary<TKey,TValue> is a value type.
The value type of the OrderedDictionary<TKey,TValue> is not in the inheritance hierarchy of .
Gets the dictionary object that stores the keys and values
The dictionary object that stores the keys and values for the OrderedDictionary<TKey,TValue>
Accessing this property will create the dictionary object if necessary
Gets the list object that stores the key/value pairs.
The list object that stores the key/value pairs for the OrderedDictionary<TKey,TValue>
Accessing this property will create the list object if necessary.
Inserts a new entry into the OrderedDictionary<TKey,TValue> collection with the specified key and value at the specified index.
The zero-based index at which the element should be inserted.
The key of the entry to add.
The value of the entry to add. The value can be if the type of the values in the dictionary is a reference type.
is less than 0.
-or-
is greater than .
is .
An element with the same key already exists in the OrderedDictionary<TKey,TValue>.
Inserts a new entry into the OrderedDictionary<TKey,TValue> collection with the specified key and value at the specified index.
The zero-based index at which the element should be inserted.
The key of the entry to add.
The value of the entry to add. The value can be if the type of the values in the dictionary is a reference type.
is less than 0.
-or-
is greater than .
is .
-or-
is , and the value type of the OrderedDictionary<TKey,TValue> is a value type.
The key type of the OrderedDictionary<TKey,TValue> is not in the inheritance hierarchy of .
-or-
The value type of the OrderedDictionary<TKey,TValue> is not in the inheritance hierarchy of .
-or-
An element with the same key already exists in the OrderedDictionary<TKey,TValue>.
Removes the entry at the specified index from the OrderedDictionary<TKey,TValue> collection.
The zero-based index of the entry to remove.
is less than 0.
-or-
index is equal to or greater than .
Gets or sets the value at the specified index.
The zero-based index of the value to get or set.
The value of the item at the specified index.
is less than 0.
-or-
index is equal to or greater than .
Gets or sets the value at the specified index.
The zero-based index of the value to get or set.
The value of the item at the specified index.
is less than 0.
-or-
index is equal to or greater than .
is a null reference, and the value type of the OrderedDictionary<TKey,TValue> is a value type.
The value type of the OrderedDictionary<TKey,TValue> is not in the inheritance hierarchy of .
Adds an entry with the specified key and value into the OrderedDictionary<TKey,TValue> collection with the lowest available index.
The key of the entry to add.
The value of the entry to add. This value can be .
A key cannot be , but a value can be.
You can also use the property to add new elements by setting the value of a key that does not exist in the OrderedDictionary<TKey,TValue> collection; however, if the specified key already exists in the OrderedDictionary<TKey,TValue>, setting the property overwrites the old value. In contrast, the method does not modify existing elements.
is
An element with the same key already exists in the OrderedDictionary<TKey,TValue>
Adds an entry with the specified key and value into the OrderedDictionary<TKey,TValue> collection with the lowest available index.
The key of the entry to add.
The value of the entry to add. This value can be .
The index of the newly added entry
A key cannot be , but a value can be.
You can also use the property to add new elements by setting the value of a key that does not exist in the OrderedDictionary<TKey,TValue> collection; however, if the specified key already exists in the OrderedDictionary<TKey,TValue>, setting the property overwrites the old value. In contrast, the method does not modify existing elements.
is
An element with the same key already exists in the OrderedDictionary<TKey,TValue>
Adds an entry with the specified key and value into the OrderedDictionary<TKey,TValue> collection with the lowest available index.
The key of the entry to add.
The value of the entry to add. This value can be .
is .
-or-
is , and the value type of the OrderedDictionary<TKey,TValue> is a value type.
The key type of the OrderedDictionary<TKey,TValue> is not in the inheritance hierarchy of .
-or-
The value type of the OrderedDictionary<TKey,TValue> is not in the inheritance hierarchy of .
Removes all elements from the OrderedDictionary<TKey,TValue> collection.
The capacity is not changed as a result of calling this method.
Determines whether the OrderedDictionary<TKey,TValue> collection contains a specific key.
The key to locate in the OrderedDictionary<TKey,TValue> collection.
if the OrderedDictionary<TKey,TValue> collection contains an element with the specified key; otherwise, .
is
Determines whether the OrderedDictionary<TKey,TValue> collection contains a specific key.
The key to locate in the OrderedDictionary<TKey,TValue> collection.
if the OrderedDictionary<TKey,TValue> collection contains an element with the specified key; otherwise, .
is
The key type of the OrderedDictionary<TKey,TValue> is not in the inheritance hierarchy of .
Gets a value indicating whether the OrderedDictionary<TKey,TValue> has a fixed size.
if the OrderedDictionary<TKey,TValue> has a fixed size; otherwise, . The default is .
Gets a value indicating whether the OrderedDictionary<TKey,TValue> collection is read-only.
if the OrderedDictionary<TKey,TValue> is read-only; otherwise, . The default is .
A collection that is read-only does not allow the addition, removal, or modification of elements after the collection is created.
A collection that is read-only is simply a collection with a wrapper that prevents modification of the collection; therefore, if changes are made to the underlying collection, the read-only collection reflects those changes.
Gets an object containing the keys in the OrderedDictionary<TKey,TValue>.
An object containing the keys in the OrderedDictionary<TKey,TValue>.
The returned object is not a static copy; instead, the collection refers back to the keys in the original OrderedDictionary<TKey,TValue>. Therefore, changes to the OrderedDictionary<TKey,TValue> continue to be reflected in the key collection.
Returns the zero-based index of the specified key in the OrderedDictionary<TKey,TValue>
The key to locate in the OrderedDictionary<TKey,TValue>
The zero-based index of , if is found in the OrderedDictionary<TKey,TValue>; otherwise, -1
This method performs a linear search; therefore it has a cost of O(n) at worst.
Removes the entry with the specified key from the OrderedDictionary<TKey,TValue> collection.
The key of the entry to remove
if the key was found and the corresponding element was removed; otherwise,
Removes the entry with the specified key from the OrderedDictionary<TKey,TValue> collection.
The key of the entry to remove
Gets an object containing the values in the OrderedDictionary<TKey,TValue> collection.
An object containing the values in the OrderedDictionary<TKey,TValue> collection.
The returned object is not a static copy; instead, the refers back to the values in the original OrderedDictionary<TKey,TValue> collection. Therefore, changes to the OrderedDictionary<TKey,TValue> continue to be reflected in the .
Gets or sets the value with the specified key.
The key of the value to get or set.
The value associated with the specified key. If the specified key is not found, attempting to get it returns , and attempting to set it creates a new element using the specified key.
Gets or sets the value with the specified key.
The key of the value to get or set.
The value associated with the specified key. If the specified key is not found, attempting to get it returns , and attempting to set it creates a new element using the specified key.
Copies the elements of the OrderedDictionary<TKey,TValue> elements to a one-dimensional Array object at the specified index.
The one-dimensional object that is the destination of the objects copied from the OrderedDictionary<TKey,TValue>. The must have zero-based indexing.
The zero-based index in at which copying begins.
The method preserves the order of the elements in the OrderedDictionary<TKey,TValue>
Gets the number of key/values pairs contained in the OrderedDictionary<TKey,TValue> collection.
The number of key/value pairs contained in the OrderedDictionary<TKey,TValue> collection.
Gets a value indicating whether access to the OrderedDictionary<TKey,TValue> object is synchronized (thread-safe).
This method always returns false.
Gets an object that can be used to synchronize access to the OrderedDictionary<TKey,TValue> object.
An object that can be used to synchronize access to the OrderedDictionary<TKey,TValue> object.
Gets an ICollection<TKey> object containing the keys in the OrderedDictionary<TKey,TValue>.
An ICollection<TKey> object containing the keys in the OrderedDictionary<TKey,TValue>.
The returned ICollection<TKey> object is not a static copy; instead, the collection refers back to the keys in the original OrderedDictionary<TKey,TValue>. Therefore, changes to the OrderedDictionary<TKey,TValue> continue to be reflected in the key collection.
Gets the value associated with the specified key.
The key of the value to get.
When this method returns, contains the value associated with the specified key, if the key is found; otherwise, the default value for the type of . This parameter can be passed uninitialized.
if the OrderedDictionary<TKey,TValue> contains an element with the specified key; otherwise, .
Gets an ICollection<TValue> object containing the values in the OrderedDictionary<TKey,TValue>.
An ICollection<TValue> object containing the values in the OrderedDictionary<TKey,TValue>.
The returned ICollection<TKey> object is not a static copy; instead, the collection refers back to the values in the original OrderedDictionary<TKey,TValue>. Therefore, changes to the OrderedDictionary<TKey,TValue> continue to be reflected in the value collection.
Adds the specified value to the OrderedDictionary<TKey,TValue> with the specified key.
The KeyValuePair<TKey,TValue> structure representing the key and value to add to the OrderedDictionary<TKey,TValue>.
Determines whether the OrderedDictionary<TKey,TValue> contains a specific key and value.
The KeyValuePair<TKey,TValue> structure to locate in the OrderedDictionary<TKey,TValue>.
if is found in the OrderedDictionary<TKey,TValue>; otherwise, .
Copies the elements of the OrderedDictionary<TKey,TValue> to an array of type , starting at the specified index.
The one-dimensional array of type KeyValuePair<TKey,TValue> that is the destination of the KeyValuePair<TKey,TValue> elements copied from the OrderedDictionary<TKey,TValue>. The array must have zero-based indexing.
The zero-based index in at which copying begins.
Removes a key and value from the dictionary.
The KeyValuePair<TKey,TValue> structure representing the key and value to remove from the OrderedDictionary<TKey,TValue>.
if the key and value represented by is successfully found and removed; otherwise, . This method returns if is not found in the OrderedDictionary<TKey,TValue>.
distributed work item queue. Messages are processed in chronological order
Enqueue incoming messages
Dequeue next batch of work items
distributed work item queue. Each message must have an associated
work item id. For a given id, all work items are guaranteed to be processed
in the order in which they are received.
distributed work item queue. Each message must have an associated
work item id. For a given id, all work items are guaranteed to be processed
in the order in which they are received.
Queue incoming messages
Must call this periodically to move work items from priority queue to pending queue
Replace existing work item in workItemId queue
Pop items from list
Force release of locks held by crashed servers
release lock held by crashed server
true if lock is released, either by this method or by another client; false otherwise
Unlock work item id, so other servers can process items for this id
simple distributed work item queue
Queue incoming messages
Dequeue next batch of work items for processing. After this method is called,
no other work items with same id will be available for
dequeuing until PostDequeue is called
KeyValuePair: key is work item id, and value is list of dequeued items.
distributed work item queue
pop remaining items that were returned by dequeue, and unlock queue
indicate that an item has been processed by the caller
Update first unprocessed work item
customize the client serializer
Serialize object to buffer
serializable object
array of serializable objects
Deserialize buffer to object
byte array to deserialize
deserialize an array of byte arrays
pop numProcessed items from queue and unlock queue for work item id that dequeued
items are associated with
A dequeued work item has been processed. When all of the dequeued items have been processed,
all items will be popped from the queue,and the queue unlocked for the work item id that
the dequeued items are associated with
Update first unprocessed item with new work item.
Enqueue item in priority queue corresponding to workItemId identifier
Prepare next work item id for dequeuing
Dequeue up to maxBatchSize items from queue corresponding to workItemId identifier.
Once this method is called, will not
return any items for workItemId until the dequeue lock returned is unlocked.
Replace existing work item in workItemId queue
Enqueue item
Dequeue up to maxBatchSize items from queue
manages a "region" in the redis key space
namespace can be cleared by incrementing the generation
get locking strategy
get current generation
set new generation
redis key for generation
get redis key that holds all namespace keys
get global cache key
get global key inside of this namespace
prefixes can be added for name deconfliction
replace UniqueCharacter with its double, to avoid name clash
wraps a serialized representation of an object
Initializes a new instance of .
Custom item data.
The serialized item.
The data representing the item being stored/retrieved.
Flags set for this instance.
Adds support for Redis Transactions (i.e. MULTI/EXEC/DISCARD operations).
Adds support for Redis Transactions (i.e. MULTI/EXEC/DISCARD operations).
Issue exec command (not queued)
Put "QUEUED" messages at back of queue
Issue exec command (not queued)
callback for after result count is read in
Put "QUEUED" messages at back of queue