rleveldb

package module
v0.4.1 Latest Latest
Warning

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

Go to latest
Published: Jan 4, 2025 License: GPL-3.0 Imports: 9 Imported by: 2

README

rose-leveldb

基于 syndtr/goleveldb 的高级封装,提供类 Redis 的接口和功能。

特性

  • 支持数据过期时间
  • 支持计数器操作
  • 支持布隆过滤器
  • 简单易用的 API

安装

go get github.com/leafney/rose-leveldb

快速开始

db, err := rleveldb.NewLevelDB("./data")
if err != nil {
    log.Fatal(err)
}
defer db.Close()

// 设置数据
db.SetS("key", "value")
// 设置带过期时间的数据
db.XSetExS("key", "value", time.Hour)
// 计数器操作
count,_ := db.XIncr("counter")

API 文档

基础操作
  • NewLevelDB(dbPath string) (*LevelDB, error) - 创建数据库实例
  • NewBloomFilter(dbPath string, bits int) (*LevelDB, error) - 创建带布隆过滤器的数据库实例
  • Close() error - 关闭数据库连接
  • Get(key string) ([]byte, error) - 获取数据
  • GetS(key string) (string, error) - 获取字符串数据
  • Set(key string, value []byte) error - 设置数据
  • SetS(key string, value string) error - 设置字符串数据
  • Exists(key string) bool - 检查 key 是否存在
  • Del(key string) error - 删除数据
缓存操作
  • XGet(key string) ([]byte, error) - 获取带过期时间的数据
  • XGetS(key string) (string, error) - 获取带过期时间的字符串数据
  • XSet(key string, value []byte) error - 设置数据
  • XSetS(key string, value string) error - 设置字符串数据
  • XSetEx(key string, value []byte, expires time.Duration) error - 设置带过期时间的数据
  • XSetExS(key string, value string, expires time.Duration) error - 设置带过期时间的字符串数据
  • XSetExSec(key string, value []byte,seconds int64) error - 设置带过期时间的缓存数据(使用秒数)
  • XSetExSecS(key string,value string,seconds int64) error - 设置带过期时间的字符串数据(使用秒数)
  • XTTL(key string) (int64, error) - 获取剩余生存时间
  • XExpire(key string, expires time.Duration) error - 设置过期时间
  • XExpireSec(key string, seconds int64) error - 设置过期时间(秒)
  • XExpireAt(key string, tm time.Time) error - 设置过期时间点
计数器操作
  • XIncr(key string) (int64, error) - 将 key 中存储的数字值加 1
  • XIncrBy(key string, increment int64) (int64, error) - 将 key 中存储的数字值增加指定的值
  • XDecr(key string) (int64, error) - 将 key 中存储的数字值减 1
  • XDecrBy(key string, decrement int64) (int64, error) - 将 key 中存储的数字值减少指定的值

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CacheType added in v0.2.0

type CacheType struct {
	Data   []byte
	Expire int64 // Unix timestamp 表示过期时间点
}

CacheType 定义缓存数据结构

type LevelDB

type LevelDB struct {
	// contains filtered or unexported fields
}

LevelDB 结构体封装了 goleveldb 的基本操作

func NewBloomFilter

func NewBloomFilter(dbPath string, bits int) (*LevelDB, error)

NewBloomFilter 创建一个带布隆过滤器的 LevelDB 实例 bits 参数指定布隆过滤器的大小,通常设置为 10 即可 示例:

db, err := NewBloomFilter("./data", 10)
if err != nil {
    log.Fatal(err)
}
defer db.Close()

func NewLevelDB

func NewLevelDB(dbPath string) (*LevelDB, error)

NewLevelDB 创建一个新的 LevelDB 实例 示例:

db, err := NewLevelDB("./data")
if err != nil {
    log.Fatal(err)
}
defer db.Close()

func (*LevelDB) Close

func (l *LevelDB) Close() error

Close 关闭数据库连接 示例:

defer db.Close()

func (*LevelDB) Del added in v0.3.0

func (l *LevelDB) Del(key string) error

Del 删除指定的key 示例:

err := db.Del("key")
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) Exists added in v0.3.0

func (l *LevelDB) Exists(key string) bool

Exists 检查key是否存在 示例:

if db.Exists("key") {
    fmt.Println("key存在")
} else {
    fmt.Println("key不存在")
}

func (*LevelDB) Get

func (l *LevelDB) Get(key string) ([]byte, error)

Get 获取指定key的值 示例:

value, err := db.Get("key")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("值: %s\n", value)

func (*LevelDB) GetS added in v0.2.2

func (l *LevelDB) GetS(key string) (string, error)

GetS 获取指定key的字符串值 示例:

value, err := db.GetS("key")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("字符串值: %s\n", value)

func (*LevelDB) Set added in v0.3.0

func (l *LevelDB) Set(key string, value []byte) error

Set 设置key的值 示例:

err := db.Set("key", []byte("value"))
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) SetS added in v0.3.0

