Skip to content
Go to file

Latest commit

"" is no longer maintained.

Git stats


Failed to load latest commit information.
Latest commit message
Commit time

store GoDoc Build Status

store is a data-store library for Go that provides a set of platform-independent interfaces to persist and retrieve data.

Its primary goal is to wrap existing implementations of such primitives, such as those in package redis, into shared public interfaces that abstract functionality, plus some other related primitives.

It currently supports Redis from the redis package.

NOTE: This library is currently under active development and not ready for production use.


The below example stores, lists and fetches the saved records

package main

import (


type hacker struct {
  Id        string
  Name      string
  Birthyear int

func (h *hacker) Key() string {
  return h.Id

func (h *hacker) SetKey(k string) {
  h.Id = k

func main() {
  store, err := redis.NewStore("", "")
  if err != nil {
    panic(err) // handle error

  // Save a hacker in the store with a auto-generated uuid
  if err := store.Write(&hacker{Name: "Alan Turing", Birthyear: 1912}); err != nil {
    panic(err) // handle error

  var hackers []hacker
  // Populate hackers slice with ids of all hackers in the store

  alan := hackers[0]
  fmt.Println("Hello,", alan.Name)

  fmt.Println("Listing all", len(hackers), "hackers")
  // Fetches all hackers with names from the store
  for _, h := range hackers {
    fmt.Printf("%s (%d) (%s)\n", h.Name, h.Birthyear, h.Id)


Below are items I am and plan on working on in the near future. Contributions are welcome.

Feature Status
Save multiple records in a single call using pipelining implementing
Query (using finders) and indexing


Dependency management

Users who import store into their package main are responsible to organize and maintain all of their dependencies to ensure code compatibility and build reproducibility. Store makes no direct use of dependency management tools like Godep.

We will use a variety of continuous integration providers to find and fix compatibility problems as soon as they occur.

Running Testing

$ make test


$ make benchmark
BenchmarkRedisWrite      10000  104302 ns/op
BenchmarkRead            20000  65870 ns/op
BenchmarkRead1k          20     67325041 ns/op
BenchmarkRedisList1k     50     27598338 ns/op
BenchmarkRedisList10k    30     71845057 ns/op
BenchmarkReadMultiple1k  200    7453783 ns/op


A simple and fast Redis backed key-value store library for Go



You can’t perform that action at this time.