Python 有没有好用的本地文件实现的 key, value 存储

查看 434|回复 27
nuk   
dbm 啊,B+tree ,性能吊打 sqlite 的。
est   
LZ 你看看 @aijam @nuk 说的这个吧。
TheWalkingDead   
DiskCache 和 dbm 都是 Python 中用于键值存储的库,但它们在实现和使用方面有一些区别。以下是对 DiskCache 和 dbm 的比较:
实现方式:
- DiskCache:DiskCache 是一个独立的键值存储库,使用本地文件系统作为存储。它提供了持久化的缓存功能,并支持多种数据类型(如字符串、字节、JSON 、pickle 等)。DiskCache 使用 SQLite 作为底层存储引擎,并通过文件索引和缓存管理来提供高效的存储和检索。
- dbm:dbm 是 Python 标准库中的一个模块,提供了简单的键值存储接口。它使用本地文件作为存储,并提供了几种实现,如 dbm.gnu 、dbm.ndbm 和 dbm.dumb 。dbm 实现依赖于不同的底层库,例如 GDBM 、NDBM 和 DumbDBM ,它们在功能和性能方面可能有所不同。
功能和灵活性:
- DiskCache:DiskCache 提供了更多的功能和灵活性。它支持缓存过期、最大缓存大小、存储压缩、读写锁等功能,以及自定义的存储和序列化机制。DiskCache 还可以作为一个独立的缓存系统,用于处理大量的数据,并提供了更高级的缓存管理功能。
- dbm:dbm 提供了简单的键值存储功能,适用于基本的存储需求。它的功能相对有限,不支持缓存过期、存储压缩等高级功能。dbm 实现通常用于简单的应用程序,不需要复杂的存储和检索需求。
性能:
- DiskCache:DiskCache 通过使用 SQLite 作为底层存储引擎,并提供索引和缓存管理等优化技术,可以提供较高的性能和效率。
- dbm:dbm 的性能取决于底层实现。不同的 dbm 实现可能会有一些性能差异,因此在选择时需要考虑具体的需求。
综上所述,DiskCache 提供了更丰富的功能和灵活性,并通过优化的存储引擎提供较高的性能。而 dbm 是 Python 标准库中的一个简单键值存储模块,适用于基本的存储需求。根据实际需求,可以选择适合的库来进行键值存储。
shijingshijing   
找冷门的或者自己写估计还不如 SQLite 或者 Redis 性能好,毕竟用的人那么多,基本上都优化到了极致。
Pastsong   
@TheWalkingDead 老发 chatgpt 被容易被 ban 号
Trim21   
标准库里有一个 shelve
shinession   
@TheWalkingDead 感谢, dbm 第一次听说, 原来还有这种用法
SenLief   
我写简单的持久化存储就用的是 dbm ,用 shelve 持久化的,不过最大的问题就是 dbm 在不同的系统和 python 版本下表现得不同。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部