2015-11-17 4 views
0

Я использую Redis как ловушку в игровом приложении. С Redis, я могу хранить некоторый список строк, связанный с ключевой строкой, как в case class Cache1:Магазин 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]]. Но я не могу найти в API redis способ сделать это, и именно поэтому я задаю этот вопрос здесь.

+0

, что важно то, как вы хотите использовать ДАННЫЕ? Вы хотите получить только одну запись (ListBuffer [2] [3]) или вы хотите получить весь список буферов (ListBuffer [2])? – jeorfevre

+0

Мне нужно получить весь список ListBuffer, а не только его несколько очков. – alifirat

+0

просто чтобы быть shure, вам понадобится весь 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