草庐IT

database-caching

全部标签

caching - 实现缓存层的最佳实践是什么?

我将使用Redis作为缓存服务。访问缓存服务的最佳做法是什么?通过服务/API或内存组件?我不确定我是否想从所有服务访问数据库。谢谢 最佳答案 您的所有问题都取决于系统的拓扑结构和/或架构。如果您的应用程序完全驻留在一台计算机上,我认为您不会在单独的计算机上提供服务。但是假设您已经分发了应用程序。在这种情况下,在分离的节点上使用分离的服务进行缓存是有意义的。它与OOP中的一样,您也可以简单地将数据封装在缓存中。其他服务取决于您的缓存,而不是直接依赖于Redis-您可以决定将Redis更改为其他服务。缓存服务的另一个优点是可以根据吞吐

database - 将唯一的 Redis 实例推送到中央 Redis?

假设我有几个Redis实例(我们可以称它们为A、B和C),它们都具有唯一的数据并且无法相互通信。我希望他们将数据推送到“主”实例(我们称之为Maestro)。有什么方法可以通过Redis本身自动执行此操作,还是我必须编写自己的(简单的)工具来执行此操作?Redis复制似乎不适合这个目的。到目前为止,我想出的最简单的方法是编写一个在每个节点上运行的小客户端,每x​​秒运行一次:MIGRATEMaestro6739MyKey编辑:事实证明这不是一个好方法,因为目标数据库中不存在key。虽然这是一个相当简单的解决方案,但我的问题是:我是否错过了一些Redis配置来自动执行此操作(或以更好的方

caching - Redis 同步失败。 Redis 复制键和值有效

我有两个redis实例都在win64的同一台机器上运行。版本来自https://github.com/MSOpenTech/redis没有任何修改,二进制文件按照从github下载的(即版本2.6.12)运行。我想创建一个从站并将其同步到主站。我在同一台机器上执行此操作,以确保在位于WAN的机器上创建从属机器之前它可以正常工作,这将花费大约一个小时来传输主机器中存在的数据。但是,我收到以下错误:[4100]15May18:54:04.620*ConnectingtoMASTER...[4100]15May18:54:04.620*MASTERSLAVEsyncstarted[4100]

redis - Redis 的 ElastiCache cloudwatch 指标 : currItems for a single database

我已经为ElastiCacheredis集群上的aws接口(interface)设置了一个指标。我正在查看currItems的值在给定时间段内是否优于某个数字(比如1000持续1分钟)我遇到的问题是我在Redis中有两个数据库,名称为0和1。我只想获取数据库0的currItems,而不是数据库1,因为数据库1保存值的时间更长,并且使整个指标看起来比它应该的大得多(因为我想要数据库0的当前项目)有没有办法创建一个只获取数据库0的当前项的指标? 最佳答案 您必须为此创建一个应用程序或使用现有的Redis工具。https://stacko

caching - 缓存集群部署拓扑

我打算为一些面向公众的Web工作负载部署一个内存缓存集群(目前考虑的是Redis),并且想知道集群应该位于何处(部署拓扑),IMO有两个选项:位于Web层(可水平扩展)在Web层之后和DB层之前创建一个专用缓存集群。背景,Web上的应用程序和在Windows上运行的数据库层,所以如果我将集群固定在Web层上,那么它需要在Windows上得到支持(MSFT有一个稳定的Redis端口),如果我使用专用缓存层我在考虑一些轻量级Linux服务器(HA集群),这意味着当Web层水平扩展时,它使用这个缓存集群进行查找,例如引用数据等优点、缺点、我缺少的其他选择?*请注意,我没有使用云服务提供商“缓

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

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

caching - 将一些API结果永久缓存在redis中可以吗?

一些API(可能会增加大约1000000*用户数)并且每个API只有1个整数值非常耗时,所以我决定将它们缓存在redis中,但我发现如果我有过期机制,那么我有每次redis没有结果时回退到mysql以获得结果。(事实上​​,空结果的情况比至少在项目开始时有一个整数值更有可能,所以如果我不存储空值,应用程序将多次访问mysql以获得空值。)所以我决定使用redis作为“增长缓存”。这意味着我应该在redis中永久保存所有非零(或非空)值。我在犹豫,这是一个好的做法还是我们应该选择redis作为具有过期机制的临时缓存? 最佳答案 好吧,

caching - 基于投票的网站/应用程序的架构

我正在做一个网站。我想获得有关设计的反馈。网站功能类似于Reddit、ProductHunt等(即基于投票)。这是概述1.后端服务从网络上获取帖子并存储到数据库中。2.帖子显示在网站上(置顶,新)。3.顶部显示基于排名(投票、时间因素)的网站。4.滚动,用户看到更多帖子设计:数据库表:帖子、用户、投票后端服务:后端服务定期从网络上获取帖子并存储到数据库(Posts表)中。网站:当用户访问网站时,用户会看到热门帖子。根据请求,网站代码查询数据库,该数据库返回根据时间和投票排名的链接。当使用特定帖子投票时,网站代码将其添加到数据库中。网站允许登录并将用户信息存储在用户表中。问题:我是否应该

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