草庐IT

database-caching

全部标签

caching - Redis 缓存驱动程序在 PHPUnit 中抛出异常

这里有人有使用Redis缓存驱动程序(CIv3.0.2)并使用PHPUnit(v4.8.16)对其进行测试的经验吗?我只是按照here的描述尝试了它,它似乎在浏览器中运行良好,但是当我转到我的终端并尝试使用PHPUnit对其进行测试时,我得到了这个:Fatalerror:Uncaughtexception'RedisException'withmessage'Redisserverwentaway'in/path/to/my-app/system/libraries/Cache/drivers/Cache_redis.phponline317CallStack:0.0002247008

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

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

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

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

caching - 我们如何在 Java 中检测到 redis 故障?

当查找rediskey失败时(例如使用zrangeByScore),可能是因为该key不存在或因为redis查找失败。那么,如何在Java中检测到redis故障? 最佳答案 调用Redis的EXISTS区分空响应和不存在的key。 关于caching-我们如何在Java中检测到redis故障?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/35909118/

redis - 错误 : Value "PONG" or "OK" in the redis cache

我在服务器中使用了下面的代码,但是有时我得到一个错误cacheValis"PONG"or"OK",下面的代码getcacheVal是正确的在大多数情况下。Jedissjedis=getJedis();StringcacheVal=sjedis.get(key); 最佳答案 仅供引用-我能够复制并解决此问题:首先发生这种情况的原因是因为我错误地使用了try-with-resource-基本上在try中返回了jedis连接。如果在我完成jedis连接后调用close()(大多数情况下是这样,因为它非常快),我也不会异常(exceptio

caching - Redis 中的嵌套查询

我是redis的新手。我必须使用redis实现一个mac地址表缓存。缓存中的每个条目将具有以下信息(1)。Mac地址-6字节数组(2)。vlan-整数值(3)。接口(interface)ID-整数值(如果需要,可以改为字符串)。Mac地址+Vlan的组合在缓存中是唯一的。所以这可能是关键?我希望能够以多种方式查询我的缓存,例如:(1)。获取所有具有vlan==20的条目(2)。获取所有具有vlan==20、interface-id==5000的条目将其存储在Redis中的最佳方式是什么。任何帮助表示赞赏。谢谢,莫 最佳答案 假设只有

caching - 为什么功能测试会在我的 Redis 查询缓存上创建新记录?

我刚刚使用以下配置在我的symfony应用程序上启用了查询缓存:Doctine缓存配置doctrine_cache:providers:cache:namespace:'%cache_namespace%'chain:providers:-array_cache-redis_cache-file_cacheredis_cache:namespace:'%cache_namespace%'predis:host:"%redis_host%"port:"%redis_port%"password:"%redis_password%"timeout:"%redis_timeout%"arra

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

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

caching - 如何在同一个数据库/索引下的Redis中存储两个不同的缓存 "tables"?

试图构建两个缓存表(目前存储在SQLServer中)的数据集——一个是实际的缓存表(CacheTBL);另一个是暂存表(CacheTBL_Staging)。表结构有两列——“键​​”、“值”所以我想知道如何在Redis中实现它,因为我对这种NoSQL东西一窍不通。我应该使用SET还是LIST?还是别的?提前致谢! 最佳答案 您需要决定是要使用SET和GET为所有条目单独的REDISkey,还是使用HSET和HGET将它们放入哈希中。如果您使用第一种方法,您的键应该包含一个前缀以区分主要和暂存。如果你使用散列,这就没有必要了,因为散列

caching - Redis 与硬件缓存

像Redis这样的工具是否提供对计算机中存在的硬件缓存的控制,或者它是否在计算机RAM上运行?如果是后者,它怎么能比现有的由操作系统控制的硬件缓存提供更好的性能呢? 最佳答案 经过大量零星阅读后,我想我对此有了更好的了解。所以回答这个问题以防其他人也有这个问题。计算机中的缓存不受操作系统控制。它是微架构的一部分。没有软件访问可以“改变”缓存配置。在Linux机器上,键入vi/proc/cpuinfo将显示芯片制造商规定的缓存大小和对齐方式。Redis和memcached等工具通过将数据持久保存在机器的物理内存(RAM)中来“缓存”数