func (l *LevelDB) SetS(key string, value string) error

SetS 设置key的字符串值 示例:

err := db.SetS("key", "value")
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) XDecr added in v0.2.2

func (l *LevelDB) XDecr(key string) (int64, error)

XDecr 将key中存储的数字值减1 该方法是并发安全的 示例:

value, err := db.XDecr("counter")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("新值: %d\n", value)

func (*LevelDB) XDecrBy added in v0.2.2

func (l *LevelDB) XDecrBy(key string, decrement int64) (int64, error)

XDecrBy 将key中存储的数字值减少指定的值 该方法是并发安全的 示例:

value, err := db.XDecrBy("counter", 10)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("新值: %d\n", value)

func (*LevelDB) XExpire added in v0.2.2

func (l *LevelDB) XExpire(key string, expires time.Duration) error

XExpire 设置key的过期时间 示例:

err := db.XExpire("key", time.Hour)
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) XExpireAt added in v0.4.0

func (l *LevelDB) XExpireAt(key string, tm time.Time) error

XExpireAt 设置key的过期时间点 该方法是并发安全的 示例:

err := db.XExpireAt("key", time.Now().Add(time.Hour))
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) XExpireSec added in v0.4.0

func (l *LevelDB) XExpireSec(key string, seconds int64) error

XExpireSec 设置key的过期时间(秒) 示例:

err := db.XExpireSec("key", 3600)
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) XGet added in v0.2.2

func (l *LevelDB) XGet(key string) ([]byte, error)

XGet 获取带过期时间的缓存数据 当数据过期时会自动删除并返回nil 示例:

value, err := db.XGet("key")
if err != nil {
    log.Fatal(err)
}
if value == nil {
    fmt.Println("key不存在或已过期")
} else {
    fmt.Printf("值: %s\n", value)
}

func (*LevelDB) XGetS added in v0.4.0

func (l *LevelDB) XGetS(key string) (string, error)

XGetS 获取带过期时间的字符串数据 示例:

value, err := db.XGetS("key")
if err != nil {
    log.Fatal(err)
}
if value == "" {
    fmt.Println("key不存在或已过期")
} else {
    fmt.Printf("字符串值: %s\n", value)
}

func (*LevelDB) XIncr added in v0.2.2

func (l *LevelDB) XIncr(key string) (int64, error)

XIncr 将key中存储的数字值加1 该方法是并发安全的 示例:

value, err := db.XIncr("counter")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("新值: %d\n", value)

func (*LevelDB) XIncrBy added in v0.2.2

func (l *LevelDB) XIncrBy(key string, increment int64) (int64, error)

XIncrBy 将key中存储的数字值增加指定的值 该方法是并发安全的 示例:

value, err := db.XIncrBy("counter", 10)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("新值: %d\n", value)

func (*LevelDB) XSet added in v0.2.2

func (l *LevelDB) XSet(key string, value []byte) error

XSet 设置带过期时间的缓存数据 示例:

err := db.XSet("key", []byte("value"))
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) XSetEx added in v0.2.2

func (l *LevelDB) XSetEx(key string, value []byte, expires time.Duration) error

XSetEx 设置带过期时间的缓存数据 (使用 time.Duration) 示例:

err := db.XSetEx("key", []byte("value"), time.Hour)
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) XSetExS added in v0.4.0

func (l *LevelDB) XSetExS(key string, value string, expires time.Duration) error

XSetExS 设置带过期时间的字符串数据 (使用 time.Duration) 示例:

err := db.XSetExS("key", "value", time.Hour)
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) XSetExSec added in v0.4.0

func (l *LevelDB) XSetExSec(key string, value []byte, seconds int64) error

XSetExSec 设置带过期时间的缓存数据(使用秒数) 示例:

err := db.XSetExSec("key", []byte("value"), 3600)
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) XSetExSecS added in v0.4.0

func (l *LevelDB) XSetExSecS(key string, value string, seconds int64) error

XSetExSecS 设置带过期时间的字符串数据(使用秒数) 示例:

err := db.XSetExSecS("key", "value", 3600)
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) XSetS added in v0.4.0

func (l *LevelDB) XSetS(key string, value string) error

XSetS 设置带过期时间的字符串数据 示例:

err := db.XSetS("key", "value")
if err != nil {
    log.Fatal(err)
}

func (*LevelDB) XTTL added in v0.2.2

func (l *LevelDB) XTTL(key string) (int64, error)

XTTL 返回key的剩余生存时间(秒) 返回值说明:

-2: key不存在(包括已过期的情况)
-1: key存在但未设置过期时间
>=0: key的剩余生存时间(秒)

示例:

ttl, err := db.XTTL("key")
if err != nil {
    log.Fatal(err)
}
switch ttl {
case -2:
    fmt.Println("key不存在")
case -1:
    fmt.Println("key未设置过期时间")
default:
    fmt.Printf("剩余生存时间: %d秒\n", ttl)
}

Jump to

Keyboard shortcuts

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