Chapter 141. Spring Redis

Spring Redis Component

Available as of Camel 2.11
This component allows sending and receiving messages from Redis. Redis is advanced key-value store where keys can contain strings, hashes, lists, sets and sorted sets. In addition it provides pub/sub functionality for inter-app communications. Camel provides a producer for executing commands, consumer for subscribing to pub/sub messages an idempotent repository for filtering out duplicate messages.
Prerequisites
In order to use this component, you must have a Redis server running.

URI Format

spring-redis://host:port[?options]
You can append query options to the URI in the following format, ?options=value&option2=value&...

URI Options

Name Default Value Context Description
host null Both The host where Redis server is running.
port null Both Redis port number.
command SET Both Default command, which can be overridden by message header.
channels SET Consumer List of topic names or name patterns to subscribe to.
redisTemplate null Producer Reference to a pre-configured org.springframework.data.redis.core.RedisTemplate instance in the Registry.
connectionFactory null Both Reference to an org.springframework.data.redis.connection.RedisConnectionFactory instance in the Registry.
listenerContainer null Consumer Reference to an org.springframework.data.redis.listener.RedisMessageListenerContainer instance in the Registry instance in the Registry.
serializer null Consumer Reference to an org.springframework.data.redis.serializer.RedisSerializer instance in the Registry.

Usage

Message headers evaluated by the Redis producer

