2015-05-30 40 views
0

我使用Neo4j的2.1.5和3.2.2 SDN。哪个缓存选择Neo4j缓存或其他?

您好我正在开发一个社交网络应用程序,其中我存储用户社交图谱为Neo4j的数据库。现在我想为用户提供建议,因为我想将整个用户社交图缓存到缓存中。 谁能告诉我要使用的缓存Neo4j的对象缓存或任何其它存储缓存(gauava,内存缓存等)。

如果Neo4j的缓存,这是正确的做法?

@Autowired 
    GraphDatabaseService graphdb; 
    GlobalGraphOperations gop = GlobalGraphOperations.at(graphdb); 
    // Now to load all nodes into cache, do I have to traverse them. 
    for (Node node : gop.getAllNodes()) { 
     //to-do 
    } 

回答

0

第一级缓存是文件系统+内存映射,这对快速I/O非常重要。 Neo4j的对象缓存(特别是如果你使用嵌入式的话)存储节点和关系(cache_type = strong aggressive)会加快你的查询速度。

第三级缓存可以将您的Spring域对象与其获取的关系一起存储。你可能只是使用Spring的@Cache注释与番石榴,eh-cache或类似的。

我的同事马克斯对Neo4j的一些博客文章和缓存上下级: http://maxdemarzi.com/?s=caching

+0

谢谢@迈克尔现在我使用Spring可缓存与GuavaCacheManager。感谢您的宝贵意见。 http://java.dzone.com/articles/spring-caching-abstraction-和http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/cache/annotation/EnableCaching.html – rrohit

+0

嗨@Michael Hunger如何获得下面给出的功能。/**准备所有用户标签节点与它们各自的用户节点的映射。 \t *返回地图> \t */ \t查询( “匹配(标签:UserTags)< - [TAG] - (用户:用户)返回标记,用户”) \t公共地图> getUserTagsMapping(); – rrohit