Documentation
¶
Overview ¶
Package jurocksdb 不同的平台需要安装对应的库,参考这个官方文档: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 ¶
- 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) 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 Options
- type RocksCf
- type RocksDb
- func (db *RocksDb) Close()
- func (db *RocksDb) Delete(key []byte) error
- func (db *RocksDb) DeleteBatch(keys [][]byte) error
- func (db *RocksDb) DeletePrefix(prefix []byte) (int, error)
- func (db *RocksDb) Get(key []byte) ([]byte, error)
- func (db *RocksDb) GetMulti(keys [][]byte, cb func(key, val []byte)) error
- func (db *RocksDb) ListPrefix(prefix []byte, cb func(key, val []byte) bool)
- func (db *RocksDb) ListRange(start, end []byte, cb func(key, val []byte) bool)
- func (db *RocksDb) Put(key, value []byte) error
- func (db *RocksDb) PutBatch(keys, values [][]byte) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
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) 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 Options ¶
type Options struct {
// CreateIfMissing 如果数据库不存在,是否创建新数据库
// 默认值: true
// 设为 false 时,若数据库不存在,打开会失败
CreateIfMissing 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 时,数据仅存内存,程序退出后丢失,适合临时数据库
DisableWAL bool
// CompressionType 数据压缩类型,影响存储空间和读写性能
// 默认值: "snappy" (支持: "none", "snappy", "zlib", "bzip2", "lz4", "zstd")
// "none" 表示无压缩,"snappy" 平衡速度和压缩率
CompressionType string
// TargetFileSizeBase 每个 SST 文件的目标大小(字节)
// 默认值: 0
// 影响压缩和读取性能,小值增加文件数,大值减少文件数
TargetFileSizeBase int
// MaxBackgroundJobs 后台任务(如压缩、刷盘)的最大线程数
// 默认值: 0
// 增大可提升后台处理速度,但消耗更多 CPU
MaxBackgroundJobs int
// AllowConcurrentMemtableWrite 是否允许多线程并发写入 MemTable
// 默认值: false (RocksDB 6.7+ 支持)
// 设为 true 可提升多线程写性能
AllowConcurrentMemtableWrite bool
}
Options 定义 RocksDB 的数据库打开选项
type RocksCf ¶
type RocksCf struct {
// contains filtered or unexported fields
}
func (*RocksCf) GetCf ¶
func (dbcf *RocksCf) GetCf(name string) *ColumnFamily
type RocksDb ¶
type RocksDb struct {
// contains filtered or unexported fields
}
func (*RocksDb) DeleteBatch ¶
func (*RocksDb) GetMulti ¶
GetMulti 批量获取多个键的值,相对于多次读取更优化, 每个 key 都不能是 nil 否则会报错. 如果某个 key 不存在对应的项,则回调函数里不会包含它,也就是只返回存在的项
func (*RocksDb) ListPrefix ¶
ListPrefix 列出指定前缀的项,返回 false 终止,如何要列出全部项,传入一个长度为 0 的 prefix,但是不能是 nil,防止误操作