Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 与Redis/NoSQL数据库用例相关的问题_Spring_Nosql_Redis - Fatal编程技术网

Spring 与Redis/NoSQL数据库用例相关的问题

Spring 与Redis/NoSQL数据库用例相关的问题,spring,nosql,redis,Spring,Nosql,Redis,我正在建立一个网站,我将有两种类型的用户-X和Y。X将是少数(数百)和Y将是许多(数百万)。基本上,对于每个X,都会有一些Y。Y将在其网络中添加朋友。X将发布一条消息,该消息可以被Y的特定集合看到,这些人可以将该消息转发给他们的朋友。好友可以看到该消息,并可以转发给好友或回复发件人 这是我的使用案例,我在探索不同类型的数据库,主要是NoSQL数据库,因为我认为系统的可伸缩性和性能是我网站的主要关注点。我已经开始使用SpringDataRedisAPI,并发现它对我的用例非常有用。我这里的问题是如

我正在建立一个网站,我将有两种类型的用户-X和Y。X将是少数(数百)和Y将是许多(数百万)。基本上,对于每个X,都会有一些Y。Y将在其网络中添加朋友。X将发布一条消息,该消息可以被Y的特定集合看到,这些人可以将该消息转发给他们的朋友。好友可以看到该消息,并可以转发给好友或回复发件人

这是我的使用案例,我在探索不同类型的数据库,主要是NoSQL数据库,因为我认为系统的可伸缩性和性能是我网站的主要关注点。我已经开始使用SpringDataRedisAPI,并发现它对我的用例非常有用。我这里的问题是如何在NoSQL数据库中执行“更新”操作,特别是在Redis中。假设我想更新存储在Redis中的用户信息。另一个问题是,如果我们在Redis中存储了用户信息,并且在Redis中有“年龄”字段,我如何执行操作,例如获取所有30岁以下的用户

我是NoSQL领域的新手,对它的经验很少。我还想听听有经验的人对我的用例的正确数据库的看法。我以前使用Spring、Hibernate和MySQL的组合作为数据库,当系统负载很重时,我对系统的性能不满意

谢谢, 萨钦

我这里的问题是如何在NoSQL中执行“更新”操作 特别是Redis中的数据库。假设我想更新用户 存储在Redis中的信息

这取决于存储用户的结构。本教程可以帮助您更全面地了解这些数据结构。通常更新是通过集合操作完成的,所以若我已经在结构中存储了用户信息,并且想要更新某些字段,那个么我将使用这个命令

另一个问题是,我如何执行“获取所有信息”之类的操作 30岁以下的用户,前提是我们存储了用户 Redis中具有“年龄”字段的信息

Redis是一个高级的键/值数据存储,它不支持查询SQL world中的数据。若您需要此查询功能,您应该查看支持它的其他NoSQL解决方案,例如,尝试查看列表中的其他内容

我这里的问题是如何在NoSQL中执行“更新”操作 特别是Redis中的数据库。假设我想更新用户 存储在Redis中的信息

这取决于存储用户的结构。本教程可以帮助您更全面地了解这些数据结构。通常更新是通过集合操作完成的,所以若我已经在结构中存储了用户信息,并且想要更新某些字段,那个么我将使用这个命令

另一个问题是,我如何执行“获取所有信息”之类的操作 30岁以下的用户,前提是我们存储了用户 Redis中具有“年龄”字段的信息


Redis是一个高级的键/值数据存储,它不支持查询SQL world中的数据。如果您需要此查询功能,您应该查看其他支持此功能的NoSQL解决方案,例如尝试查看或从列表中查找其他内容。

检查Redis是否可以实现您想要的功能的最佳方法是将其安装在开发机器中,并尝试使用
Redis cli
。该内置客户端提供命令完成和帮助(只需点击
help
查看类别),并且
http://redis.io/commands

对于您的请求,您应该研究
排序集
数据结构,以存储用户的信息。这比单独设置要好,因为它确实允许一些基本形式的查询,如您将看到的:

假设您希望能够查询数据库中18到30岁之间的所有用户,其中包含(作为示例)3个用户:Joe,28岁;鲍勃,17岁;亚当,50岁

您可以将Redis填充为:

ZADD age 28 Joe
ZADD age 17 Bob
ZADD age 50 Adam
语法是
ZADD[key][score][member]
。该集合位于
[key]
中,在已排序的集合中,每个
[member]
都有一个
[score]
,必须是双精度的。这意味着您不能使用字符串模式甚至字符串值查询分数(在这一点上,Mongo应该更好)

所以,是时候提问了。现在我将粘贴
redis cli
查询:


要列出18到30岁之间的所有用户,请执行以下操作:

redis> ZRANGEBYSCORE age 18 30
1) "Joe"
redis> ZRANGEBYSCORE age 18 30 WITHSCORES
1) "Joe"
2) "28"
选项
WITHSCORES
显示结果中每个成员的分数


要列出18岁以下的所有用户:

redis> ZRANGEBYSCORE age 0 (18
1) "Bob"
redis> ZRANGEBYSCORE age 0 (18 WITHSCORES
1) "Bob"
2) "17"
修饰符允许打开开始或结束间隔。它类似于
其中年龄>=0和年龄<18


要列出30岁以上的所有用户,请执行以下操作:

redis> ZRANGEBYSCORE age 30 +inf
1) "Adam"
redis> ZRANGEBYSCORE age 30 +inf WITHSCORES
1) "Adam"
2) "50"
+inf
是无限的,因此结果没有上限,比如
其中年龄>=30

等等



这仅仅是一个开始。您可以在排序集中快速执行交点、并集和
select count(*)
操作,特别是如果您使用优化的库(如)。希望您现在对它有一个好印象。

检查Redis是否可以做您想做的事情的最好方法是将其安装到开发机器中,并尝试一下
Redis cli
。此内置客户端提供命令完成和帮助(只需点击
help
查看类别),并且在
http://redis.io/commands

至于您的请求,您应该研究
排序集
数据结构来存储用户信息。这比单独使用
集合
要好,因为它确实允许您进行一些基本形式的查询,如您将看到的:

假设您希望能够查询da中18到30岁之间的所有用户