几款连接redis的客户端(GUI客户端),下面记录了我使用的几款

一、Redis 客户端

1、命令行工具
  • 命令行 (建议使用,简单)
    比如windows的cmd和Linux、Mac的Terminal,虽然最简单好用。
    必须保证有 redis-cli 命令(windows 是 redis-cli.exe),比如通过安装 redis 就会有这个命令。
2、桌面客户端
  • RediNav (windows桌面客户端,MacOS客户端,根本不能用)
    评价:垃圾,完全不能用,无论win还是mac平台!我写在这里就是要把你钉在耻辱柱上,免得下次又掉进你的坑里。
    不能用具体表现在,无法新建连接,在填写endpoint的过程中,弹出框太大完全看不到填写完毕后的确认按钮,缩小弹出框的时候弹出框会突然消失掉,然后程序像死了一样,只能用任务管理器关闭。(我试的是1.0.28版)
  • 新版 RDM (Redis Desktop Manager,我试的是 2021.7.363 版)
    评价:新版很垃圾(如果你可以登录,不算垃圾)。收费。并且新版会强迫需要注册并登陆后才能用,人家Postman也没强迫。最主要是公司电脑屏蔽了没法登陆。
    支持打开Console输入redis命令(当然了,旧版也支持)
  • 旧版 RDM (Redis Desktop Manager,我试的是 v.0.8.8.384 版) (凑合使用)
    旧版凑合用吧。貌似是免费的。也支持打开Console输命令的
  • Navicat
    暂时未有,期待Navicat也出一个能连Redis的,成为一个万能的GUI数据库连接工具

除此外还有一大堆工具,这里就简单提一下,详细可以参考:https://zhuanlan.zhihu.com/p/210483494

  • medis:免费,美观。缺点是不支持key的命名空间展示(只有Mac平台,目前已经是medis2了)
  • AnotherRedisDesktopManager:基本的功能都有。有监控统计,支持暗黑主题,还支持集群的添加
  • fastoredis:使用这款工具首先得去官网注册账号。这款软件是收费软件,支持了集群模式和哨兵模式,key的命名空间展示
  • redis-plus:开源的免费,这款软件连命令行模式都没有。
  • red:这是一款在苹果app store下载的redis可视化工具,免费。只支持Mac端,颜值还是不错的。功能中规中矩。基本功能都有,支持key命名空间的展示。(只有Mac平台)
3、在线版
  • Redis Insight
    这款软件是web版的,但是非常专业。支持命令行。支持rdb分析功能,可以分析哪个key占内存大。
3、IDEA 插件
  • Iedis2
    收费插件,没啥看头,IDEA 的插件破解费工夫。不用去考虑了。

二、大坑

如下代码的RedisTemplate都没有特别配置序列化器,在执行后,使用命令行连上redis,执行keys my_key*,发现只有第二个key存在,第一个消失了,但是代码执行后是能够取到值的。这是为什么?

redis客户端连接docker redis 连接redis的客户端_客户端

是因为命令行的工具有bug吗?不是的。使用 keys *my_key*,就可以显示两个key都存在。

redis客户端连接docker redis 连接redis的客户端_redis_02

可以看到第二key前面有一些奇怪的字符,这是是因为代码中第一个 redisTemplate 的序列化器,无论是key还是value都是使用jdk的序列化器(JdkSerializationRedisSerializer),所以导致了key前面有些奇怪的字符,所以用 keys *my_key* 这种两边都模糊的就能匹配出来。
但是第二个不是也是redisTemplate 吗?为什么key 前面没有奇怪的符号,因为Spring 在遇到 <String, String> 泛型的时候注入的不是 RedisTemplate 类,而是 StringRedisTemplate 类,而后者的所有序列化器都是 String的序列化器(StringRedisSerializer),所以就很正常了。

最佳实践

建议设置一下 key 和 hash key 的序列化器为String序列化器,这样可读性才强,debug的时候才好发现,另外不需要重复 new StringRedisSerializer(),共用即可,线程安全

@Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
         //建议设置一下 key 和 hash key 的序列化器为String序列化器,这样可读性才强,debug的时候才好发现,另外不需要重复 new StringRedisSerializer(),共用即可,线程安全
        RedisSerializer<String> stringRedisSerializer = new StringRedisSerializer();
        template.setKeySerializer(stringRedisSerializer);
        template.setHashKeySerializer(stringRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }