Skip to content

Latest commit

 

History

History
243 lines (206 loc) · 9.42 KB

README_cn.md

File metadata and controls

243 lines (206 loc) · 9.42 KB

SSDB 的 golang 客户端

这是 SSDB 客户端以及命令行工具
Fork 自 gossdb, 但是由于其不符合 Golang 的风格以及不积极开发, 而重新开发的一个 SSDB 的客户端库。

Go Report Card GoDoc GitHub license

示例

package main

import (
	"fmt"

	"github.com/wzshiming/ssdb"
)

func main() {
	db, err := ssdb.Connect(
		ssdb.Addr("127.0.0.1:8888"),
		ssdb.Auth("password"),
		// or ssdb.URL("ssdb://127.0.0.1:8888?Auth=password"),
	)
	if err != nil {
		fmt.Println(err)
		return
	}

	err = db.Set("a", ssdb.Value("xxx"))
	if err != nil {
		fmt.Println(err)
		return
	}

	val, err := db.Get("a")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(val)

	err = db.Del("a")
	if err != nil {
		fmt.Println(err)
		return
	}

	val, err = db.Get("a")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(val)

	err = db.ZSet("z", "a", 3)
	if err != nil {
		fmt.Println(err)
		return
	}

	err = db.MultiZSet("z", map[string]int64{
		"b": -1,
		"c": 5,
		"d": 3,
	})
	if err != nil {
		fmt.Println(err)
		return
	}

	resp, err := db.ZRange("z", 0, 10)
	if err != nil {
		fmt.Println(err)
		return
	}

	for k, v := range resp {
		fmt.Printf("  %v : %v\n", k, v)
	}

	return
}

命令行工具


go get -u -v github.com/wzshiming/ssdb/cmd/ssdb

ssdb -p password 127.0.0.1:8888

SSDB (cli) - ssdb command line tool.
Copyright (c) 2018 wzshiming

        'help' for help, 'quit' to quit.

ssdb-server 1.9.4
SSDB 127.0.0.1:8888 > set a xxx

1
1 result(s) (3ms)
SSDB 127.0.0.1:8888 > get a

xxx
1 result(s) (3ms)
SSDB 127.0.0.1:8888 > del a

1
1 result(s) (5ms)
SSDB 127.0.0.1:8888 > get a

not found
(4ms)
SSDB 127.0.0.1:8888 > zset z a 3

0
1 result(s) (3ms)
SSDB 127.0.0.1:8888 > multi_zset z b -1 c 5 d 3

0
1 result(s) (5ms)
SSDB 127.0.0.1:8888 > zrange z 0 10

key value
--- -----
b   -1
a   3
d   3
c   5
4 result(s) (28ms)

API 支持

