https://github.com/opentracing-contrib/java-redis-client
OpenTracing Instrumentation for Redis Client
https://github.com/opentracing-contrib/java-redis-client
java jedis lettuce opentracing redis-client redisson spring-data-redis
Last synced: 2 months ago
JSON representation
OpenTracing Instrumentation for Redis Client
- Host: GitHub
- URL: https://github.com/opentracing-contrib/java-redis-client
- Owner: opentracing-contrib
- License: apache-2.0
- Created: 2017-11-24T12:17:54.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2022-11-17T12:18:51.000Z (almost 3 years ago)
- Last Synced: 2025-04-04T22:11:17.541Z (6 months ago)
- Topics: java, jedis, lettuce, opentracing, redis-client, redisson, spring-data-redis
- Language: Java
- Homepage:
- Size: 731 KB
- Stars: 40
- Watchers: 3
- Forks: 28
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Build Status][ci-img]][ci] [![Coverage Status][cov-img]][cov] [![Released Version][maven-img]][maven] [](https://opensource.org/licenses/Apache-2.0)
# OpenTracing Redis Client Instrumentation
OpenTracing instrumentation for Redis Client## Requirements
- Java 8
## Installation
### Jedis
#### Jedis 2
pom.xml
```xmlio.opentracing.contrib
opentracing-redis-jedis
VERSION```
#### Jedis 3
pom.xml
```xmlio.opentracing.contrib
opentracing-redis-jedis3
VERSION```
### Lettuce
pom.xml
```xmlio.opentracing.contrib
opentracing-redis-lettuce-5.2
VERSION```
### Redisson
pom.xml
```xmlio.opentracing.contrib
opentracing-redis-redisson
VERSION```
### Spring Data Redis 1.x
pom.xml
```xmlio.opentracing.contrib
opentracing-redis-spring-data
VERSION```
### Spring Data Redis 2.x
pom.xml
```xmlio.opentracing.contrib
opentracing-redis-spring-data2
VERSION```
## Usage
```java
// Instantiate tracer
Tracer tracer = ...// Create TracingConfiguration
TracingConfiguration tracingConfiguration = new TracingConfiguration.Builder(tracer).build();```
### Jedis
```java// Create Tracing Jedis
Jedis jedis = new TracingJedis(tracingConfiguration);jedis.set("foo", "bar");
String value = jedis.get("foo");```
### Jedis Cluster
```java
Set jedisClusterNodes = new HashSet();
jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7379));// Create Tracing Jedis Cluster
JedisCluster jc = new TracingJedisCluster(jedisClusterNodes, tracingConfiguration);
jc.set("foo", "bar");
String value = jc.get("foo");```
### Jedis Pool
```java
// Configure the pool
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle(10);
poolConfig.setTestOnBorrow(false);// Create Tracing Jedis Pool
JedisPool pool = new TracingJedisPool(poolConfig, "127.0.0.1", 6379, tracingConfiguration);try (Jedis jedis = pool.getResource()) {
// jedis will be automatically closed and returned to the pool at the end of "try" block
jedis.set("foo", "bar");
String value = jedis.get("foo");
}
```### Jedis Sentinel Pool
```java
// Create Tracing Jedis Sentinel Pool
JedisSentinelPool pool = new TracingJedisSentinelPool(tracingConfiguration, MASTER_NAME, sentinels, poolConfig);try (Jedis jedis = pool.getResource()) {
// jedis will be automatically closed and returned to the pool at the end of "try" block
jedis.set("foo", "bar"));
String value = jedis.get("foo"));
}
```### Jedis Span Name
By default, span names are set to the operation performed by the Jedis object.
To customize the span name, provide a Function to the TracingConfiguration object that alters the span name.
If a function is not provided, the span name will remain the default.
Refer to the RedisSpanNameProvider class for a function that prefixes the operation name.
```java
TracingConfiguration tracingConfiguration = new TracingConfiguration.Builder(tracer)
.withSpanNameProvider(RedisSpanNameProvider.PREFIX_OPERATION_NAME("redis."))
.build();
//Create Tracing Jedis with custom span name
Jedis jedis = new TracingJedis(tracingConfiguration);
jedis.set("foo", "bar");
//Span name is now set to "redis.set"```
### Lettuce
```java
// Create client
RedisClient client = RedisClient.create("redis://localhost");// Decorate StatefulRedisConnection with TracingStatefulRedisConnection
StatefulRedisConnection connection =
new TracingStatefulRedisConnection(client.connect(), tracingConfiguration);// Get sync redis commands
RedisCommands commands = connection.sync();// Get async redis commands
RedisAsyncCommands commandsAsync = connection.async();```
### Redisson
```java
// Create Redisson config object
Config = ...// Create Redisson instance
RedissonClient redissonClient = Redisson.create(config);// Decorate RedissonClient with TracingRedissonClient
RedissonClient tracingRedissonClient = new TracingRedissonClient(redissonClient, tracingConfiguration);// Get object you need using TracingRedissonClient
RMap map = tracingRedissonClient.getMap("myMap");
```### Spring
```java
// Create tracing connection factory bean
@Bean
public RedisConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory();
lettuceConnectionFactory.afterPropertiesSet();
return new TracingRedisConnectionFactory(lettuceConnectionFactory,
new TracingConfiguration.Builder(tracer()).build());
}
```Note: if you use Lettuce/Jedis you could achieve the same result using the Lettuce/Jedis support when
configuring LettuceConnectionFactory/JedisConnectionFactory instead of using a wrapping TracingRedisConnectionFactory.## License
[Apache 2.0 License](./LICENSE).
[ci-img]: https://travis-ci.org/opentracing-contrib/java-redis-client.svg?branch=master
[ci]: https://travis-ci.org/opentracing-contrib/java-redis-client
[cov-img]: https://coveralls.io/repos/github/opentracing-contrib/java-redis-client/badge.svg?branch=master
[cov]: https://coveralls.io/github/opentracing-contrib/java-redis-client?branch=master
[maven-img]: https://img.shields.io/maven-central/v/io.opentracing.contrib/opentracing-redis-parent.svg
[maven]: http://search.maven.org/#search%7Cga%7C1%7Copentracing-redis-parent