草庐IT

Database_Cleaner

全部标签

database - 为共享计数器对数据库进行分区

在数据存储的设计过程中,我们正在寻找一种对条目进行分区的方法。主要瓶颈是在对共享计数器进行分区时。比方说,我们要提供n张票(典型的火车预订,IRCTC等)。我们如何对数据存储进行分区,以便客户端看到它们之间的实时一致性(根据预订百分比,即currentvalue/x)。每次读取的聚合成本太高,任何其他指针都会有用。同时假设写入操作是并发的(因此不会将读取卸载到从属),并且对于最终一致性来说是没问题的。但是有没有办法可以最小化分片之间的不一致性差异。例如,100张票的部分在4个分片中完成,如25、25、25、25。在任何给定的时间点,数据库的View应该像x%一样满,以及如何最小化分片之

database - 存储频繁请求的具有关系的键值数据的有效方法?

假设我正在构建Twitter。其中一项任务是跟踪特定用户阅读了哪些推文并将此数据存储在服务器上。当用户请求某人的提要时,服务器应返回:[{id:1,tweet:"Heythere!",isRead:false},{id:2,tweet:"Here'smycat,look",isRead:true},{id:2,tweet:"Blueoryellow?Thatsthequestion",isRead:true},...]存储哪些推文被哪些用户阅读的数据,以及在为特定用户返回某人的提要时检索这些数据的最有效方法是什么?非常感谢任何关于数据存储架构的想法。我当前的堆栈是用于存储用户和“推文”

database - 如何在没有客户端和 lua 的情况下在 Redis 中创建一个新的排序集

我在redis中有一个排序集。我可以使用命令ZRANGEBYSCORE获取范围结果。我需要将这个结果放入一个新的集合中。但是我不想把结果取回给客户端,再把结果放回redis。我知道Lua脚本可以做到这一点。但在我当前的环境中是被禁止的。那么还有没有别的想法呢? 最佳答案 除非您使用加载到Redis中的Lua脚本来实现它,否则没有像zrangebyscoreandstore这样的可用命令来存储结果而不在您的应用层中检索它们。 关于database-如何在没有客户端和lua的情况下在Redi

database-design - 我应该检查还是只在 Redis 中设置记录?

当用户玩我的一个应用程序时,我会将他们的session保存到每日、每周、每月和所有时间表中。我想知道在插入之前查看用户是否已经在表中是否明智。假设它们不在表中,则无论只有写入什么,都需要以另一种方式进行读取和写入。 最佳答案 这基本上取决于您的要求。由于缺乏信息,我假设当您说每日、每周、每月和所有时间表时,您指的是TTL值。那么有两种情况如果用户最近一次访问必须延长key的过期时间因此,如果您需要覆盖这些key的TTL,则不需要读取(如果用户最近一次访问必须延长key的到期时间)后续访问不得更改TTL否则,如果session过期时间

database - 在 Redis 中跟踪员工工作时间的方法——什么有用? - 什么不是?

我正在设置一个简单的打卡、打卡系统,我希望能够跟踪用户何时签到和签退,以及能够提取日期1和日期2之间的工作小时数报告.我的想法是当他们登录时设置一个排序集,键是他们的名字,分数是他们登录时的时间戳,值将为空。然后当他们注销时,我会将值设置为注销时间的时间戳。然后我可以根据分数提取报告。这是否实用和/或是否有更好的方法来代替?编辑(来自评论):使用排序集,您可以通过获取分数大于起始时间戳的所有记录来进行查询。因此,为了便于使用,假设用户登录时间戳为50、100、150和200,您可以告诉Redis为您提供时间戳大于100的记录的所有数据,它会返回最后2条记录。它可以在mysql或其他一些

database - 改善快速增长的数据库中的查询时间?

我有一个业务逻辑可以访问多个数据库中的多个表表中的数据增长很快,数据量很大。所以sql查询(在表中有一些连接)时间越来越慢。有没有办法提高性能? 最佳答案 有许多可用的RDBMS缓存,它们将缓存最新的结果,并像热区缓存/L1缓存一样工作。我在类似的用例中使用过GemFireXD,效果很好。通过以下链接了解更多信息[https://blog.pivotal.io/tag/gemfire-xd][1] 关于database-改善快速增长的数据库中的查询时间?,我们在StackOverflow

database - Redis + “source of truth” 数据库一致性

我正在构建一个分析工具,但在基于时间序列的指标方面遇到了一些性能问题。我一直在试验Redis+bitmapist,这让我可以在写入数据库时​​急切地准备指标,并且对性能非常满意。但是,我对如何确保我的数据库和Redis保持同步感到有点困惑。我的数据库是存储所有事件数据的“真实来源”,但用户仪表板将依赖Redis来显示指标。我是否应该定期完全重建我的Redis指标以确保我的数据库和Redis之间没有差异?(ex:当一个事件发生时,它写入了DB,但是没有写入Redis)如果我的Redis服务器出现故障,将需要很长时间来重新处理所有事件并重建指标。我的仪表板是否应该查询数据库作为备份计划,即

database - 雷迪斯 + 路亚。我可以返回结果而不将其存储在内存中吗?

我在Redis环境中执行了以下Lua脚本:localresult={}localcomment_ids=redis.call('smembers','comment:all')for_,keyinipairs(comment_ids)dolocalcomment_text=...localarticle_name=...localuser_name=...result[#result+1]={article_name,user_name,comment_text}endreturnresult基本上,这里发生的是我们用一些聚合数据(article_name、user_name、comm

database - 如何从 amazon dynamodb 导出数据库并导入到 redis?

我想将我的数据库从dynamodb迁移到redis。我找不到dynamodb的导出机制和redis中的导入之间的联系。如果您能回答要遵循的步骤,我将不胜感激。 最佳答案 您可以简单地用Python编写一个脚本,从DybamoDb读取数据并将其存入内存,然后同一脚本将其写入您的Redis存储。您不需要两个数据库之间的任何直接连接。如果要在redis中一次插入大量数据,请确保进行某种批处理以防止任何超时。(比如如果你有10000个键到redis中的hmset,你可能最好使用批处理和处理一次说100个键而不是10k)

database - 启用集群模式的 Redis 锁

我已经阅读了redisstandalone如何提供乐观锁定。我也在redis网站上遇到了Redlock算法,它可用于分布式锁定。现在我不明白的是,为什么我们需要在Redis中进行分布式锁定(启用集群模式)。在启用分布式模式下,我们最多可以有15个分片,每个分片都有不重叠的记录。既然没有共享数据,还需要分布式锁干什么?难道不是每个共享的乐观锁定都能解决问题吗?一个原因可能是多键操作,但除此之外我想不出任何其他原因。我的理解正确吗? 最佳答案 redis中的分布式锁通常用于锁定分布式应用程序,而不是专门用于redis中的数据。例如-一个