内存数据库表中的Out of Process,支持高速缓存的查询

Set*_*ker 16 sql caching in-memory-database redis in-memory-tables

我有一个不断访问的SQL表,但很少变化.

表由UserID分区,每个用户在表中有许多记录.

我想保存数据库资源并将此表移近某种内存缓存中的应用程序.

在进程中,缓存过于占用内存,因此需要在应用程序外部进行缓存.

像Redis这样的Key Value商店由于与Redis之间序列化和反序列化表的开销而被证明是低效的.

我正在寻找可以将这个表(或数据分区)存储在内存中的东西,但是让我只查询我需要的信息,而不需要为每次读取序列化和反序列化大块数据.

是否有任何东西可以在内存数据库表中提供Out of Process,它支持高速缓存的查询?

搜索显示Apache Ignite可能是一个可能的选择,但我正在寻找更明智的建议.

for*_*ack 9

由于它不在进程中,因此必须进行序列化和反序列化.您关注的问题是如何减少序列化/去分类工作.如果您使用Redis的STRING类型,则无法减少这些工作.

但是,您可以使用HASH解决问题:将SQL表映射到HASH.

假设你有如下表:person: id(varchar), name(varchar), age(int),你可以把人id作为重点,并采取nameage作为字段.当您想要搜索某人的名字时,您只需要获取名称字段(HGET person-id name),其他字段将不会被反序列化.