首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Scala将Set对象存储在Redis数据库中

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

Stack Overflow用户
提问于 2014-02-04 19:17:37
回答 2查看 1.3K关注 0票数 0

我想用Scala在Redis中存储一套Ints

我有这个密码

代码语言:javascript
运行
复制
val redis = new RedisClient("localhost", 6379)

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

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

它返回一个字符串:

代码语言:javascript
运行
复制
res1: Option[String] = Some(Set(5, 6, 7, 8, 4))

我如何做redis以一种有效的方式存储我的集,并返回它而不是字符串?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-04 19:20:00

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

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

票数 1
EN

Stack Overflow用户

发布于 2014-02-05 05:15:37

SET/GET用于在您正在使用的redis.If中设置和获取字符串

代码语言:javascript
运行
复制
val mySet = Set(4,5,6,7,8)    
redis.set("myKey", mySet)

然后,redis将接受"myset“变量中的值作为字符串类型。如果您想存储一个集合,然后使用以下命令,您需要单独地给出set的值,而不是在变量中(我这样做)。

代码语言:javascript
运行
复制
redis.SADD("myKey",4,5,6,7)

用于从redis获取集合的值。

代码语言:javascript
运行
复制
redis.SMEMBERS("myKey")

如果你用

代码语言:javascript
运行
复制
val redis = new RedisClientPool("localhost", 6379)

而不是

代码语言:javascript
运行
复制
val redis = new RedisClient("localhost", 6379)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21561393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档