草庐IT

redis - 为什么由redis zset构建的HashSet保持排序?

在Java中,HashSet是未排序的,如下所示:Setset=newHashSet();set.add(1);set.add(4);set.add(3);set.add(2);set.add(5);set.forEach(e->System.out.print(e+""));它的输出是:12345当java集来自zset时,像这样:redisTemplate.opsForZSet().add(key,1,0);redisTemplate.opsForZSet().add(key,4,1);redisTemplate.opsForZSet().add(key,3,2);redisTem

redis - 相交 zset 和 set 在 Redis 中不起作用

我有以下两组,我试图将它们相交并存储结果:127.0.0.1:6379>smembersout21)"judy_1"127.0.0.1:6379>zrangedateset0-1withscores1)"judy_4"2)"118903"....19)"judy_1"20)"137967"您可以看到“judy_1”同时出现在集合和zset中(相关分数为137967)。我想将“out2”和“dateset”相交,留下“judy_1”和分数。我尝试执行此操作并将结果存储在“结果”中,但它返回一个空集。127.0.0.1:6379>zinterstoreresult2out2dataset(

java - Redis - key HASH 和 SET 以及 ZSET 如何与 CrudRepository 保存相关?

我是Redis新手,使用SpringBoot+SpringDataRedis示例开发代码。当我保存记录时,我看到KEYS被创建并且这些键中4是HASH,1ZSET和所有其他都是SET。我没有在Spring文档中看到每个KEY的含义正在被保存。.127.0.0.1:6379>KEYS*1)"persons:c5cfd49d-6688-4b83-a9b7-be55dd1c36ad"2)"persons:firstname:bran"3)"persons:39e14dae-fa23-4935-948f-1922d668d1c2"4)"persons:f0b6dd26-8922-4a36-bd

php - 使用 phpredis zadd 将多个项目添加到 zset

我想弄清楚如何通过phprediszadd方法将多个项目添加到zset。类似下面的内容ZADDmyzset2"二"3"三" 最佳答案 根据documentation,你可以传递分数/值对。$redis->zAdd('myzset',2,'two',3,'three'); 关于php-使用phprediszadd将多个项目添加到zset,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions

data-structures - 具有一个 ZSET 的 Redis GEORADIUS 与许多特定大小的 ZSET

什么会更快,一个带有地理数据的大ZSET,我将在其中使用GEORADIUS查询100米半径或很多ZSET,每个ZSET负责覆盖整个世界的100mX100m正方形?并以这100m的正方形命名,例如:left_corner1_49_2440000_28_5010000left_corner2_49_2450000_28_5010000.......并且将所有100米都放在组内的右侧和底部。因此,在搜索最近点时,我将省略gps中的冗余数字,例如:49.2440408,28.5011694将变为49.2440000、28.5010000这样我就可以知道ZSETS的名称,只需以100米的精度获取

redis - 如何用zsets在Redis上实现users top

例如,我有10000个玩游戏的用户。每个用户在游戏过程中每小时可以赢或输几次(可能是100或1000次)。我需要显示过去1小时内赢得积分的前10名用户。顶部列表应每分钟更新一次。所以我需要为每次输赢存储和更新60(一小时内的分钟数)zsets。旧的zset将在过期时自动删除。另一种方法是在hset中按分钟存储用户点数(每次赢或输只有一个hincrby),并每分钟使用此数据重新计算zset的值。在这种情况下,我应该每分钟获取10000个hkey,删除每个键中的旧数据(超过一小时),对其他数据求和并创建新的zset以进行显示。这两种情况我都不喜欢,因为用户数可以增加几倍,或者将来可以添加其

redis - 有什么方法可以使用字符串作为 Redis 排序集 (zset) 中的分数?

或者也许问题应该是:将字符串表示为数字的最佳方式是什么,以便对它们的数字表示进行排序会得到与按字符串排序相同的结果?我设计了一种方法,可以对每个字符串最多9个字符进行排序,但似乎应该有更好的方法。事先,我认为使用Redis的字典顺序命令行不通。(请参阅以下示例。)示例:假设我想对链接到某个ID的所有名称进行预排序,以便我可以使用ZINTERSTORE快速获取基于名称的ID有序列表(无需使用redis的SORT命令)。理想情况下,我会将ID作为zset的成员,每个名称的数字表示将是zset的分数。这有意义吗?还是我做错了? 最佳答案

performance - 在 Redis 中创建中型到大型列表/集合/zset/哈希的最有效方法是什么?

使用redis,有许多命令可以检索整个数据结构(LRANGE用于列表,SMEMBERS用于集合,ZRANGE用于排序集合,HGETALL用于散列)。只有哈希有一个方法(HMSET)用一个命令插入多个项目。我见过的所有示例都显示一次只向列表(通过RPUSH或LPUSH)或集合(通过SADD/ZADD)添加一个项目。我想解决的更具体的问题是创建包含数据库ID的列表和排序集,这些列表对每个用户都是唯一的,包含几百到几千个ID。它们通常是从数据库查询中收集的,在内存中稍微处理一下,然后存储在redis中,用于分页(列表)或进行基于集合的操作以检索子集(集合和排序集合)。目前,我正在遍历列表并为

redis - Redis 数据库中的 ZSET 是什么?

什么是redis数据库中的zset。我有一个包含一些数据的redis数据库。为了得到值KEYS*apple*1)"compleet-index:products:apple"2)"compleet-index:brands:apple"拿到key之后GETcompleet-index:productos:apple我得到了回应(error)WRONGTYPEOperationagainstakeyholdingthewrongkindofvalue我知道类型TYPEcompleet-index:productos:iphonezset当我做DUMPcompleet-index:prod

延时任务-基于redis zset的完整实现

所谓的延时任务给大家举个例子:你买了一张火车票,必须在30分钟之内付款,否则该订单被自动取消。订单30分钟不付款自动取消,这个任务就是一个延时任务。我之前已经写过2篇关于延时任务的文章:《完整实现-通过DelayQueue实现延时任务》《延时任务(二)-基于netty时间轮算法实战》这两种方法都有一个缺点:都是基于单体应用的内存的方式运行延时任务的,一旦出现单点故障,可能出现延时任务数据的丢失。所以此篇文章给大家介绍实现延时任务的第三种方式,结合rediszset实现延时任务,可以解决单点故障的问题。给出实现原理、完整实现代码,以及这种实现方式的优缺点。一、实现原理首先来介绍一下实现原理,我们