2015-05-30 42 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