Documentation
¶
Overview ¶
Package rocksdb 不同的平台需要安装对应的库,参考这个官方文档:https://github.com/facebook/rocksdb/blob/main/INSTALL.md Windows 平台使用 msys2 mingw64 编译,代码中的库是针对这个编译器。
这个项目只在 Ubuntu 22.04.1 和 Windows 下编译,其它平台需要自行编译/下载/安装对应的 rocksdb 以及依赖库。 -L 指定库目录,如果没有 -L 则从环境变量加载库目录,windows下集成了需要的静态库,Linux下只集成了 librocksdb 的静态库,其它库从环境加载,需要提前安装。
Windows 平台对应的 rocksdb 信息: Base Package: mingw-w64-rocksdb Description: Embedded key-value store for fast storage (mingw-w64) Homepage: https://rocksdb.org/ Repository: https://github.com/facebook/rocksdb/ Documentation: https://rocksdb.org/docs/ License(s): Apache-2.0 OR GPL-2.0-or-later Version: 9.10.0-1 Installation: pacman -S mingw-w64-x86_64-rocksdb Build Date:2025-01-09 20:13:21
Linux平台使用的 librocks.a 是从使用最新的 v10.0.1(03/05/2025) 编译的
Index ¶
- func Restore()
- func RestoreBackup(dbPath, backupPath string, backupId int) bool
- func SetErrLang(errLangString func(err []byte) string)
- func TestBackup()
- type BackupEngine
- func (be *BackupEngine) Close()
- func (be *BackupEngine) CreateBackup(db *Db) bool
- func (be *BackupEngine) GetInfo()
- func (be *BackupEngine) Open(backupPath string, opts *Options) bool
- func (be *BackupEngine) Restore(restorePath string, backupId int) bool
- func (be *BackupEngine) Verify(backupId int) bool
- type ColumnFamily
- func (cf *ColumnFamily) Close()
- func (cf *ColumnFamily) Delete(key []byte) error
- func (cf *ColumnFamily) DeleteBatch(keys [][]byte) error
- func (cf *ColumnFamily) DeletePrefix(prefix []byte) (int, error)
- func (cf *ColumnFamily) DeleteRange(start, end []byte) error
- func (cf *ColumnFamily) Get(key []byte) ([]byte, error)
- func (cf *ColumnFamily) GetMulti(keys [][]byte, cb func(key, val []byte)) error
- func (cf *ColumnFamily) ListPrefix(prefix []byte, cb func(key, val []byte) bool)
- func (cf *ColumnFamily) ListRange(start, end []byte, cb func(key, val []byte) bool)
- func (cf *ColumnFamily) Put(key, value []byte) error
- func (cf *ColumnFamily) PutBatch(keys, values [][]byte) error
- type Db
- type Options
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RestoreBackup ¶
func SetErrLang ¶
SetErrLang rocksdb 返回的错误字符串编码是当前运行环境的语言编码相关的,必然运行环境是中文GBK, 则需要相应的转码才能正确显示内容。鉴于语言编码众多,用户自行设置转码操作。如果不设置这个函数,默认 就按 utf-8 编码来对待,大多数因为字符可以正确显示,但是如果当前平台编码不是 utf-8,则可能乱码。
func TestBackup ¶
func TestBackup()
Types ¶
type BackupEngine ¶
type BackupEngine struct {
// contains filtered or unexported fields
}
func (*BackupEngine) Close ¶
func (be *BackupEngine) Close()
func (*BackupEngine) CreateBackup ¶
func (be *BackupEngine) CreateBackup(db *Db) bool
CreateBackup 即使没有新的数据,这个函数也会创建一个新的备份点,但是它的内容和上一次的备份点是相同的
func (*BackupEngine) GetInfo ¶
func (be *BackupEngine) GetInfo()
func (*BackupEngine) Restore ¶
func (be *BackupEngine) Restore(restorePath string, backupId int) bool
func (*BackupEngine) Verify ¶
func (be *BackupEngine) Verify(backupId int) bool
type ColumnFamily ¶
type ColumnFamily struct {
// contains filtered or unexported fields
}
func (*ColumnFamily) Close ¶
func (cf *ColumnFamily) Close()
func (*ColumnFamily) Delete ¶
func (cf *ColumnFamily) Delete(key []byte) error
func (*ColumnFamily) DeleteBatch ¶
func (cf *ColumnFamily) DeleteBatch(keys [][]byte) error
func (*ColumnFamily) DeletePrefix ¶
func (cf *ColumnFamily) DeletePrefix(prefix []byte) (int, error)
func (*ColumnFamily) DeleteRange ¶
func (cf *ColumnFamily) DeleteRange(start, end []byte) error
DeleteRange 这个函数是枚举然后单独删除数据的代替版 start 和 end 可以传 nil,但是都是 nil 的时候不会匹配任何键,所以不会删除任何数据 nil 和 0 字节的有效指针效果是一样的,函数删除时匹配 start,但是不匹配 end,也就是和 start 相同的键会被删除,但是和 end 相同的键会被保留,只删除 end 之前的键。
func (*ColumnFamily) GetMulti ¶
func (cf *ColumnFamily) GetMulti(keys [][]byte, cb func(key, val []byte)) error
GetMulti 批量获取多个键的值,相对于多次读取更优化, 每个 key 都不能是 nil 否则会报错. 如果某个 key 不存在对应的项,则回调函数里不会包含它,也就是只返回存在的项
func (*ColumnFamily) ListPrefix ¶
func (cf *ColumnFamily) ListPrefix(prefix []byte, cb func(key, val []byte) bool)
ListPrefix 列出指定前缀的项,返回 false 终止,如何要列出全部项,传入一个长度为 0 的 prefix,但是不能是 nil,防止误操作
func (*ColumnFamily) ListRange ¶
func (cf *ColumnFamily) ListRange(start, end []byte, cb func(key, val []byte) bool)
ListRange 列出指定范围的键值对, key == start, 在范围内,key == end 不在范围内 start 和 end 长度都为 0 时,不会返回全部条目,遍历全部键使用 ListPrefix(nil,cb)
func (*ColumnFamily) Put ¶
func (cf *ColumnFamily) Put(key, value []byte) error
func (*ColumnFamily) PutBatch ¶
func (cf *ColumnFamily) PutBatch(keys, values [][]byte) error
PutBatch 批量写入键值对, 函数不会对keys进行查重,所以如果key有重复,会被覆盖
type Db ¶
type Db struct {
// contains filtered or unexported fields
}
func (*Db) AddColumnFamily ¶
AddColumnFamily 添加 column family,这个函数会先检测要添加的是否已经存在,如果已经存在, 直接返回成功,不做任何更改
func (*Db) GetColumnFamily ¶
func (rdb *Db) GetColumnFamily(name string) *ColumnFamily
func (*Db) GetDefault ¶
func (rdb *Db) GetDefault() *ColumnFamily
func (*Db) ListColumnFamily ¶
type Options ¶
type Options struct {
// CreateIfMissing 如果数据库不存在,是否创建新数据库
// 默认值: true
// 设为 false 时,若数据库不存在,打开会失败
CreateIfMissing bool
//CreateColumnFamiliesIfMissing 打开数据库时自动生成不存在的 column families
//当前默认值 true,rocksdb 内部默认值是 false
CreateColumnFamiliesIfMissing bool
// IncreaseParallelism 增加后台线程的并行度,提升压缩和刷写性能
// 默认值: 0
// 通常设置为 CPU 核心数或稍低值,0 表示不调整
IncreaseParallelism int
// ErrorIfExists 如果数据库已存在,是否报错
// 默认值: false
// 设为 true 时,若数据库已存在,打开会失败
ErrorIfExists bool
// WriteBufferSize MemTable 的大小(字节),影响内存使用和写性能
// 默认值: 0
// 增大可减少刷盘频率,但占用更多内存
WriteBufferSize int
// MaxOpenFiles 最大打开文件数,影响文件句柄使用
// 默认值: 0
// 设为 -1 表示无限制,小值可能导致性能下降
MaxOpenFiles int
// DisableWAL 是否禁用 Write-Ahead Log(WAL)
// 默认值: false
// 设为 true 时,禁运 WAL 数据库降不会再记录写日志,但是数据库崩溃时,可能造成数据丢失。
DisableWAL bool
// CompressionType 数据压缩类型,影响存储空间和读写性能
// 默认值: "snappy" (支持: "none", "snappy", "zlib", "bzip2", "lz4", "zstd")
// "none" 表示无压缩,"snappy" 平衡速度和压缩率
CompressionType string
// TargetFileSizeBase 每个 SST 文件的目标大小(字节)
// 默认值: 0
// 影响压缩和读取性能,小值增加文件数,大值减少文件数
TargetFileSizeBase uint64
// MaxBackgroundJobs 后台任务(如压缩、刷盘)的最大线程数
// 默认值: 0
// 增大可提升后台处理速度,但消耗更多 CPU
MaxBackgroundJobs int
// AllowConcurrentMemtableWrite 是否允许多线程并发写入 MemTable
// 默认值: false (RocksDB 6.7+ 支持)
// 设为 true 可提升多线程写性能
AllowConcurrentMemtableWrite bool
//KeepLogFileNum 控制 RocksDB 操作日志(LOG 和 LOG.old.* 文件)的保留数量
KeepLogFileNum int
//RecycleLogFileNum 控制 RocksDB 中 WAL 文件(.log)的回收数量,用于减少文件系统的创建和删除开销。
//默认值:0,表示不回收 WAL 文件,过期后直接删除。
RecycleLogFileNum int
// contains filtered or unexported fields
}
Options 定义 RocksDB 的数据库打开选项