zoukankan      html  css  js  c++  java
  • storage.go

    package storage

    import (
        "fmt"
        "os"
    )

    const DEFAULT_STORAGE_ENGINE = "bolt"  //默认存储引擎 为 bolt
    //存储引擎map集合  
    var supportedStorage = map[string]func(path string) (Storage, error){
        "kv":   openKVStorage,
        "bolt": openBoltStorage,
    }
    //存储引擎注册
    func RegisterStorageEngine(name string, fn func(path string) (Storage, error)) {
        supportedStorage[name] = fn
    }
    //存储引擎接口
    type Storage interface {
        Set(k, v []byte) error
        Get(k []byte) ([]byte, error)
        Delete(k []byte) error
        ForEach(fn func(k, v []byte) error) error
        Close() error
        WALName() string
    }
    //打开存储引擎  存储引擎 优先使用用户自定的引擎  ,默认引擎为bolt  。如果不存在 使用默认引擎
    func OpenStorage(path string) (Storage, error) {
        wse := os.Getenv("WUKONG_STORAGE_ENGINE") //默认从环境变量中  加载存储引擎
        if wse == "" {
            wse = DEFAULT_STORAGE_ENGINE
        }
    //从引擎map中获取 引擎对象
        if fn, has := supportedStorage[wse]; has {
            return fn(path)
        }
        return nil, fmt.Errorf("unsupported storage engine %v", wse)
    }

  • 相关阅读:
    Unity3d限制帧数
    Linux 后台运行程序
    Flask异步发送邮件的方法
    [转]视图多表
    dede 织梦手机静态化一键生成插件
    如何在wordpress中设置关键词和描述
    前端PS切图
    帝国cms用自定义列表页做首页
    帝国cms 滚动加载更多整合
    swiper 自定义pagination 样式内容
  • 原文地址:https://www.cnblogs.com/zhangboyu/p/7461664.html
Copyright © 2011-2022 走看看