我想用Scala在Redis中存储一套Ints
我有这个密码
val redis = new RedisClient("localhost", 6379)
val mySet = Set(4,5,6,7,8)
redis.set("myKey", mySet)
redis.get("myKey")
它返回一个字符串:
res1: Option[String] = Some(Set(5, 6, 7, 8, 4))
我如何做redis以一种有效的方式存储我的集,并返回它而不是字符串?
发布于 2014-02-04 11:20:00
如果您想提高效率,可以对set使用Redis命令: SADD / SMEMBERS。使用GET / SET,这是字符串命令,这意味着它们接受并返回字符串。
另外,我不熟悉Scala驱动程序,但我怀疑它的SMEMBERS实现将返回一个数组/字符串集,即使您将值设置为整数。这是因为Redis协议是基于文本的,一切都是以字符串的形式传递的。话虽如此,scala驱动程序可能会变得很聪明,并尝试为您转换值,我不知道。但如果你有麻烦,别惊讶。
发布于 2014-02-04 21:15:37
SET/GET用于在您正在使用的redis.If中设置和获取字符串
val mySet = Set(4,5,6,7,8)
redis.set("myKey", mySet)
然后,redis将接受"myset“变量中的值作为字符串类型。如果您想存储一个集合,然后使用以下命令,您需要单独地给出set的值,而不是在变量中(我这样做)。
redis.SADD("myKey",4,5,6,7)
用于从redis获取集合的值。
redis.SMEMBERS("myKey")
如果你用
val redis = new RedisClientPool("localhost", 6379)
而不是
val redis = new RedisClient("localhost", 6379)
https://stackoverflow.com/questions/21561393
复制相似问题