Open david1025 opened 1 year ago
奇怪 你的第一条,我测试 最新版 不慢呀,反倒是按你说的 全缓存下来,之前的老版本 好像是这么处理的,像我公司这种情况 上亿的 key 会导致 内存炸掉
第二个 为什么现在还有人 直接用 java自带的序列化啊,难道不都是用 string 序列化么 哈哈哈哈哈
ps:我不是这个的开发,我也只是一个深度用户哈
我这个要loading大概1秒多,每次点下一页也要loading 1秒多。我下载源码打断点每次点下一页都要调用那个scan的方法
第二个问题主要使用的场景是那些误操作的,不写key的类型,然后想删又删不掉,只是看着烦,不影响
可以试试 medis 或者 rdm(现在应该叫 resp,github上有人用 actions 做自动打包的)
medis v2 在 app store 收费了,但是可以免费试用,有一些限制,里面提供一个命令模式,可以试试能否用命令去删除
rdm 我发现就是一次性 全部扫出来了 本地筛选的,这个我老早以前用过,后来不怎么用了
然后还有一个 Another Redis Desktop Manager 也可以试试
medis
medis 可以的,解析出来是应该是16进制的支付串,收费只能用一个链接,用起来就比较麻烦。主要是永久订阅还挺贵的。我之前也写过一个Redis Desktop Client,由于js不太熟,遇到key特别多,导致生成的html标签太多就直接卡死了,现在也搁置了。现在用mac找破解的好麻烦。
看了下你的 选型也是 electron,key 多 卡死 你可以尝试使用 虚拟滚动来解决。
而且使用 electron 的话 市面上现有的 AnotherRedisDesktopManager 以及 medis 的开源的 v1 比较像,我个人不太喜欢 electron ,打包出来的太大了,毕竟 mac 硬盘寸土寸金啊。
当然如果你有兴趣和时间,其实你也可以选择自己重新编译打包 medis v1 来使用,我之前试过还不错,但需要降低 nodejs 版本来打包(现在好像可以使用 github actions 来做这个事情)。
如果你的 key 不是像我们公司这样多到这么过分的话,也可以尝试 RDM,毕竟是老牌的。只不过得自己打包或者用我上面提到的那个别人用脚本自动打包好的版本,不过 mac 上启动 可能得折腾一下 python 的版本。
目前 redis-pro 虽然目前一直缺少 命令行模式 以及一些其它优化功能(如 json 格式化/高亮、pub/sub等等、树状结构的key,但有些功能非必须,以及有些功能作者说会慢慢加上,只是可能因为作者时间问题,近半年来更新暂时放缓了),但它是我使用这么多以来综合最满意的一款了,免费、轻量、原生、功能够用,这还要啥自行车!
嗯跨端的就是electron了,其他的开发难度比较大。electron开发出来的还是浓浓的web感,有点粗糙的感觉。
看了你的首页,咋俩应该都是干后端的,前端的那些东西还是有点难搞。
刚刚下载了你推荐的rdm还可用,够用了。
维护一个项目还是挺费时间的,工作不饱和维护还可以的,忙起来就有点顾不上了。而且只有一个人开发,我是最近在学习SwiftUI发现了这个项目,但是现在还是初学者,不太好参与进来。有些还是不太好理解。
嗯 我是 java后端,但也算 半精通 vue,其实如果界面想做的精致也可以做到的,你有兴趣的话试试 medis1 ,从UI上来说 其实就很难看出 web 感,更多的看起来像 mac 原生的感觉
其实我也曾经也想写来着,因为不会原生,而 javafx 写界面太丑了,想做的好看、交互友好也比较难,之前也在 gitee 上见过有人使用 javafx 来写的,后面作者好像也放弃了。
而如果采用 BS 架构的话 要么得准备个服务器(会有网络安全和隔离的问题),要么得本地启动个后台服务再打开浏览器,比较傻。
所以如果想做 CS 架构最简单的选型就只能是 封装web。当时想的是 使用 javafx + vue 然后使用 graalvm 打包成原生,但是这个体积也比较大,后来看了 tarui ,想着 如果用 tarui的这种 rust + vue 好像也可以,但是学习 rust 也需要花时间研究。或者 Neutralinojs 这种,然后配合一些 github 开源的 用 go 或者 c 开发 做好了的原生命令行 client ,再用 js 桥接命令行调用别人实现的client,亦或者是 自己去实现 RESP 等高端玩法(因为如果只是简单的做个redis 管理的 GUI 并不需要考虑很多如并发 异步 多线程等问题,简单的实现 RESP 好像也可行)。只是到最后发现 如果使用web 除了界面可能更自由更酷炫,但是再怎么优化性能肯定是比不上原生的,所以后面就一直用 redis-pro + medis 组合使用,如果要用命令行就用 medis 否则就用 redis-pro
我在写redis桌面端的时候就参考的medis1,medis1用react写的,UI还是很不错的。 AnotherRedisDesktopManager就是用的国内的vue的第三方UI。
javafx有点难搞,主要还要一个java运行时,打出来的包肯定不小。
BS确实很傻
CS有点麻烦,还得找对应语言的redis客户端,有的客户端支持的不太好,坑也多。node还好一点,现在js的redis客户端最好用的就是medis的作者的那个ioredis,也一直在更新,我写的时候AnotherRedisDesktopManager用的还是其他的库,后来也改成了ioredis。
js桥接其他的client其实还是挺麻烦的,尤其是不熟悉的语言,调用起来非常麻烦,之前我搞electron调用dll啥的就很麻烦
我看了一下您的源码,我也是刚学swift,有些逻辑不太清楚怎么改,请您看下。
- 1.目前key的加载速度有点慢,看了源码是直接每次scan2000,知道所有的key全部遍历出来,然后再截取这一页的数据,如果这个db下有很多key的话,这个就很慢,而且,每次点下一页就会调用一次,这样体验不太好,希望能把整个key都缓存下来,点下一页的时候就不去redis里查了,直接查内存。或者是每次点下一页要获取全部,只获取需要的50条或者100条。
- 2.还有个问题是,如果redis的key和value都是java的对象,显示有问题其实没关系,但是想要删除这些key是删除不了的
用的是最新版的吗,现在的策略:
数据加载,使用while scan 2000, 达到当前分页的条件就结束了, 这一步应该不慢。 查询总条数, 这个会一直scan下去, 不过这个是异步计算的, 不会影响页面展示。 这个有计划在设置里添加选项, 用户决定是否要用精确条数查询,如果不用最多展示99+页码, 减少scan次数。
我看了一下您的源码,我也是刚学swift,有些逻辑不太清楚怎么改,请您看下。
- 1.目前key的加载速度有点慢,看了源码是直接每次scan2000,知道所有的key全部遍历出来,然后再截取这一页的数据,如果这个db下有很多key的话,这个就很慢,而且,每次点下一页就会调用一次,这样体验不太好,希望能把整个key都缓存下来,点下一页的时候就不去redis里查了,直接查内存。或者是每次点下一页要获取全部,只获取需要的50条或者100条。
- 2.还有个问题是,如果redis的key和value都是java的对象,显示有问题其实没关系,但是想要删除这些key是删除不了的
第二个个问题, 是key展示乱码了吗, 导致无法删除?
一直想加控制台的功能,看到一个组件SwiftTerm,目前还在解决沙箱的问题, 时间太有限了
我看了一下您的源码,我也是刚学swift,有些逻辑不太清楚怎么改,请您看下。