使用Scala将Set Set对象存储在Redis数据库中

时间:2014-02-04 19:17:37

标签: scala redis set

我想在Redis中使用Scala存储一组Ints

我有这段代码

val redis = new RedisClient("localhost", 6379)

val mySet = Set(4,5,6,7,8)

redis.set("myKey", mySet)
redis.get("myKey")

它返回一个String:

res1: Option[String] = Some(Set(5, 6, 7, 8, 4))

如何以有效的方式执行redis存储我的设置并返回它而不是String?

2 个答案:

答案 0 :(得分:1)

如果您想提高效率,请对集合使用Redis命令:SADD / SMEMBERS。您使用GET / SET,它们是 string 命令,这意味着它们接受并返回字符串。

此外,我不熟悉Scala驱动程序,但我怀疑它的SMEMBERS实现将返回一个数组/字符串集,即使您将值设置为整数。这是因为Redis协议是基于文本的,而所有都是作为字符串传递的。话虽如此,scala驱动程序可能会变得聪明并尝试为您转换值,我不知道。但如果你得到字符串,不要感到惊讶。

答案 1 :(得分:1)

SET / GET用于在redis中设置和获取字符串。如果您正在使用

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)