The producer issues commands to the server and each command has different set of parameters with specific types. The result from the command execution is returned in the message body.
Hash Commands Description Parameters Result
HSET Set the string value of a hash field CamelRedis.Key (String), CamelRedis.Field (String), CamelRedis.Value (Object) void
HGET Get the value of a hash field CamelRedis.Key (String), CamelRedis.Field (String) String
HSETNX Set the value of a hash field, only if the field does not exist CamelRedis.Key (String), CamelRedis.Field (String), CamelRedis.Value (Object) void
HMSET Set multiple hash fields to multiple values CamelRedis.Key (String), CamelRedis.Values(Map<String, Object>) void
HMGET Get the values of all the given hash fields CamelRedis.Key (String), CamelRedis.Fields (Collection<String>) Collection<Object>
HINCRBY Increment the integer value of a hash field by the given number CamelRedis.Key (String), CamelRedis.Field (String), CamelRedis.Value (Long) Long
HEXISTS Determine if a hash field exists CamelRedis.Key (String), CamelRedis.Field (String) Boolean
HDEL Delete one or more hash fields CamelRedis.Key (String), CamelRedis.Field (String) void
HLEN Get the number of fields in a hash CamelRedis.Key (String) Long
HKEYS Get all the fields in a hash CamelRedis.Key (String) Set<String>
HVALS Get all the values in a hash CamelRedis.Key (String) Collection<Object>
HGETALL Get all the fields and values in a hash CamelRedis.Key (String) Map<String, Object>
List Commands Description Parameters Result
RPUSH Append one or multiple values to a list CamelRedis.Key (String), CamelRedis.Value (Object) Long
RPUSHX Append a value to a list, only if the list exists CamelRedis.Key (String), CamelRedis.Value (Object) Long
LPUSH Prepend one or multiple values to a list CamelRedis.Key (String), CamelRedis.Value (Object) Long
LLEN Get the length of a list CamelRedis.Key (String) Long
LRANGE Get a range of elements from a list CamelRedis.Key (String), CamelRedis.Start (Long), CamelRedis.End (Long) List<Object>
LTRIM Trim a list to the specified range CamelRedis.Key (String), CamelRedis.Start (Long), CamelRedis.End (Long) void
LINDEX Get an element from a list by its index CamelRedis.Key (String), CamelRedis.Index (Long) String
LINSERT Insert an element before or after another element in a list CamelRedis.Key (String), CamelRedis.Value (Object), CamelRedis.Pivot (String), CamelRedis.Position (String) Long
LSET Set the value of an element in a list by its index CamelRedis.Key (String), CamelRedis.Value (Object), CamelRedis.Index (Long) void
LREM Remove elements from a list CamelRedis.Key (String), CamelRedis.Value (Object), CamelRedis.Count (Long) Long
LPOP Remove and get the first element in a list CamelRedis.Key (String) Object
RPOP Remove and get the last element in a list CamelRedis.Key (String) String
RPOPLPUSH Remove the last element in a list, append it to another list and return it CamelRedis.Key (String), CamelRedis.Destination (String) Object
BRPOPLPUSH Pop a value from a list, push it to another list and return it; or block until one is available CamelRedis.Key (String), CamelRedis.Destination (String), CamelRedis.Timeout (Long) Object
BLPOP Remove and get the first element in a list, or block until one is available CamelRedis.Key (String), CamelRedis.Timeout (Long) Object
BRPOP Remove and get the last element in a list, or block until one is available CamelRedis.Key (String), CamelRedis.Timeout (Long) String
Set Commands Description Parameters Result
SADD Add one or more members to a set CamelRedis.Key (String), CamelRedis.Value (Object) Boolean
SMEMBERS Get all the members in a set CamelRedis.Key (String) Set<Object>
SREM Remove one or more members from a set CamelRedis.Key (String), CamelRedis.Value (Object) Boolean
SPOP Remove and return a random member from a set CamelRedis.Key (String) String
SMOVE Move a member from one set to another CamelRedis.Key (String), CamelRedis.Value (Object), CamelRedis.Destination (String) Boolean
SCARD Get the number of members in a set CamelRedis.Key (String) Long
SISMEMBER Determine if a given value is a member of a set CamelRedis.Key (String), CamelRedis.Value (Object) Boolean
SINTER Intersect multiple sets CamelRedis.Key (String), CamelRedis.Keys (String) Set<Object>
SINTERSTORE Intersect multiple sets and store the resulting set in a key CamelRedis.Key (String), CamelRedis.Keys (String), CamelRedis.Destination (String) void
SUNION Add multiple sets CamelRedis.Key (String), CamelRedis.Keys (String) Set<Object>
SUNIONSTORE Add multiple sets and store the resulting set in a key CamelRedis.Key (String), CamelRedis.Keys (String), CamelRedis.Destination (String) void
SDIFF Subtract multiple sets CamelRedis.Key (String), CamelRedis.Keys (String) Set<Object>
SDIFFSTORE Subtract multiple sets and store the resulting set in a key CamelRedis.Key (String), CamelRedis.Keys (String), CamelRedis.Destination (String) void
SRANDMEMBER Get one or multiple random members from a set CamelRedis.Key (String) String
Ordered set Commands Description Parameters Result
ZADD Add one or more members to a sorted set, or update its score if it already exists CamelRedis.Key (String), CamelRedis.Value (Object), CamelRedis.Score (Double) Boolean
ZRANGE Return a range of members in a sorted set, by index CamelRedis.Key (String), CamelRedis.Start (Long), CamelRedis.End (Long), CamelRedis.WithScore (Boolean) Object
ZREM Remove one or more members from a sorted set CamelRedis.Key (String), CamelRedis.Value (Object) Boolean
ZINCRBY Increment the score of a member in a sorted set CamelRedis.Key (String), CamelRedis.Value (Object), CamelRedis.Increment (Double) Double
ZRANK Determine the index of a member in a sorted set CamelRedis.Key (String), CamelRedis.Value (Object) Long
ZREVRANK Determine the index of a member in a sorted set, with scores ordered from high to low CamelRedis.Key (String), CamelRedis.Value (Object) Long
ZREVRANGE Return a range of members in a sorted set, by index, with scores ordered from high to low CamelRedis.Key (String), CamelRedis.Start (Long), CamelRedis.End (Long), CamelRedis.WithScore (Boolean) Object
ZCARD Get the number of members in a sorted set CamelRedis.Key (String), Long
ZCOUNT Count the members in a sorted set with scores within the given values CamelRedis.Key (String), CamelRedis.Min (Double), CamelRedis.Max (Double) Long
ZRANGEBYSCORE Return a range of members in a sorted set, by score CamelRedis.Key (String), CamelRedis.Min (Double), CamelRedis.Max (Double) Set<Object>
ZREVRANGEBYSCORE Return a range of members in a sorted set, by score, with scores ordered from high to low CamelRedis.Key (String), CamelRedis.Min (Double), CamelRedis.Max (Double) Set<Object>
ZREMRANGEBYRANK Remove all members in a sorted set within the given indexes CamelRedis.Key (String), CamelRedis.Start (Long), CamelRedis.End (Long) void
ZREMRANGEBYSCORE Remove all members in a sorted set within the given scores CamelRedis.Key (String), CamelRedis.Start (Long), CamelRedis.End (Long) void
ZUNIONSTORE Add multiple sorted sets and store the resulting sorted set in a new key CamelRedis.Key (String), CamelRedis.Keys (String), CamelRedis.Destination (String) void
ZINTERSTORE Intersect multiple sorted sets and store the resulting sorted set in a new key CamelRedis.Key (String), CamelRedis.Keys (String), CamelRedis.Destination (String) void
String Commands Description Parameters Result
SET Set the string value of a key CamelRedis.Key (String), CamelRedis.Value (Object) void
GET Get the value of a key CamelRedis.Key (String) Object
STRLEN Get the length of the value stored in a key CamelRedis.Key (String) Long
APPEND Append a value to a key CamelRedis.Key (String), CamelRedis.Value (String) Integer
SETBIT Sets or clears the bit at offset in the string value stored at key CamelRedis.Key (String), CamelRedis.Offset (Long), CamelRedis.Value (Boolean) void
GETBIT Returns the bit value at offset in the string value stored at key CamelRedis.Key (String), CamelRedis.Offset (Long) Boolean
SETRANGE Overwrite part of a string at key starting at the specified offset CamelRedis.Key (String), CamelRedis.Value (Object), CamelRedis.Offset (Long) void
GETRANGE Get a substring of the string stored at a key CamelRedis.Key (String), CamelRedis.Start (Long), CamelRedis.End (Long) String
SETNX Set the value of a key, only if the key does not exist CamelRedis.Key (String), CamelRedis.Value (Object) Boolean
SETEX Set the value and expiration of a key CamelRedis.Key (String), CamelRedis.Value (Object), CamelRedis.Timeout (Long), SECONDS void
DECRBY Decrement the integer value of a key by the given number CamelRedis.Key (String), CamelRedis.Value (Long) Long
DECR Decrement the integer value of a key by one CamelRedis.Key (String), Long
INCRBY Increment the integer value of a key by the given amount CamelRedis.Key (String), CamelRedis.Value (Long) Long
INCR Increment the integer value of a key by one CamelRedis.Key (String) Long
MGET Get the values of all the given keys CamelRedis.Fields (Collection<String>) List<Object>
MSET Set multiple keys to multiple values CamelRedis.Values(Map<String, Object>) void
MSETNX Set multiple keys to multiple values, only if none of the keys exist CamelRedis.Key (String), CamelRedis.Value (Object) void
GETSET Set the string value of a key and return its old value CamelRedis.Key (String), CamelRedis.Value (Object) Object
Key Commands Description Parameters Result
EXISTS Determine if a key exists CamelRedis.Key (String) Boolea
DEL Delete a key CamelRedis.Keys (String) void
TYPE Determine the type stored at key CamelRedis.Key (String) DataType
KEYS Find all keys matching the given pattern CamelRedis.Pattern (String) Collection<String>
RANDOMKEY Return a random key from the keyspace CamelRedis.Pattern (String), CamelRedis.Value (String) String
RENAME Rename a key CamelRedis.Key (String) void
RENAMENX Rename a key, only if the new key does not exist CamelRedis.Key (String), CamelRedis.Value (String) Boolean
EXPIRE Set a key's time to live in seconds CamelRedis.Key (String), CamelRedis.Timeout (Long) Boolean
SORT Sort the elements in a list, set or sorted set CamelRedis.Key (String) List<Object>
PERSIST Remove the expiration from a key CamelRedis.Key (String) Boolean
EXPIREAT Set the expiration for a key as a UNIX timestamp CamelRedis.Key (String), CamelRedis.Timestamp (Long) Boolean
PEXPIRE Set a key's time to live in milliseconds CamelRedis.Key (String), CamelRedis.Timeout (Long) Boolean
PEXPIREAT Set the expiration for a key as a UNIX timestamp specified in milliseconds CamelRedis.Key (String), CamelRedis.Timestamp (Long) Boolean
TTL Get the time to live for a key CamelRedis.Key (String) Long
MOVE Move a key to another database CamelRedis.Key (String), CamelRedis.Db (Integer) Boolean
Other Command Description Parameters Result
MULTI Mark the start of a transaction block none void
DISCARD Discard all commands issued after MULTI none void
EXEC Execute all commands issued after MULTI none void
WATCH Watch the given keys to determine execution of the MULTI/EXEC block CamelRedis.Keys (String) void
UNWATCH Forget about all watched keys none void
ECHO Echo the given string CamelRedis.Value (String) String
PING Ping the server none String
QUIT Close the connection none void
PUBLISH Post a message to a channel CamelRedis.Channel (String), CamelRedis.Message (Object) void

Redis consumer

The consumer subscribes to a channel either by channel name using SUBSCRIBE or a string pattern using PSUBSCRIBE commands. When a message is sent to the channel using PUBLISH command, it will be consumed and the message will be available as Camel message body. The message is also serialized using configured serializer or the default JdkSerializationRedisSerializer.
Message headers set by the Consumer
Header Type Description
CamelRedis.Channel String The channel name, where the message was received.
CamelRedis.Pattern String The pattern matching the channel, where the message was received.

Dependencies

Maven users will need to add the following dependency to their pom.xml.
pom.xml
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-spring-redis</artifactId>
    <version>${camel-version}</version>
</dependency>
where ${camel-version} must be replaced by the actual version of Camel (2.11 or higher).