全部产品
云市场

Redis 链路支持

更新时间:2019-01-07 11:45:11

添加 Redis 链路支持后,应用对 Redis 的访问操作会产生 EagleEye 的跟踪日志,EDAS 会对该日志进行采集、分析、统计,然后 Redis 调用会展现在 EDAS 平台的链路追踪和调用分析中。

支持范围

考虑到 Redis 库众多以及 spring-data 库的易用性,目前只对 spring-data-redis 进行支持,兼容的版本为: 1.7.4.RELEASE;如果在您的项目中没有使用 spring-data-redis,而使用的是其他的库(如 Jedis),则在 EagleEye 的链路(在 EDAS 控制台左侧的导航栏中选择数据化运营 > 调用链详情)中将无法查看到相应的信息。

注意:如果应用程序中使用的 spring-data-redis 版本高于 1.7.4.RELEASE ,且提供的功能在此版本中不满足时,请提交工单与我们联系。

使用方式

对于在 EDAS 平台上的应用,采用的方式是替换 spring-data-redis ,使用方式与官方 spring-data-redis 完全相同(参见官方 Guide 文档),即在代码层面,目前 EDAS 的 spring-data-redis 的兼容版本是 1.7.4-RELEASE;请按照以下步骤使用:

  1. 打开 {user.home}/.m2/settings.xml 文件,配置 Maven 本地仓库。

    1. <profile>
    2. <id>edas.oss.repo</id>
    3. <repositories>
    4. <repository>
    5. <id>edas-oss-central</id>
    6. <name>taobao mirror central</name>
    7. <url>http://edas-public.oss-cn-hangzhou.aliyuncs.com/repository</url>
    8. <snapshots>
    9. <enabled>true</enabled>
    10. </snapshots>
    11. <releases>
    12. <enabled>true</enabled>
    13. </releases>
    14. </repository>
    15. </repositories>
    16. <pluginRepositories>
    17. <pluginRepository>
    18. <id>edas-oss-plugin-central</id>
    19. <url>http://edas-public.oss-cn-hangzhou.aliyuncs.com/repository</url>
    20. <snapshots>
    21. <enabled>true</enabled>
    22. </snapshots>
    23. <releases>
    24. <enabled>true</enabled>
    25. </releases>
    26. </pluginRepository>
    27. </pluginRepositories>
    28. </profile>
    29. </profiles>

    同时激活对应的 profile:

    1. <activeProfiles>
    2. <activeProfile>edas.oss.repo</activeProfile>
    3. </activeProfiles>
  2. 在项目的 Maven 的 pom.xml 文件中,添加依赖。

    1. <dependency>
    2. <groupId>com.alibaba.middleware</groupId>
    3. <artifactId>spring-data-redis</artifactId>
    4. <version>1.7.4.RELEASE</version>
    5. </dependency>

Redis 命令覆盖情况

以下是 spring-data-redis 对 Redis 命令的覆盖情况,以及各自的 EagleEye trace 日志支持情况。

Key 类型操作

数据结构/对象 操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
Key DEL RedisOperations.delete Y
DUMP RedisOperations.dump Y
EXISTS RedisOperations.hasKey Y
EXPIRE RedisOperations.expire Y
EXPIREAT RedisOperations.expireAt Y
KEYS RedisOperations.keys Y
MIGRATE 不支持
MOVE RedisOperations.move Y
OBJECT 不支持
PERSIST RedisOperations.persist Y
PEXPIRE RedisOperations.expire Y
PEXPIREAT RedisOperations.expireAt Y
PTTL RedisOperations.getExpire Y
RANDOMKEY RedisOperations.randomKey Y
RENAME RedisOperations.rename Y key: oldKey:${oldKey};newKey:${newKey}
RENAMENX RedisOperations.renameIfAbsent Y
RESTORE RedisOperations.restore Y
SORT RedisKeyCommands.sort Y key: query:${SortQuery}
TTL RedisOperations.getExpire Y
TYPE RedisOperations.type Y
SCAN RedisKeyCommands.scan N  

String 类型操作

数据结构/对象 操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
String APPEND ValueOperations.append Y
BITCOUNT 不支持
BITOP 不支持
BITFIELD 不支持
DECR ValueOperations.increment Y
DECRBY ValueOperations.increment Y
GET ValueOperations.get Y
GETBIT ValueOperations.getBit Y
GETRANGE ValueOperations.get Y
GETSET ValueOperations.getAndSet Y
INCR ValueOperations.increment Y
INCRBY ValueOperations.increment Y
INCRBYFLOAT ValueOperations.increment Y
MGET ValueOperations.multiGet Y
MSET ValueOperations.multiSet Y
MSETNX ValueOperations.multiSetIfAbsent Y
PSETEX ValueOperations.set Y
SET ValueOperations.set Y
SETBIT ValueOperations.setBit Y
SETEX ValueOperations.set Y
SETNX ValueOperations.setIfAbsent Y
SETRANGE ValueOperations.set Y
STRLEN ValueOperations.size Y  

Hash 类型操作

