草庐IT

java - 哪种 NoSQL 实现最合适?

我是NoSQL的新手,我正在绞尽脑汁试图找出最适合我要构建的应用程序的NoSQL实现。我的Java应用程序需要有一个包含数百万到数十亿个条目的内存中HashMap,因为它对单层神经网络进行建模。现在我们正在使用Trove为了能够使用图元作为键和值来减小map的大小并提高访问速度。该map是map的map,其中外部map的键是长整数,内部map具有长/浮点键/值。我们需要能够在应用程序启动时将保存的状态从磁盘读取到map的map中。mapofmap的更改也需要连续或根据某个预定时间间隔保存到磁盘。我最初被吸引到OrientDB因为他们的文档和对象数据库,虽然我现在还不确定什么会更好。然后

node.js - 为什么我不能让单个 Redis 客户端在同一连接中充当 PUB 和 Sub?

我的心智模型是“聊天”模式,我订阅了某个channel,然后可以向该channel发布消息。 最佳答案 由于发布/订阅是异步的,发布的消息可能随时出现,包括当您期待对命令的响应时。虽然Redis是单线程的,通常可以防止这种情况发生,但网络延迟会导致一些有趣的影响-根据消息的内容,您可能会在服务器实际收到命令之前收到对命令的有效响应。就是说,如果您真的想要的话,您可能会使用单个连接-“不应该”与“不能”不同,redis遵循一个简单的设计理念,即不试图阻止你开枪自杀脚。但是,只打开两个到服务器的连接要容易得多。如果您达到每个客户端两个连

node.js - 为什么我不能让单个 Redis 客户端在同一连接中充当 PUB 和 Sub?

我的心智模型是“聊天”模式,我订阅了某个channel,然后可以向该channel发布消息。 最佳答案 由于发布/订阅是异步的,发布的消息可能随时出现,包括当您期待对命令的响应时。虽然Redis是单线程的,通常可以防止这种情况发生,但网络延迟会导致一些有趣的影响-根据消息的内容,您可能会在服务器实际收到命令之前收到对命令的有效响应。就是说,如果您真的想要的话,您可能会使用单个连接-“不应该”与“不能”不同,redis遵循一个简单的设计理念,即不试图阻止你开枪自杀脚。但是,只打开两个到服务器的连接要容易得多。如果您达到每个客户端两个连

nosql - Redis 按字段值查找哈希

当使用Redis来创建“记录”时,您可以创建一个包含多个字段的散列。例如:HMSETmyhashfield1"Hello"field2"World"HMSETmyhash2field1"Goodbye"field2"World"您可以通过了解键值来检索它,但是我想知道有什么方法可以检索field2中包含“World”的所有哈希值? 最佳答案 redis没有索引,也没有实现SQL。这是一个键值存储。您提供一个key,它会为您提供一个值。也就是说,您可以通过自己维护二级索引来实现这一点。例如:创建记录和索引条目HMSETmyhashfi

nosql - Redis 按字段值查找哈希

当使用Redis来创建“记录”时,您可以创建一个包含多个字段的散列。例如:HMSETmyhashfield1"Hello"field2"World"HMSETmyhash2field1"Goodbye"field2"World"您可以通过了解键值来检索它,但是我想知道有什么方法可以检索field2中包含“World”的所有哈希值? 最佳答案 redis没有索引,也没有实现SQL。这是一个键值存储。您提供一个key,它会为您提供一个值。也就是说,您可以通过自己维护二级索引来实现这一点。例如:创建记录和索引条目HMSETmyhashfi

algorithm - 如何将 Redis 中的排行榜限制为仅 N 个元素?

我需要创建一个包含最大元素数的排行榜,比方说N?我知道如何使用LPUSH+LTRIM将列表大小限制为N个元素。如何使用Redis排序集为排行榜实现这一点到目前为止,我的方法是分3个步骤进行:a)ZADD将得分+项添加到排行榜b)找到第N个元素的排名(我不知道该怎么做)c)做ZREMRANGEBYRANK排行榜0rank_of_the_nth_element。有没有更好的办法? 最佳答案 我实际上有一个使用redis的工作排行榜应用程序。你可以看看here.在我的应用程序中,排行榜受限于最高的n分数,并且旧分数在太旧时也会下降(因此可

algorithm - 如何将 Redis 中的排行榜限制为仅 N 个元素?

我需要创建一个包含最大元素数的排行榜,比方说N?我知道如何使用LPUSH+LTRIM将列表大小限制为N个元素。如何使用Redis排序集为排行榜实现这一点到目前为止,我的方法是分3个步骤进行:a)ZADD将得分+项添加到排行榜b)找到第N个元素的排名(我不知道该怎么做)c)做ZREMRANGEBYRANK排行榜0rank_of_the_nth_element。有没有更好的办法? 最佳答案 我实际上有一个使用redis的工作排行榜应用程序。你可以看看here.在我的应用程序中,排行榜受限于最高的n分数,并且旧分数在太旧时也会下降(因此可

java - Redis/Jedis 无单点故障和自动故障转移

在一个简单的情况下,有3个服务器,1个主服务器和2个从服务器,没有分片。是否有一个经过验证的java和Jedis解决方案,它没有单点故障,并且会自动处理单个服务器发生故障,无论是主服务器还是从服务器(自动故障转移)。例如失败后提升主人并重置,不会丢失任何数据。在我看来,这应该是一个已解决的问题,但我找不到任何代码,只是对可能的实现方式的高级描述。谁实际负责这方面的工作并在生产中工作? 最佳答案 您可能想尝试一下RedisSentinel实现这一目标:RedisSentinelisasystemdesignedtohelpmanagi

java - Redis/Jedis 无单点故障和自动故障转移

在一个简单的情况下,有3个服务器,1个主服务器和2个从服务器,没有分片。是否有一个经过验证的java和Jedis解决方案,它没有单点故障,并且会自动处理单个服务器发生故障,无论是主服务器还是从服务器(自动故障转移)。例如失败后提升主人并重置,不会丢失任何数据。在我看来,这应该是一个已解决的问题,但我找不到任何代码,只是对可能的实现方式的高级描述。谁实际负责这方面的工作并在生产中工作? 最佳答案 您可能想尝试一下RedisSentinel实现这一目标:RedisSentinelisasystemdesignedtohelpmanagi

data-structures - 需要帮助在 Redis/NoSQL 中概念化

我想我已经很好地掌握了使用Redis的所有命令,但我很难找出使用它的最佳方法。我正在设计一个客户通知系统,当他们的任何电路出现警报时,该系统将通过他们首选的方法(电子邮件、SNMP、系统日志)通知他们。因此,我得到了一个设备名称和一个端口。我需要将其与单个客户相关联,然后将该客户与交付方式相关联。使用关系数据库,它可能看起来像这样:Devicename:Los_AngelesPort:11SELECTCustomer_ID,Customer_namefromdevice_infowheredevice_port='Los_Angeles:11'SELECTCustomer_protoc