store

package module
v0.0.0-...-aacb0ea Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2019 License: GPL-3.0 Imports: 1 Imported by: 3

README

store

store是对k-v数据库的一个简单封装,在kv的基础上封装了map、list、set、和sorted zet.

特性

  • redis协议兼容
  • 事务支持

运行store

git clone git@github.com:infinivision/store.git
cd store/test
go build
./test

test是一个简单的redis服务器的例子,用户可以根据需求自己修改.

redis commands

和redis的差别

sorted set中的score为int64的整形而非redis中的浮点数,另外HSET只要成功永远返回1.

string
command format
GET GET key
DEL DEL key
SET SET key value
hash
command format
HKEYS HKEYS key
HVALS HVALS key
HCLEAR HCLEAR key
HGET HGET key field
HSET HSET key field value
list
command format
LLEN LLEN key
LPOP LPOP key
RPOP RPOP key
LCLEAR LCLEAR key
LPUSH LPUSH key value
RPUSH RPUSH key value
LINDEX LINDEX key index
LSET LSET key index value
LRANGE LRANGE key start stop
set
command format
SCLEAR SCLEAR key
SMEMBERS SMEMBERS key
SADD SADD key member
SREM SREM key member
SISMEMBER SISMEMBER key member
sorted set
command format
ZCLEAR ZCLEAR key
ZREM ZREM key member
ZSCORE ZSCORE key member
ZADD ZADD key score member
ZRANGE ZRANGE key start stop

性能分析

redis-benchmark -h 127.0.0.1 -p 6378 -t set,get,lpop,lpush,rpop,rpush,hset,sadd -n 100000 -q
  • SET: 6207.71 requests per second
  • GET: 92250.92 requests per second
  • LPUSH: 23490.72 requests per second
  • RPUSH: 22261.80 requests per second
  • LPOP: 22993.79 requests per second
  • RPOP: 22820.63 requests per second
  • SADD: 6103.14 requests per second
  • HSET: 6008.17 requests per second
redis-benchmark -h 127.0.0.1 -c 500 -p 6378 -t set,get,lpop,lpush,rpop,rpush,hset,sadd -n 100000 -q
  • SET: 49975.02 requests per second
  • GET: 78616.35 requests per second
  • LPUSH: 94339.62 requests per second
  • RPUSH: 92678.41 requests per second
  • LPOP: 93984.96 requests per second
  • RPOP: 95602.30 requests per second
  • SADD: 33123.55 requests per second
  • HSET: 39123.63 requests per second
redis-benchmark -h 127.0.0.1 -c 1000 -p 6378 -t set,get,lpop,lpush,rpop,rpush,hset,sadd -n 100000 -q
  • SET: 74962.52 requests per second
  • GET: 73855.24 requests per second
  • LPUSH: 85616.44 requests per second
  • RPUSH: 89686.10 requests per second
  • LPOP: 90009.01 requests per second
  • RPOP: 70224.72 requests per second
  • SADD: 72727.27 requests per second
  • HSET: 70372.98 requests per second

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	NotExist  = errors.New("NotExist")
	OutOfSize = errors.New("Out of Size")
)

Functions

This section is empty.

Types

type Store

type Store interface {
	// kv
	Del([]byte) error
	Set([]byte, []byte) error
	Get([]byte) ([]byte, error)

	// map
	Mclear([]byte) error
	Mdel([]byte, []byte) error
	Mkeys([]byte) ([][]byte, error)
	Mvals([]byte) ([][]byte, error)
	Mset([]byte, []byte, []byte) error
	Mget([]byte, []byte) ([]byte, error)
	Mkvs([]byte) ([][]byte, [][]byte, error)

	// list
	Llen([]byte) int64
	Lclear([]byte) error
	Llpop([]byte) ([]byte, error)
	Lrpop([]byte) ([]byte, error)
	Lset([]byte, int64, []byte) error
	Lrpush([]byte, []byte) (int64, error)
	Llpush([]byte, []byte) (int64, error)
	Lindex([]byte, int64) ([]byte, error)
	Lrange([]byte, int64, int64) ([][]byte, error)

	// set
	Sclear([]byte) error
	Sadd([]byte, []byte) error
	Sdel([]byte, []byte) error
	Smembers([]byte) ([][]byte, error)
	Selem([]byte, []byte) (bool, error)

	// sorted set
	Zclear([]byte) error
	Zdel([]byte, []byte) error
	Zadd([]byte, int32, []byte) error
	Zscore([]byte, []byte) (int32, error)
	Zrange([]byte, int32, int32) ([][]byte, error)

	NewTransaction() Transaction
}

type Transaction

type Transaction interface {
	Commit() error
	Cancel() error

	// kv
	Del([]byte) error
	Set([]byte, []byte) error
	Get([]byte) ([]byte, error)

	// map
	Mclear([]byte) error
	Mdel([]byte, []byte) error
	Mkeys([]byte) ([][]byte, error)
	Mvals([]byte) ([][]byte, error)
	Mset([]byte, []byte, []byte) error
	Mget([]byte, []byte) ([]byte, error)
	Mkvs([]byte) ([][]byte, [][]byte, error)

	// list
	Llen([]byte) int64
	Lclear([]byte) error
	Llpop([]byte) ([]byte, error)
	Lrpop([]byte) ([]byte, error)
	Lset([]byte, int64, []byte) error
	Lrpush([]byte, []byte) (int64, error)
	Llpush([]byte, []byte) (int64, error)
	Lindex([]byte, int64) ([]byte, error)
	Lrange([]byte, int64, int64) ([][]byte, error)

	// set
	Sclear([]byte) error
	Sadd([]byte, []byte) error
	Sdel([]byte, []byte) error
	Smembers([]byte) ([][]byte, error)
	Selem([]byte, []byte) (bool, error)

	// sorted set
	Zclear([]byte) error
	Zdel([]byte, []byte) error
	Zadd([]byte, int32, []byte) error
	Zscore([]byte, []byte) (int32, error)
	Zrange([]byte, int32, int32) ([][]byte, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL