亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

手寫簡版kedis分布式key及value服務的實現(xiàn)及配置

 更新時間:2022年02月28日 11:38:43   作者:kl  
這篇文章主要為大家介紹了手寫簡版的kedis分布式key及value服務的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

前言

今天博主主要介紹兩個開源項目,然后創(chuàng)建應用最終實現(xiàn)的效果就像簡版的redis服務那樣,通過http的get請求,能夠插入和獲取數(shù)據,項目暫取名為kedis,源碼后面會上傳到git倉庫。他們分別是Facebook開源的Rocksdb和netty實現(xiàn)的http容器RestExpress。通過實現(xiàn)這樣的一個key/value系統(tǒng)實例來學習這兩個框架的使用。

rocksdb

RocksDB是一個帶key/value接口的存儲引擎,其中鍵和值是任意字節(jié)流。它是一個C ++庫。它是在Facebook基于google開源的LevelDB(https://github.com/google/LevelDB)開發(fā)的,并為LevelDB API提供向后兼容的支持。

RocksDB支持各種存儲硬件,最初的重點是快速閃存。它使用日志結構化數(shù)據庫引擎進行存儲,完全用C ++編寫,并有一個名為RocksJava的Java包裝器。請參閱RocksJava基礎知識。

RocksDB可以適應各種生產環(huán)境,包括純內存,閃存,硬盤或遠程存儲。在RocksDB無法自動適應的情況下,提供了高度靈活的配置設置,以允許用戶為其進行調整。它支持各種壓縮算法和生產支持和調試的好工具。

特征

  • 專為希望在本地或遠程存儲系統(tǒng)上存儲多達數(shù)TB數(shù)據的應用程序服務器而設計。
  • 優(yōu)化用于在快速存儲 - 閃存設備或內存中存儲中小尺寸鍵值
  • 它適用于具有多個內核的處理器

RocksDB就是這樣的一個key/value存儲引擎,facebook基于RocksDB這個項目寫了MyRocks,一個使用RocksDB實現(xiàn)的msyql數(shù)據庫引擎。通過RocksDB的壓縮技術相比InnoDB能夠節(jié)省很大的存儲空間。newsql數(shù)據庫tidb組件tikv也使用了RocksDB作為底層數(shù)據存儲。

RestExpress

RESTExpress是一個非常高效的小型http容器,可以在Java中創(chuàng)建性能非常高,可擴展的RESTful服務。使用牛逼的Netty框架編寫,RESTExpress使用非阻塞I / O來處理請求,同時利用Executor來服務后端邏輯服務(可能是阻塞)操作。

實現(xiàn)kedis

創(chuàng)建服務并綁定端口

/**
 * @author: kl @kailing.pub
 * @date: 2019/4/12
 */ public class Main { public static void main(String[] args) {
        Configs configs = new Configs();
        configs.fromArgs(args);
        RestExpress server = new RestExpress()
                .setName("kedis-server")
                .setBaseUrl("http://localhost:" +configs.getPort());
        KedisCore core =new KedisCore(configs.getDbPath());
        Routes.define(server,core);
        server.bind(configs.getPort());
        server.awaitShutdown();
    }
}

創(chuàng)建RocksDB引擎api操作類

/**
 * @author: kl @kailing.pub
 * @date: 2019/4/12
 */ public class KedisCore { private RocksDB db; public KedisCore(String path) {
        RocksDB.loadLibrary(); try { final Options options = new Options().setCreateIfMissing(true); this.db = RocksDB.open(options, path);
        } catch (RocksDBException ex) {
            ex.printStackTrace();
        }
    } public String put(Request request, Response response) throws Exception {
        Map<String, String> map = request.getQueryStringMap();
        String key = map.get("key");
        String value = map.get("value");
        db.put(key.getBytes(), value.getBytes()); return "ok";
    } public String get(Request request, Response response) throws Exception {
        Map<String, String> map = request.getQueryStringMap();
        String key = map.get("key"); byte[] values = db.get(key.getBytes()); if(values != null){ return new String(values,"utf-8");
        }else { return null;
        }
    }
}

設置請求路由

/**
 * @author: kl @kailing.pub
 * @date: 2019/4/12
 */ public abstract class Routes { public static void define(RestExpress server,KedisCore core){
       server.uri("/put", core).action("put", HttpMethod.GET).noSerialization();
       server.uri("/get", core).action("get", HttpMethod.GET).noSerialization();
   }
}

mvn install打包后,進入target目錄會有kedis-1.0.jar。CMD下分別執(zhí)行如下腳本啟動驗證

啟動

java -jar kedis-1.0.jar --port 8081

插入數(shù)據

curl http://localhost:8081/put?key=name&amp;value=ckl

獲取數(shù)據

curl http://localhost:8081/get?key=name

文末結語

RocksDB和RestExpress這兩個項目都很有特點,RocksDB作為嵌入式的微存儲引擎java包裝器的大小僅有10M左右,主要是C++編譯后的dll和so文件,其本身功能非常強大,強大到可以作為mysql的底層存儲引擎,對底層存儲做了很多的優(yōu)化,可以見wiki。RestExpress雖很輕量但五臟俱全,非常適合一些小工具暴露http的服務。

以上就是手寫簡版key及value服務kedis的詳細內容,更多關于手寫key及value服務kedis的資料請關注腳本之家其它相關文章!

相關文章

  • SpringBoot日志信息以及Lombok的常用注解詳析

    SpringBoot日志信息以及Lombok的常用注解詳析

    日志在我們的日常開發(fā)當中是必定會用到的,這篇文章主要給大家介紹了關于SpringBoot日志信息以及Lombok的常用注解的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • java明文密碼三重加密方法

    java明文密碼三重加密方法

    這篇文章主要介紹了java明文密碼加密,對一個明文密碼進行了三重加密:第一層柵欄一次,第二層在柵欄一次,第三層在一次摩斯加密,感興趣的小伙伴們可以參考一下
    2016-07-07
  • SpringMVC 重新定向redirect請求中攜帶數(shù)據方式

    SpringMVC 重新定向redirect請求中攜帶數(shù)據方式

    這篇文章主要介紹了SpringMVC 重新定向redirect請求中攜帶數(shù)據方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java實現(xiàn)簡單的聊天室功能

    Java實現(xiàn)簡單的聊天室功能

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單的聊天室功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 序列化版本號serialVersionUID的作用_動力節(jié)點Java學院整理

    序列化版本號serialVersionUID的作用_動力節(jié)點Java學院整理

    Java序列化是將一個對象編碼成一個字節(jié)流,反序列化將字節(jié)流編碼轉換成一個對象,這篇文章主要介紹了序列化版本號serialVersionUID的作用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java遺傳算法之沖出迷宮

    Java遺傳算法之沖出迷宮

    這篇文章首先詳細介紹了什么是遺傳算法,然后通過遺傳算法的思想用實例解析使用遺傳算法解決迷宮問題,需要的朋友可以參考下
    2017-09-09
  • Java通過反射來打印類的方法實現(xiàn)

    Java通過反射來打印類的方法實現(xiàn)

    本文主要介紹了Java通過反射來打印類的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java實現(xiàn)在線聊天室(層層遞進)

    Java實現(xiàn)在線聊天室(層層遞進)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)在線聊天室,層層遞進,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Java實現(xiàn)簡單棋盤存檔和讀取功能

    Java實現(xiàn)簡單棋盤存檔和讀取功能

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單棋盤存檔和讀取功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Springboot?中的?Filter?實現(xiàn)超大響應?JSON?數(shù)據壓縮的方法

    Springboot?中的?Filter?實現(xiàn)超大響應?JSON?數(shù)據壓縮的方法

    這篇文章主要介紹了Springboot?中的?Filter?實現(xiàn)超大響應?JSON?數(shù)據壓縮,定義GzipFilter對輸出進行攔截,定義 Controller該 Controller 非常簡單,主要讀取一個大文本文件,作為輸出的內容,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-10-10

最新評論