Caching 使用RocksDB作为图像缩略图的本地缓存

Caching 使用RocksDB作为图像缩略图的本地缓存,caching,key-value-store,rocksdb,database,nosql,Caching,Key Value Store,Rocksdb,Database,Nosql,我正在为macOS构建一个桌面应用程序,允许用户浏览一组视频。为每个视频生成缩略图是一项相对昂贵的操作,因此我希望缓存已生成的任何缩略图。此缓存不需要在应用程序启动时保持。速度并不是那么关键,因为几乎任何东西都比解码视频帧快 我正在考虑使用RocksDB来存储缩略图,我想知道这是否是RocksDB的合适用法。大多数RocksDB文档都涉及设置和获取字符串作为值,但在最新版本中,添加了pinnablesicle似乎使存储二进制数据变得更容易。在我的应用程序中,我将为缩略图存储高度压缩的JPEG数据

我正在为macOS构建一个桌面应用程序,允许用户浏览一组视频。为每个视频生成缩略图是一项相对昂贵的操作,因此我希望缓存已生成的任何缩略图。此缓存不需要在应用程序启动时保持。速度并不是那么关键,因为几乎任何东西都比解码视频帧快

我正在考虑使用RocksDB来存储缩略图,我想知道这是否是RocksDB的合适用法。大多数RocksDB文档都涉及设置和获取字符串作为值,但在最新版本中,添加了
pinnablesicle
似乎使存储二进制数据变得更容易。在我的应用程序中,我将为缩略图存储高度压缩的JPEG数据,最高可达512 x 512px

以这种方式使用RocksDB时,我应该考虑什么?是否有任何配置选项有利于针对这种用例进行调优或调整?我更希望RocksDB保持较低的内存开销,因为我愿意在需要缩略图时承受从磁盘读取的性能损失


(如果一开始使用RocksDB作为图像缓存是一个非常糟糕的主意,那么我想更好地理解原因。)

为什么不将文件名/路径存储为键,将缩略图的路径存储为值?实际映像可以存储在磁盘上的某个目录中。是的,这是一种完全有效的方法。我唯一担心的是我可能会生成数千个缩略图。在大多数涉及将缩略图存储为单个文件的实现中,不可避免地必须开始跨多个子目录进行“切分”。我喜欢(几乎)单一文件数据库的简单性,很像SQLite,并且非常好奇RocksDB在这种情况下的性能。我试图更好地理解它对于这项工作来说是完全错误的工具,一个合理的工具,如果不是完美的工具,或者是一个很好的选择。为什么不将文件名/路径存储为键,将缩略图的路径存储为值呢?实际映像可以存储在磁盘上的某个目录中。是的,这是一种完全有效的方法。我唯一担心的是我可能会生成数千个缩略图。在大多数涉及将缩略图存储为单个文件的实现中,不可避免地必须开始跨多个子目录进行“切分”。我喜欢(几乎)单一文件数据库的简单性,很像SQLite,并且非常好奇RocksDB在这种情况下的性能。我试图更好地理解这是一个完全错误的工作工具,一个合理的,如果不是完美的工具,或者一个像这样的伟大选择。