Coder Social home page Coder Social logo

mykv's Introduction

1 MyKV简介

MyKV是一个针对DRAM-PM异构存储的持久性键值存储系统。MyKV利用PM的可字节寻址性、接近DRAM的读写延迟以及数据持久性,通过在PM中建立高效的日志机制,保证键值存储系统的数据一致性,通过在DRAM中缓存热点数据,提升键值存储系统的读写性能。

MyKV对外提供服务如下表所示,提供查询键值对、插入/更新键值对和删除键值对服务。

名称 输入 输出 注释
get key value 查找并返回与key关联的value
set key,value / 将value与key关联并插入到键值存储中。如果key已存在,则会覆盖旧的value
del key / 从键值存储中移除key对应的键值对

2 使用MyKV

2.1 准备PM

  1. Create namespace:

    ndctl create-namespace

    这时候,你会在/dev 目录下看到/dev/pmem<id>

  2. Format the pmem device:

    mkfs.ext4 /dev/pmem<id>
  3. Mount as dax:

    mkdir /mnt/pmem<id>
    mount -o dax /dev/pmem<id> /mnt/pmem

2.2 编译MyKV

  1. 下载源码

    git clone https://github.com/mryvae/MyKV.git
  2. 编译

    cd MyKV
    make

2.3 运行mykv-server

  1. 修改mykv.conf

    必须将pmemdir设置为PM的挂载点/mnt/pmem

  2. 运行mykv-server

    ./mykv-server mykv.conf

2.4 使用mykv-cli

可以使用mykv-cli连接MyKV Server,进行查询键值对、插入/更新键值对和删除键值对操作。

示例如下:

./mykv-cli -h 127.0.0.1 -p 6379 set key value
./mykv-cli -h 127.0.0.1 -p 6379 get key
./mykv-cli -h 127.0.0.1 -p 6379 del key

3 MyKV设计与实现

mykv's People

Contributors

mryvae avatar

Stargazers

Eason Wang avatar

Watchers

 avatar

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.