数据结构/对象 操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
Hash HDEL HashOperations.delete Y
HEXISTS HashOperations.hasKey Y
HGET HashOperations.get Y
HGETALL HashOperations.entries Y
HINCRBY HashOperations.increment Y
HINCRBYFLOAT HashOperations.increment Y
HKEYS HashOperations.keys Y
HLEN HashOperations.size Y
HMGET HashOperations.multiGet Y
HMSET HashOperations.putAll Y
HSET HashOperations.put Y
HSETNX HashOperations.putIfAbsent Y
HVALS HashOperations.values Y
HSCAN HashOperations.san Y
HSTRLEN 不支持  

List 类型操作

数据结构/对象 操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
List BLPOP ListOperations.leftPop Y
BRPOP ListOperations.rightPop Y
BRPOPLPUSH ListOperations.rightPopAndLeftPush Y key: sourceKey:${sourceKey};destKey:${destKey}
LINDEX ListOperations.index Y
LINSERT ListOperations.leftPush Y
LLEN ListOperations.size Y
LPOP ListOperations.leftPop Y
LPUSH ListOperations.leftPush Y
LPUSHX ListOperations.leftPushIfPresent Y
LRANGE ListOperations.range Y
LREM ListOperations.remove Y
LSET ListOperations.set Y
LTRIM ListOperations.trim Y
RPOP ListOperations.rightPop Y
RPOPLPUSH ListOperations.rightPopAndLeftPush Y key: sourceKey:${sourceKey};destKey:${destKey}
RPUSH ListOperations.rightPush Y
RPUSHX ListOperations.rightPushIfPresent Y  

Set 类型操作

数据结构/对象 操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
Set SADD SetOpertions.add Y
SCARD SetOpertions.size Y
SDIFF SetOpertions.difference Y
SDIFFSTORE SetOpertions.differenceAndStore Y
SINTER SetOpertions.intersect Y
SINTERSTORE SetOpertions.intersectAndStore Y
SISMEMBER SetOpertions.isMember Y
SMEMBERS SetOpertions.members Y
SMOVE SetOpertions.move Y
SPOP SetOpertions.pop Y
SRANDMEMBER SetOpertions.randomMember randomMembers distinctRandomMembers Y
SREM SetOpertions.remove Y
SUNION SetOpertions.union Y
SUNIONSTORE SetOpertions.unionAndStore Y
SSCAN SetOpertions.scan Y  

SortedSet 类型操作

数据结构/对象 操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
SortedSet ZADD ZSetOperations.add Y
ZCARD ZSetOperations.size/zCard Y
ZCOUNT ZSetOperations.count Y
ZINCRBY ZSetOperations.incrementScore Y
ZRANGE ZSetOperYations.range rangeWithScores Y
ZRANGEBYSCORE ZSetOperations.rangeByScore rangeByScoreWithScores Y
ZRANK ZSetOperations.rank Y
ZREM ZSetOperations.remove Y
ZREMRANGEBYRANK ZSetOperations.removeRange Y
ZREMRANGEBYSCORE ZSetOperations.removeRangeByScore Y
ZREVRANGE ZSetOperations.reverseRange reverseRangeWithScores Y
ZREVRANGEBYSCORE ZSetOperations.reverseRangeByScore reverseRangeByScoreWithScores Y
ZREVRANK ZSetOperations.reverseRank Y
ZSCORE ZSetOperations.score Y
ZUNIONSTORE ZSetOperations.unionAndStore Y
ZINTERSTORE ZSetOperations.intersectAndStore Y
ZSCAN ZSetOperations.scan Y
ZRANGEBYLEX ZSetOperations.rangeByLex Y
ZLEXCOUNT 不支持
ZREMRANGEBYLEX 不支持  

HyperLogLog 操作

数据结构/对象 操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
HyperLogLog PFADD HyperLogLogOperations.add Y
PFCOUNT HyperLogLogOperations.size Y
PFMERGE HyperLogLogOperations.union Y key: dest:${destination}

Pub/Sub(发布/订阅)操作

数据结构/对象 操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
Pub/Sub PSUBSCRIBE 不支持
PUBLISH RedisOperations.convertAndSend Y key: msg:${msg}
PUBSUB RedisMessageListenerContainer .setMessageListeners .addMessageListener N
PUNSUBSCRIBE 不支持
UNSUBSCRIBE 不支持  

Transaction(事务)操作

数据结构/对象 操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
Transaction DISCARD RedisOperations.discard Y
EXEC RedisOperations.exec Y key: execRaw
MULTI RedisOperations.multi Y
UNWATCH RedisOperations.unwatch Y
WATCH RedisOperations.watch Y  

Script(脚本)操作

数据结构/对象 操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
Script EVAL ScriptExecutor.execute Y key: 空
EVALSHA ScriptExecutor.execute Y key: 空
SCRIPT EXISTS RedisScriptingCommands.scriptExists N
SCRIPT FLUSH RedisScriptingCommands.scriptFlush N
SCRIPT KILL RedisScriptingCommands.scriptKill N
SCRIPT LOAD RedisScriptingCommands.scriptLoad N