2015-02-22 2 views
1

Итак, у меня есть база данных сообщений, к которой я хочу получить доступ, но я также хочу кэшировать результаты запроса, чтобы я не делал дополнительных подключений к базе данных.База данных Monger, соединяющая и сохраняющая результаты

До сих пор у меня есть что-то вроде

;;talk with the database and get posts by their [count] 
(defn posts-from-db [] 
    (let [conn (mg/connect {:host "127.0.0.1" :port 27272}) 
     db (mg/get-db conn "submitted-content") 
     coll "posts"] 
    (with-collection db coll 
    (find {}) 
    (fields [:post_content :id]) 
    ;; it is VERY IMPORTANT to use array maps with sort 
    (sort (array-map :tags -1 :post_content 1)) 
    (limit numberOfPosts)))) 

Это возвращает набор результатов, которые выглядят как

({:_id #<ObjectId 54d927ce9c521eb276553f11>, :post_content "Mermaids and dakinis "}, 
{ .... }, 
{ .... }, 
{ .... }) 

Я думаю, что это хороший способ сделать это, чтобы сохранить результат в виде символа (var? key? .. не уверен, что такое вербальная формулировка для Clojure), а затем проверьте, установлен ли этот var.

Как разработчик обычно обращается к этой ситуации?

ответ

2

Если ваша цель - добавить кэш-слой, вы можете посмотреть библиотеку core.memoize

Смежные вопросы