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

Icon

In order to use this component, you must have a Redis server running.

URI Format

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 overriden by message header.

channels

SET

Consumer

List of topic names or name patterns to subscibe to.

redisTemplate

null

Producer

Reference to a pre-configured org.springframework.data.redis.core.RedisTemplate instance in the Registry.

connectionFactory

null

Both

Reference to a org.springframework.data.redis.connection.RedisConnectionFactory instance in the Registry.

listenerContainer

null

Consumer

Referebce to a org.springframework.data.redis.listener.RedisMessageListenerContainer instance in the Registry instance in the Registry.

serializer

null

Consumer

Referebce to a 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

where ${camel-version} must be replaced by the actual version of Camel (2.11 or higher).

See Also

© 2004-2014 The Apache Software Foundation.
Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
Graphic Design By Hiram