关于micro:go-micro-store

66次阅读

共计 1097 个字符,预计需要花费 3 分钟才能阅读完成。

micro.newService()中 newOptions

func newOptions(opts ...Option) Options {
    opt := Options{
        Auth:      auth.DefaultAuth,
        Broker:    broker.DefaultBroker,
        Cmd:       cmd.DefaultCmd,
        Config:    config.DefaultConfig,
        Client:    client.DefaultClient,
        Server:    server.DefaultServer,
        Store:     store.DefaultStore,
        Registry:  registry.DefaultRegistry,
        Router:    router.DefaultRouter,
        Runtime:   runtime.DefaultRuntime,
        Transport: transport.DefaultTransport,
        Context:   context.Background(),
        Signal:    true,
    }

    for _, o := range opts {o(&opt)
    }

    return opt
}

初始化了一堆根底设置,来看看 Store
store.DefaultStore,
这里不要间接去看 store/store.go 中的
DefaultStore Store = new(noopStore)
因为在 micro/defaults.go 中曾经初始化了,默认应用的是
store.DefaultStore = memoryStore.NewStore()

// NewStore returns a memory store
func NewStore(opts ...store.Option) store.Store {
    s := &memoryStore{
        options: store.Options{
            Database: "micro",
            Table:    "micro",
        },
        store: cache.New(cache.NoExpiration, 5*time.Minute),
    }
    for _, o := range opts {o(&s.options)
    }
    return s
}

type memoryStore struct {
    options store.Options

    store *cache.Cache
}
  1. 初始化了 memoryStore{},store 是应用的 patrickmn/go-cache
  2. 设置 options,返回 memoryStore 实例

性能比较简单,在 store/memory/memory.go 封装了读写删改等操作函数

其余 store 有 cache,cockroach,file,service,实现都比较简单,有趣味能够自行翻看

正文完
 0