將RESP.app的備份數據轉碼成AnotherRedisDesktopManager的格式

將RESP.app的備份數據轉碼成AnotherRedisDesktopManager的格式

最近發現了AnotherRedisDesktopManager,這個軟件可以直接展示proto數據。

將RESP.app導出的json文件,轉碼為AnotherRedisDesktopManager的ano文件(是一個list轉了base64)
注意:AnotherRedisDesktopManager是沒有分組的,這個工具只轉了基礎的功能,ip、端口、密碼、顏色,復雜功能沒有處理。

創建一個html文件,復制下面的代碼貼進去,打開即可。
在這里插入圖片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>redis數據轉碼</title>
</head>
<body>
<div><h2>redis數據轉碼</h2><p style="color: #a8a6a6"><a href="https://github.com/uglide/RedisDesktopManager" target="_blank">RESP.app</a>的數據轉碼成<a href="https://github.com/qishibo/AnotherRedisDesktopManager/" target="_blank">AnotherRedisDesktopManager</a>的格式</p><!--選擇RESP.app的json文件--><input type="file" id="file"><br/><br/><button onclick="convert()">轉換</button><br/><p id="result" style="color: green"></p><script>function convert() {// 獲取文件(utf-8編碼)let file = document.getElementById('file').files[0];// 讀取文件let reader = new FileReader();reader.readAsText(file);reader.onload = function () {// 解析json(utf-8編碼)if (reader.result.startsWith("\ufeff")) {reader.result = reader.result.substring(1);} else {if (reader.result.startsWith("\uFEFF")) {reader.result = reader.result.substring(1);}}let json = JSON.parse(reader.result);// 轉換(轉換后的格式為AnotherRedisDesktopManager的格式,一個大list)let result = [];for (let i = 0; i < json.length; i++) {//新版加了分組功能,需要判斷若是有connections,則為分組,處理里面的連接,否則為連接if (json[i].connections) {for (let j = 0; j < json[i].connections.length; j++) {// 處理連接try {result.push(convertConnection(json[i].connections[j], result.length + 1));} catch (e) {console.log("解析失敗", json[i].connections[j]);continue;}}} else {// 處理連接try {result.push(convertConnection(json[i], result.length + 1));} catch (e) {console.log("解析失敗", json[i]);continue;}}}// console.log(result);if (result.length == 0) {alert("解析失敗,請檢查文件格式");return;}//將結果轉為base64加密字符串let base64 = safeBtoa(JSON.stringify(result));//結果下載為 connections.ano 文件let link = document.createElement('a');link.href = "data:text/plain;charset=utf-8," + encodeURIComponent(base64);link.download = "connections.ano";link.click();//提示轉換成功document.getElementById('result').innerHTML = "轉換成功,請下載文件";}}/*** 處理連接,返回AnotherRedisDesktopManager的格式* @param connection*/function convertConnection(connection, order) {// 處理連接let result = {"host": connection.host,"port": connection.port,"auth": !connection.auth ? "" : connection.auth,"username": !connection.username ? "" : connection.username,"name": connection.name,"separator": connection.namespace_separator,"cluster": false,"connectionReadOnly": false,"key": generateKey(),"order": order};if (connection.icon_color) {result.color = connection.icon_color;}return result;}/*** 生成一個隨機的key,時間戳_5位隨機字符串*/function generateKey() {return Date.now() + "_" + Math.random().toString(36).substring(2, 7);}/*** 安全地將字符串編碼為 Base64(支持 Unicode)* @param {string} str - 要編碼的字符串* @returns {string} - Base64 編碼后的字符串*/function safeBtoa(str) {// 先將Unicode字符轉為UTF-8編碼的二進制字符串const utf8Str = unescape(encodeURIComponent(str));// 再轉為Base64return btoa(utf8Str);}</script>
</div></body>
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84994.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84994.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84994.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端基礎知識JavaScript系列 - 09(JavaScript原型,原型鏈 )

一、原型 JavaScript 常被描述為一種基于原型的語言——每個對象擁有一個原型對象 當試圖訪問一個對象的屬性時&#xff0c;它不僅僅在該對象上搜尋&#xff0c;還會搜尋該對象的原型&#xff0c;以及該對象的原型的原型&#xff0c;依次層層向上搜索&#xff0c;直到找到一個…

vue3+ts 使用VueCropper實現剪切圖片

效果圖&#xff1a; 參考文檔&#xff1a; Vue-Cropper 文檔Vue-Cropper 文檔 安裝VueCropper //npm安裝 npm install vue-croppernext -d --save//yarn安裝 yarn add vue-croppernext 引入組件 在main.ts中全局注冊&#xff1a; import VueCropper from vue-cropper; i…

el-table特殊表頭樣式

el-table特殊表頭樣式 實現表頭是按鈕 <el-table-column align"center"><template slot"header"><el-buttonsize"mini"type"primary"icon"el-icon-plus"circleclick"addData"></el-button&g…

el-tree的屬性render-content自定義樣式不生效

需求是想要自定義展示el-tree的項&#xff0c;官網有一個:render-content屬性&#xff0c;用的時候發現不管是使用class還是style&#xff0c;樣式都沒有生效&#xff0c;還會報一個錯&#xff0c;怎么個事呢&#xff0c;后來發現控制臺還會報一個錯“vue.js:5129 [Vue warn]: …

銀杏書簽里的春天

春末的細雨沾濕了舊書扉頁&#xff0c;我在泛黃的《飛鳥集》里發現那枚銀杏書簽時&#xff0c;窗外的梧桐樹正抖落最后一片枯葉。深褐色的葉脈間夾著張字條&#xff0c;娟秀的字跡被歲月暈染&#xff1a;"給永遠在奔跑的人。" 十年前的我在舊書店打工&#xff0c;每天…

spring-ai 1.0.0 學習(十四)——向量數據庫

向量數據庫是AI系統中常用的工具&#xff0c;主要用來存儲文檔片段及進行語義相似度查找 與傳統數據庫不同&#xff0c;它執行的是相似度查找而不是精確匹配 最小化樣例 首先在application.properties中&#xff0c;根據所用Embedding模型&#xff0c;添加一個嵌入式模型型號…

Spring Boot 的Banner的介紹和設置

Spring Banner 是指在 Spring Boot 應用啟動時,控制臺上顯示的那一段 ASCII 藝術字(通常是 Spring 的 logo),以及一些應用信息。 Banner 是 Spring Boot 提供的一個小但有趣的功能,可以讓應用程序啟動時更具個性也顯得更高級。 默認 Banner Spring Boot 內置了一個默認…

魅族“換血”出牌:手機基本盤站不穩,想靠AI和汽車“改命”

撰稿|何威 來源|貝多財經 被吉利收購后&#xff0c;魅族逐漸轉向在AI領域躬身耕作。 自2024年2月以“All in AI”正式宣告轉型、喊出不再推出傳統智能手機的豪言開始&#xff0c;這家曾以設計見長的手機廠商&#xff0c;將下半場押注在AI終端、AR眼鏡與智能座艙系統上&#…

力扣熱題100之將有序數組轉換為二叉搜索樹

題目 給你一個整數數組 nums &#xff0c;其中元素已經按 升序 排列&#xff0c;請你將其轉換為一棵 平衡 二叉搜索樹。 代碼 使用遞歸的方法 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # s…

mac隱藏文件現身快捷鍵

在 macOS 系統中&#xff0c;?顯示/隱藏隱藏文件? 有兩種常用方法&#xff0c;以下是詳細說明&#xff1a; ? 方法一&#xff1a;使用快捷鍵&#xff08;最簡單&#xff09; 打開 ?訪達&#xff08;Finder&#xff09;?。 進入任意文件夾&#xff08;如桌面或文檔&#x…

IAR Workspace 中 Debug 與 Release 配置的深度解析

IAR Workspace 中 Debug 與 Release 配置的深度解析 一、配置的本質區別 1. 核心目標對比 特性Debug 配置Release 配置優化目標調試友好性性能/尺寸優化代碼優化無或低優化 (-O0/-O1)高級優化 (-O2/-O3/-Oz)調試信息包含完整符號信息無或最小化符號斷言檢查啟用通常禁用輸出…

Ubuntu下安裝python3

一、下載python3源碼 以要安裝的是python3.13.5為例&#xff0c;在 Index of /ftp/python/3.13.5/ 下載Python-3.13.5.tgz&#xff1a; 將壓縮包上傳到Ubuntu系統中&#xff0c;解壓&#xff1a; tar -zxvf Python-3.13.5.tgz 二、安裝 進入解壓后的源碼目錄&#xff1a; c…

計算機基礎和Java編程的練習題

1. 計算機的核心硬件是什么&#xff1f;各自有什么用&#xff1f; 中央處理器&#xff08;CPU&#xff09;&#xff1a;負責執行程序中的指令&#xff0c;進行算術和邏輯運算&#xff0c;是計算機的“大腦”。 內存&#xff08;RAM&#xff09;&#xff1a;臨時存儲CPU正在處…

橋頭守望者

趙阿姨在324國道邊的便利店守了八年柜臺&#xff0c;她的記賬本里藏著特殊的日歷——那些標著KLN字母的運輸單據總在固定日期出現&#xff0c;精確得像是節氣。"比氣象臺還準"&#xff0c;她指著玻璃窗上凝結的水珠說。去年寒潮來襲時&#xff0c;她親眼看見送貨員小…

C語言函數的參數傳遞和C++函數的參數傳遞

文章目錄 C語言值傳遞地址傳遞 C引用傳遞 C語言 值傳遞 這種方式使用變量、數組元素作為函數參數&#xff0c;實際是將實參的值復制到形參相應的存儲單元中&#xff0c;即形參和實參分別占用不同的存儲單元&#xff0c;這種傳遞方式稱為“參數的值傳遞”。在調用結束后&#…

設計模式-三大工廠

工廠模式有三種&#xff0c;分別是簡單工廠模式、工廠方法模式、抽象工廠模式。三種模式從前到后越來越抽象&#xff0c;也更具有一般性。 設計模式 優點 缺點 簡單工廠 1.實現了對責任的分割&#xff0c;它提供了專門的工廠類用于創建對象。 1.違背了開閉原則。 2.使用了…

在 AI 工具海洋中掌舵:Cherry Studio 如何成為你的統一指揮中心

01 被 AI 工具包圍的知識工作者現狀 在這個 AI 爆發的時代&#xff0c;知識工作者的工具庫正經歷前所未有的擴容。以我為例&#xff0c;按平臺類型梳理日常使用的 AI 工具&#xff0c;已然形成三層矩陣&#xff1a; 「云端智能助手」&#xff1a;Kimi、豆包、ChatGPT、Gemini…

Java 線程池技術深度解析與代碼實戰

為什么線程池總在深夜崩潰&#xff1f; 昨天我這項目又經歷了一次爆破——路由推送服務突然崩潰&#xff0c;排查發現線程池隊列堆積了幾萬任務直接把內存撐爆。早上起來看見人都麻了&#xff0c;線程池用不好&#xff0c;分分鐘變系統炸彈。今天我們就來系統梳理線程池的實戰…

Gradio可視化構建聊天機器人

Gradio是一個Python庫&#xff0c;專門用于快速構建和部署機器學習模型的Web界面。它的名字來源于"Gradient"&#xff08;梯度&#xff09;&#xff0c;最初是為了讓機器學習開發者能夠快速展示他們的模型而設計的。 1. Gradio是什么&#xff1f; 核心概念 快速原…

selenium如何識別條形驗證碼,自動輸入驗證碼

在自動化測試或網頁爬取中&#xff0c;識別驗證碼是常見的難點。Selenium 本身不具備直接識別驗證碼的能力&#xff0c;但可以通過結合第三方工具、OCR 技術或人工介入等方式解決。以下是多種可行方案的詳細實現思路及代碼示例&#xff1a; 一、方案一&#xff1a;使用第三方驗…