官方文档
API 文档

  • Server
    • auth password - 向服务器校验访问密码.
    • dbsize - 返回数据库占用空间的近似值, 以字节为单位.
    • flushdb [type] - 删除 SSDB 服务器的所有数据.
    • info [opt] - 返回服务器的信息.
    • slaveof id host port [auth last_seq last_key] - 启动一个从库同步进程.
  • IP Filter
  • Key Value
    • set key value - 设置指定 key 的值内容.
    • setx key value ttl - 设置指定 key 的值内容, 同时设置存活时间.
    • setnx key value - 当 key 不存在时, 设置指定 key 的值内容. 如果已存在, 则不设置.
    • expire key ttl - 设置 key(只针对 KV 类型) 的存活时间.
    • ttl key - 返回 key(只针对 KV 类型) 的存活时间.
    • get key - 获取指定 key 的值内容.
    • getset key value - 更新 key 对应的 value, 并返回更新前的旧的 value.
    • del key - 删除指定的 key.
    • incr key [num] - 使 key 对应的值增加 num.
    • exists key - 判断指定的 key 是否存在.
    • getbit key offset - 获取字符串内指定位置的位值(BIT).
    • setbit key offset val - 设置字符串内指定位置的位值(BIT), 字符串的长度会自动扩展.
    • bitcount key [start] [end] - 计算字符串的子串所包含的位值为 1 的个数.
    • countbit key start size - 计算字符串的子串所包含的位值为 1 的个数.
    • substr key start size - 获取字符串的子串.
    • strlen key - 计算字符串的长度(字节数).
    • keys key_start key_end limit - 列出处于区间 (key_start, key_end] 的 key 列表.
    • rkeys key_start key_end limit - 列出处于区间 (key_start, key_end] 的 key 列表, 反向.
    • scan key_start key_end limit - 列出处于区间 (key_start, key_end] 的 key-value 列表.
    • rscan key_start key_end limit - 列出处于区间 (key_start, key_end] 的 key-value 列表, 反向.
    • multi_set key1 value1 key2 value2 ... - 批量设置一批 key-value.
    • multi_get key1 key2 ... - 批量获取一批 key 对应的值内容.
    • multi_del key1 key2 ... - 批量删除一批 key 和其对应的值内容.
  • Hashmap
    • hset name key value - 设置 hashmap 中指定 key 对应的值内容.
    • hget name key - 获取 hashmap 中指定 key 的值内容.
    • hdel name key - 删除 hashmap 中的指定 key(删除整个 hashmap 用 hclear).
    • hincr name key [num] - 使 hashmap 中的 key 对应的值增加 num.
    • hexists name key - 判断指定的 key 是否存在于 hashmap 中.
    • hsize name - 返回 hashmap 中的元素个数.
    • hlist name_start name_end limit - 列出名字处于区间 (name_start, name_end] 的 hashmap.
    • hrlist name_start name_end limit - 像 hrlist, 逆序.
    • hkeys name key_start key_end - 列出 hashmap 中处于区间 (key_start, key_end] 的 key 列表.
    • hgetall name - 返回整个 hashmap.
    • hscan name key_start key_end limit - 列出 hashmap 中处于区间 (key_start, key_end] 的 key-value 列表.
    • hrscan name key_start key_end limit - 像 hscan, 逆序.
    • hclear name - 删除 hashmap 中的所有 key.
    • multi_hset name key1 value1 key2 value2 ... - 批量设置 hashmap 中的 key-value.
    • multi_hget name key1 key2 ... - 批量获取 hashmap 中多个 key 对应的权重值.
    • multi_hdel name key1 key2 ... - 指删除 hashmap 中的 key.
  • Sorted Set
    • zset name key score - 设置 zset 中指定 key 对应的权重值.
    • zget name key - 获取 zset 中指定 key 的权重值.
    • zdel name key - 获取 zset 中的指定 key.
    • zincr name key num - 使 zset 中的 key 对应的值增加 num. 参数 num 可以为负数. 如果原来的值不是整数(字符串形式的整数), 它会被先转换成整数.
    • zexists name key - 判断指定的 key 是否存在于 zset 中.
    • zsize name - 返回 zset 中的元素个数.
    • zlist - 列出名字处于区间 (name_start, name_end] 的 zset.
    • zrlist - 像 zlist, 逆序.
    • zkeys name key_start score_start score_end limit - 列出 zset 中的 key 列表.
    • zscan name key_start score_start score_end limit - 列出 zset 中处于区间 (key_start+score_start, score_end] 的 key-score 列表.
    • zrscan name key_start score_start score_end limit - 像 zscan, 逆序.
    • zrank name key - 返回指定 key 在 zset 中的排序位置(排名), 排名从 0 开始.
    • zrrank name key - 像 zrank, 逆序.
    • zrange name offset limit - 根据下标索引区间 [offset, offset + limit) 获取 key-score 对, 下标从 0 开始.
    • zrrange name offset limit - 像 zrange, 逆序.
    • zclear name - 删除 zset 中的所有 key.
    • zcount name start end - 返回处于区间 [start,end] key 数量.
    • zsum name start end - 返回 key 处于区间 [start,end] 的 score 的和.
    • zavg name start end - 返回 key 处于区间 [start,end] 的 score 的平均值.
    • zremrangebyrank name start end - 删除位置处于区间 [start,end] 的元素.
    • zremrangebyscore name start end - 删除权重处于区间 [start,end] 的元素.
    • zpop_front name limit - 从 zset 首部删除 limit 个元素.
    • zpop_back name limit - 从 zset 尾部删除 limit 个元素.
    • multi_zset name key1 score1 key2 score2 ... - 批量设置 zset 中的 key-score.
    • multi_zget name key1 key2 ... - 批量获取 zset 中多个 key 对应的权重值.
    • multi_zdel name key1 key2 ... - 批量删除 zset 中的 key.
  • List
    • qpush_front name item1 item2 ... - 往队列的首部添加一个或者多个元素.
    • qpush_back name item1 item2 ... - 往队列的尾部添加一个或者多个元素.
    • qpop_front name size - 从队列首部弹出最后一个或者多个元素.
    • qpop_back name size - 从队列尾部弹出最后一个或者多个元素.
    • qpush name item1 item2 ... - 是 qpush_back 的别名..
    • qpop name size - 是 qpop_front 的别名..
    • qfront name - 返回队列的第一个元素.
    • qback name - 返回队列的最后一个元素.
    • qsize name - 返回队列的长度.
    • qclear name - 清空一个队列.
    • qget name index - 返回指定位置的元素.
    • qset name index val - 更新位于 index 位置的元素.
    • qrange name offset limit - 返回下标处于区域 [offset, offset + limit] 的元素.
    • qslice name begin end - 返回下标处于区域 [begin, end] 的元素. begin 和 end 可以是负数
    • qtrim_front name size - 从队列头部删除多个元素.
    • qtrim_back name size - 从队列头部删除多个元素.
    • qlist name_start name_end limit - 列出名字处于区间 (name_start, name_end] 的 queue/list.
    • qrlist name_start name_end limit - 像 qlist, 逆序.

许可证

软包根据MIT License。有关完整的许可证文本,请参阅LICENSE