草庐IT

database-caching

全部标签

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)

caching - 在不使用持久性的情况下,Redis 在多个主服务器上进行分片会变得更快吗?

我对独立(单线程)Redis的测试表明,来自多个并行客户端的负载可以将RedisCPU使用率提高到100%(在我的内存缓存用例中)。如果启用了持久性,以集群模式启动它并将内容分片到多个母版是加速它的一种可能方法。我有一个没有持久化的配置(关闭了RDB和AOF)。启动多个主控是否有助于提高性能(仍然使用相同的累积内存量)? 最佳答案 Redis是单线程的,所以单机实例的性能受限于单个CPU核心的处理能力和单机的网络带宽。然而,Redis非常非常快。所以通常瓶颈是网络带宽,除非你运行大量缓慢的命令/lua脚本。如果你在多台机器上部署Re

caching - 从 block 中的 redis 缓存中清除数据

我需要从Redis缓存中删除一个池。但是,这个池可能有数百万个key。我正在使用以下代码从缓存中删除keyStringregex="*."+poolname+".*";Setrkeys=jedis.keys(regex);for(Stringkey:rkeys){LOGGER.info("key===>"+key);jedis.del(key);}恐怕万一有百万行,redis服务器可能会崩溃。有什么办法可以告诉redis只选择100行并及时删除。有点像while(true){//sleepfor1minute//get100rowsfromcacheif(keys.isEmpty())

python - 超时不工作 django-redis-cache

我有设置缓存,但我的TIMEOUT不工作。我的缓存从不更新。CACHES={'default':{'BACKEND':'redis_cache.cache.RedisCache','LOCATION':'localhost:6379','TIMEOUT':5,'OPTIONS':{"SOCKET_CONNECT_TIMEOUT":5,#inseconds"SOCKET_TIMEOUT":5,#inseconds'DB':1,'PASSWORD':'','PARSER_CLASS':'redis.connection.HiredisParser','PICKLE_VERSION':2,}

caching - 看不到 Redis 脚本缓存的内容

如何通过SHA找到Redis脚本?我知道我可以使用EVALSHA通过其SHA运行脚本,或者查找它是否使用SCRIPTEXISTS进行缓存,但我在慢速日志中找到了SHA,但我不知道想要运行它,只需看看它是哪个脚本,这样我就可以弄清楚为什么它很慢。我如何访问Redis脚本缓存以保存脚本及其SHA? 最佳答案 Redis中不存在这种类型的功能,直到并包括v4。相反,您可以做的是收集所有脚本并计算它们的SHA1总和(不必在Redis中)。然后,查明罪魁祸首应该是微不足道的。 关于caching-

java - Spring Redis 问题 : GetAllCacheNames from redis cache is not working with RedisCacheManager

您好,下面是我的redis缓存配置,我正在尝试使用以下方式获取存储在redis服务器上的所有缓存名称:redisCacheManager.getCacheNames()但它没有给我redis服务器中存在的缓存名称。我使用Cachable注释为cacheName添加前缀:@Cacheable("cacheName")我在这里有2个问题?1)为什么我无法获取存储在redis服务器中的缓存名称。2)我不想为所有前缀编写单独的方法,如何动态创建前缀cacheName?@BeanJedisConnectionFactoryjedisConnectionFactory(){JedisConnect

database - 启用集群模式的 Redis 锁

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

caching - Ehcahe 版本 3.X 中对 JMS/RMI 复制的支持停止了吗?

我想将Ehcache版本从2.10.x升级到3.x,但我在版本3中找不到对RMI/JMS复制(RMICacheReplicatorFactory和JMSCacheReplicatorFactory)的支持。如果Ehcache3.x不支持RMI/JMS缓存复制什么是最好的选择(hazelcast/memcached/redis) 最佳答案 该支持确实已停止,主要是因为它提供了零排序和一致性保证。Ehcache的替代方案是Terracottaclustering.它提供了一个适当的模型,可以保证顺序并且可以稍微调整一致性。至于它是否适合