整数键/值可以存储在LevelDB中吗?

Ros*_*ian 5 database key-value leveldb

我搜索了支持整数键和整数值的键值存储.LevelDB似乎是一个不错的选择,但我找不到关于是否支持整数值/键的任何信息

Kir*_*ril 11

你可以在LevelDB中存储几乎任何东西.您通过Slice结构向LevelDB提供不透明的数据片段.这是一个例子:

int intKey = 256;
int intValue = 256*256;

Slice key((char*)&intKey, sizeof(int));
Slice value((char*)&intValue, sizeof(int));

db->Put(leveldb::WriteOptions(), key, value);
Run Code Online (Sandbox Code Playgroud)

这就是它!

但是,需要注意的一点是,尽管在LevelDB中存储整数(作为键和值)通常很好,但它们将通过命令进行排序,BytewiseComparator因此您的密钥必须支持逐字节比较.这也意味着如果您依赖于密钥的特定顺序,那么您必须注意系统上的字节序.

您也可以通过Comparator接口编写自己的比较器,以便替换默认值BytewiseComparator.