几款连接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存在,第一个消失了,但是代码执行后是能够取到值的。这是为什么?
是因为命令行的工具有bug吗?不是的。使用 keys *my_key*
,就可以显示两个key都存在。
可以看到第二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;
}
三、资料参考
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135182.html