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