I am currently utilizing jedis version 4.3.0 in my Java Spring Boot project. I am interested in utilizing the Redis time series commands interface to store time series data in Redis. However, I am unsure whether I can directly employ Redis time series commands to interact with the time series data without the need for additional dependencies such as JRedisTimeSeries. If direct utilization is possible, how should I establish a connection and implement methods from that interface?
I have tried to create bean for RedisTimeSeriesCommands
@Bean
public RedisTimeSeriesCommands redisTimeSeriesCommands() {
return new RedisTimeSeriesCommands() {
@Override
public String tsCreate(String key) {
return null;
}
@Override
public String tsCreate(String key, TSCreateParams createParams) {
return null;
}
@Override
public long tsDel(String key, long fromTimestamp, long toTimestamp) {
return 0;
}
@Override
public String tsAlter(String key, TSAlterParams alterParams) {
return null;
}
@Override
public long tsAdd(String key, double value) {
return 0;
}
@Override
public long tsAdd(String key, long timestamp, double value) {
return 0;
}
@Override
public long tsAdd(String key, long timestamp, double value, TSCreateParams createParams) {
return 0;
}
@Override
public List<Long> tsMAdd(Map.Entry<String, TSElement>... entries) {
return null;
}
@Override
public long tsIncrBy(String key, double value) {
return 0;
}
@Override
public long tsIncrBy(String key, double value, long timestamp) {
return 0;
}
@Override
public long tsDecrBy(String key, double value) {
return 0;
}
@Override
public long tsDecrBy(String key, double value, long timestamp) {
return 0;
}
@Override
public List<TSElement> tsRange(String key, long fromTimestamp, long toTimestamp) {
return null;
}
@Override
public List<TSElement> tsRange(String key, TSRangeParams rangeParams) {
return null;
}
@Override
public List<TSElement> tsRevRange(String key, long fromTimestamp, long toTimestamp) {
return null;
}
@Override
public List<TSElement> tsRevRange(String key, TSRangeParams rangeParams) {
return null;
}
@Override
public List<TSKeyedElements> tsMRange(long fromTimestamp, long toTimestamp, String... filters) {
return null;
}
@Override
public List<TSKeyedElements> tsMRange(TSMRangeParams multiRangeParams) {
return null;
}
@Override
public List<TSKeyedElements> tsMRevRange(long fromTimestamp, long toTimestamp, String... filters) {
return null;
}
@Override
public List<TSKeyedElements> tsMRevRange(TSMRangeParams multiRangeParams) {
return null;
}
@Override
public TSElement tsGet(String key) {
return null;
}
@Override
public TSElement tsGet(String key, TSGetParams getParams) {
return null;
}
@Override
public List<TSKeyValue<TSElement>> tsMGet(TSMGetParams multiGetParams, String... filters) {
return null;
}
@Override
public String tsCreateRule(String sourceKey, String destKey, AggregationType aggregationType, long timeBucket) {
return null;
}
@Override
public String tsCreateRule(String sourceKey, String destKey, AggregationType aggregationType, long bucketDuration, long alignTimestamp) {
return null;
}
@Override
public String tsDeleteRule(String sourceKey, String destKey) {
return null;
}
@Override
public List<String> tsQueryIndex(String... filters) {
return null;
}
@Override
public TSInfo tsInfo(String key) {
return null;
}
@Override
public TSInfo tsInfoDebug(String key) {
return null;
}
}
}
But I dont know how to implement methods.
In your implementation you to inject/expose the right Jedis client to use the commands in https://github.com/redis/jedis/blob/master/src/main/java/redis/clients/jedis/timeseries/RedisTimeSeriesCommands.java which you can get via
UnifiedJedis
At the top level you probably need a
RedisConnectionFactory
of typeJedisConnectionFactory
, something like:Then wire the
UnifiedJedis
into your Bean and use the TS methods exposed: