GithubHelp home page GithubHelp logo

jenga's Introduction

jenga

jenga是一个带索引可顺序添加(并压缩)数据的数据写入/读取工具,支持数据压缩的算法有:

  • gzip
  • zlib

1 安装

go get github.com/xfali/jenga/jenga

2 使用

2.1 压缩

jenga add

将指定文件/目录添加到jenga文件中

参数

  • -j 指定生成的jenga文件路径
  • -s 指定原文件/目录路径,如为目录则压缩目录中所有文件
  • -k 指定关联查找/获取文件的key
  • -g 指定使用的压缩算法为gzip
  • -z 指定使用的压缩算法为zlib

示例:

jenga add -j all.ja.gz -g -s data1

2.2 查询索引

jenga list

列出所有文件的索引,通过索引可以获得该文件

参数

  • -j 指定查询的jenga文件路径

示例:

jenga list -j all.ja.gz

2.3 获得文件

jenga get

从jenga文件中提取通过key提取指定文件,或者提取所有文件到指定目录

参数

  • -j 指定jenga文件路径
  • -k 指定提取文件的key(可以通过jenga list查询)
  • -f 指定提取文件的目的路径(可以是文件或者目录)

示例:

jenga get -j all.ja.gz -k test -f test

3 项目集成

3.1 安装依赖

go get github.com/xfali/jenga

3.2 压缩文件

// 指定压缩算法为gzip(仅写入时需要指定)
blks = jenga.NewJenga("./test.je.gz", jenga.V2Gzip())
err := blks.Open(jenga.OpFlagCreate | jenga.OpFlagWriteOnly)
if err != nil {
    t.Fatal(err)
}
defer blks.Close()
// reader为要写入数据的io.Reader
_, err := blks.Write(key, reader)
if err != nil {
    t.Fatal(err)
}

3.3 查询索引

blks = jenga.NewJenga("./test.je.gz")
err := blks.Open(jenga.OpFlagReadOnly)
if err != nil {
    t.Fatal(err)
}
defer blks.Close()
l := blks.KeyList()
for _, v := range l {
    t.Log(v)
}

3.4 根据索引提取文件

blks = jenga.NewJenga("./test.je.gz")
err := blks.Open(jenga.OpFlagReadOnly)
if err != nil {
    t.Fatal(err)
}
defer blks.Close()
// writer为要写入key关联数据的io.Writer
_, err = blks.Read(key, writer)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.