添加 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 本地仓库。
        <profile>
                <id>edas.oss.repo</id>
                <repositories>
                    <repository>
                        <id>edas-oss-central</id>
                        <name>taobao mirror central</name>
                        <url>http://edas-public.oss-cn-hangzhou.aliyuncs.com/repository</url>
                        <snapshots>
                            <enabled>true</enabled>
                        </snapshots>
                        <releases>
                            <enabled>true</enabled>
                        </releases>
                    </repository>
                </repositories>
                <pluginRepositories>
                    <pluginRepository>
                        <id>edas-oss-plugin-central</id>
                        <url>http://edas-public.oss-cn-hangzhou.aliyuncs.com/repository</url>
                        <snapshots>
                            <enabled>true</enabled>
                        </snapshots>
                        <releases>
                            <enabled>true</enabled>
                        </releases>
                    </pluginRepository>
                </pluginRepositories>
            </profile>
        </profiles>
    					

    同时激活对应的 profile:

        <activeProfiles>
            <activeProfile>edas.oss.repo</activeProfile>
        </activeProfiles>          
  2. 在项目的 Maven 的 pom.xml 文件中,添加依赖。
      <dependency>
         <groupId>com.alibaba.middleware</groupId>
         <artifactId>spring-data-redis</artifactId>
         <version>1.7.4.RELEASE</version>
       </dependency>           

Redis 命令覆盖情况

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

  • Key 类型操作
    操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
    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 链路
    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 链路
    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 链路 备注
    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 链路
    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 链路
    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 链路 备注
    PFADD HyperLogLogOperations.add Y
    PFCOUNT HyperLogLogOperations.size Y
    PFMERGE HyperLogLogOperations.union Y key: dest:${destination}
  • Pub/Sub(发布/订阅)操作
    操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
    PSUBSCRIBE 不支持 -
    PUBLISH RedisOperations.convertAndSend Y key: msg:${msg}
    PUBSUB RedisMessageListenerContainer .setMessageListeners .addMessageListener N
    PUNSUBSCRIBE 不支持 -
    UNSUBSCRIBE 不支持 -
  • Transaction(事务)操作
    操作 spring-data-redis 方法 EDAS 版本是否支持 EagleEye 链路 备注
    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 链路 备注
    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