2017-05-16 111 views
0

我正在構建一個純粹處理數據存儲的API。如何存儲過濾的數據?

讓我們想象一下里面的Redis我想起了關鍵foo:123 20分鐘,因爲我使用的是集合以後,而不是返回原料 JSON其持有Eloquent Collection

作爲例子foo的集合可能看起來像

[ 
    { 
     "name":"Doe", 
     "first_name":"John", 
     "age":42, 
     "favorite_color":"red" 
    }, 
    { 
     "name":"Example", 
     "first_name":"Eric", 
     "age":37, 
     "favorite_color":"black" 
    }, 
    .... 
] 

我將如何存儲集合,它具有相同的結構,其具有favorite_color條目?我需要儲存像foo:123:black這樣的東西嗎?我是否存儲完整收藏並手動過濾?或者,在使用Redis時,這完全不同了嗎?

回答

1

問:我將如何存儲一個新的集合,它具有相同的結構,但具有黑色作爲favorite_color的條目?

爲什麼不只是映射集合並將favorite_color更新爲黑色? https://laravel.com/docs/5.4/collections#method-map。然後將其存儲,無論是覆蓋舊數據還是創建新數據。

問:我需要存儲諸如foo:123:black之類的東西嗎?

我不清楚你在這裏要求什麼。我不確定我們可以告訴你如何選擇存儲它或命名約定。

問:我是否存儲完整收藏並手動過濾?

這是你需要根據你的應用需求來決定的東西。應該可以對一個集合進行序列化並將其存儲起來,但是如果你正在用一些不同的集合來做這個事情,那麼這可能會造成巨大的資源浪費。

+0

1)我的意思是我從數據庫中獲取所有條目,其中favorite_color匹配*黑色*。 2)問題是,如果像這樣的東西存儲爲key =>值,或者這是開始挖掘列表/散列/集合的很好的一點。如果是這樣,哪一個適合該用例的最佳選擇。 但是,至少感謝! :) – Krenor

+0

是的,很多這將是通用和意見的基礎,因爲我們都不會知道您的應用程序。我會說你需要用foo來擔心什麼:123:黑色是命名衝突(其他任何人都有名字foo:123:黑色?黑色是否足夠獨特?),除此之外,取決於你選擇一個名字。不要在預優化上花費太多精力,做一些自然而然的事情,然後優化它是否使用了太多的內存,CPU,時間等。 – Devon

相關問題