草庐IT

redis - 如何在不设置 TTL 的情况下防止对特定键的逐出?

问题:我想在一个键上设置一个TTL(以避免它永远持续),但我不想让那个特定的键被驱逐。当我设置TTL时,我知道什么时候可以安全地使该缓存过期,但在此之前使缓存过期是不安全的,并且逐出存在使该缓存过早过期的风险。上下文:我正在使用Redis以多种语言缓存对象,如果底层数据发生变化,但我想从Redis中删除所有关联的缓存。我解决这个问题的方法是在Redis上创建一个SET,其中包含对每种语言的键的引用。我担心的是,如果该SET被逐出-我会丢失对其他键的引用,并冒着让它们在不应该保留在缓存中的风险。我在找什么看起来像的Redis命令PLEASE_DO_NOT_EVICT键同时不阻止该key在

Java:我可以使用Redis db创建优先级队列并根据数据集中键的值设置优先级吗

我是Redis新手。我想通过Java客户端在Redis中使用优先级队列。我将有一组键值对。并将其用作优先级队列。数据集包含键及其对应的值。例如[a:1,b:1,c:1]。值字段将表示键在数据集中出现的次数。如果将另一个键“a”插入到数据集中,则它变为[a:2,b:1,c:1]。这里是优先级。集合中出现的大多数键将具有最高优先级,在示例中为[a],并且它应该位于队列的顶部。所以当我弹出队列时,优先级最高的元素应该弹出。此外,如果数据集看起来像这样[a:2,b:2,c:2],那么我想随机选择一个从队列中弹出。由于我的数据集是键值对,所以我想使用Redis[你可能会建议一个更好的]。

php - 删除存储在php redis中指定键的列表的指定元素

在phpredis中如何删除存储在指定键的列表中的指定元素?我知道可以使用返回一个元素$redis->lGet('key','indexvalue');但是我如何使用其索引值或任何其他方式删除特定元素?请帮忙... 最佳答案 使用$redis->lRem(..)。例如$redis->lPush('key1','A');$redis->lPush('key1','B');$redis->lPush('key1','C');$redis->lPush('key1','A');$redis->lPush('key1','A');$redi

java - HashMap 与字符串键的 Redis 内存优化

我一直在尝试在两种情况下评估redis的内存大小。场景1:StringcommonString="Test";longcommonId=1234567890L;intsize=0;for(inti=1;i在这个场景中,大小是892字节场景2:StringcommonString="Test";longcommonId=1234567890L;intsize=0;for(inti=1;i在这种情况下,它需要925个字节。SinceRedis2.2manydatatypesareoptimizedtouselessspaceuptoacertainsize.Hashes,Lists,Set

redis 在单个查询中获取多个键的值?

Redis中是否有任何命令可以在单个查询中获取多个键的值?实际上,我的键都是SETS,所以我想获得它们的所有值,但是由于MEMBERS只接受一个KEY作为参数,这在单个查询中是否可行。 最佳答案 您无法在一个查询中获取多个集合的值。您必须多次查询数据库。但是,您可以使用单个查询进行涉及多个集合的操作。此类操作的命令是:SDIFF-返回由第一个集合和所有后续集合之间的差异产生的集合成员。SINTER-返回由所有给定集的交集产生的集的成员。SUNION-返回由所有给定集合并集产生的集合的成员。

node.js - Redis 在一个命令中获取 TTL 和键的值 - nodejs redis

是否有选项可以在一个命令中获取key的TTL及其值?使用redis-cli。 最佳答案 您可以使用TTL命令获取具有超时和GET的key的剩余生存时间获得键值。没有一个命令可以同时执行这两项操作。唯一的办法是使用管道或事务ioredis模块pipeline命令redis.pipeline().ttl('foo').get('foo').exec(function(err,result){//result===[[null,],[null,]]});multi命令redis.multi().ttl('foo').get('foo').

python - 从给定的 Redis 集群,我如何运行 Redis CLI 或 API 调用来获取整个集群上的每个键的列表,而不仅仅是一台机器?

这仅适用于初始Redis设置。显然,在生产系统上,整个多机数据库的转储很难整理。我会接受任何语言的回答,尽管我更喜欢Python。为此,一个简单的RedisCLI命令也可以。 最佳答案 Redis使用哨兵实现集群。阅读有关sentinel的更多信息-http://redis.io/topics/sentinel从终端使用redis-cli-hhostname-pport连接到redis实例。运行KEYS*命令获取该Redis实例上的所有键。KEYS命令将正则表达式作为参数(*代表所有)。如果您尝试从代码访问它..有各种可用的模块。我

redis - 了解redis中键的内存消耗

我正在运行本地Redis服务器。在redis中有一个坏键占用了大量内存。在删除该键之前,“信息内存”显示5.3GB已占用内存。那个坏key占用了大约800MB的数据。这是基于“调试对象”输出。删除该键后,释放了几乎两倍大小的内存。预期只有800MB左右。关于这背后的原因有什么想法吗?在ubuntu上运行。127.0.0.1:6379[3]>info#Serverredis_version:2.8.9127.0.0.1:6379[3]>infomemory#Memoryused_memory:5746884728used_memory_human:5.35Gused_memory_rss

lua - 在不指定 redis 键的情况下从 hashamp 访问值

我想在不提供key的情况下从redis中的哈希访问具有给定模式的值。例子HSETmyKeyva11"Hello"val2"Hi"Val3"GooMorning"val4"GoodEvening"HSETmyKey2va11"oneval2"two"Val3"three"val4"four"我有一组键,它们的值如上所述。有没有什么方法可以在不提供键的情况下检索值。我只是想在不提供key的情况下检查Good*是否有任何值(value)。 最佳答案 我看到您正在使用“lua”标签-如果LUA不是必须的,请考虑以下使用HVALS的示例.我提

redis - 如何使用 Redis 查找介于不同键的两个值之间的结果?

我正在使用基于MMR的Redis创建一个游戏匹配系统,MMR是一个几乎可以概括玩家技能的数字。因此,系统可以将他/她与几乎具有相同技能的其他人进行匹配。例如,如果一个MMR为1000的玩家加入队列,系统将尝试寻找其他MMR在950到1050范围内的人来匹配这个玩家。但是,如果一分钟后它找不到任何具有给定统计数据的球员,它将把范围扩大到900到1100(一个恒定的阈值)。使用关系数据库设计,我想做的事情真的很容易,但我不知道如何使用Redis来完成。队列表的实现是这样的:+----+---------+------+-------+|ID|USER_ID|MMR|TRIES|+----+