2015-11-17 64 views
0

我使用Redis作爲捕捉應用程序。隨着Redis的,我可以存儲在case class Cache1相關聯的密鑰字符串像一些字符串列表:Store ListBuffer [列表[Double]]與Redis

case class Cache1(val hostname : String, val port : Int, val timeout : Int) { 
    val pool : Pool = 
     new Pool(new JedisPool(new JedisPoolConfig(), hostname, port, timeout)) 
    val j = pool.underlying.getResource 
    j.flushAll 
    pool.underlying.returnResourceObject(j) 


    def set(key : String, value : String) : Unit = pool.withClient { client => 
     client.lpush(key, value) 
    } 

    def get(key : String) : Option[List[String]] = { 
     pool.withClient { client => 
     val l : List[String] = 
      Dress.up(client).lrange(key, 0, Dress.up(client).llen(key)-1) 
     if(l.length == 0) return None else return Some(l) 
     } 
    } 
    } 

我想重現相同的情況下類,而是存儲String的價值觀,我想存儲ListBuffer[List[Double]]。但是我無法在redis API中找到這種方法,這就是爲什麼我在這裏問這個問題的原因。

+0

什麼是你想如何使用DATAS是非常重要的?你想只得到一個記錄(ListBuffer [2] [3])還是你想獲得一個完整的listbuffer(ListBuffer [2])? – jeorfevre

+0

我需要獲得整個'ListBuffer',而不僅僅是他的幾點。 – alifirat

+0

只是爲了舒服,你總是需要整個listbuffer嗎? – jeorfevre

回答

0

我將整個結構存儲爲JSON,並將其作爲JSON讀取。這很簡單,易於維護。

Redis的商店名單

object MyJacksonMapper extends JacksonMapper 
val jsonListBuffer= MyJacksonMapper.serializeJson(myListBuffer) 
Dress.up(client).set("listbuffer",jsonListBuffer) 

Redis的獲取

val json = Dress.up(client).get("listbuffer") 
val myNewObject = MyJacksonMapper.deserializeJson[ListBuffer](json) 
+0

如果你有很多列表,你可以存儲爲列表,或者作爲SET listbuffer存儲:1,listbuffer:2 .....等。 – jeorfevre