sql >> Databasteknik >  >> NoSQL >> Redis

Redis skanna hoppar över nycklar

Verkligen! Det beror på att SCAN fungerar på det sättet, med citat från Redis dokumentation:

Men även om blockeringskommandon som SMEMBERS kan tillhandahålla alla element som ingår i en uppsättning i ett givet ögonblick, erbjuder SCAN-familjen av kommandon endast begränsade garantier om de returnerade elementen eftersom samlingen som vi inkrementellt itererar kan ändras under iterationsprocessen.

Men eftersom SCAN har väldigt lite tillstånd associerat (bara markören) har det följande nackdelar:Ett givet element kan returneras flera gånger. Det är upp till applikationen att hantera fallet med duplicerade element , till exempel att endast använda de returnerade elementen för att utföra operationer som är säkra när de återappliceras flera gånger.

Så du kanske vill använda vill använda array_unique($keys) efter foreach .

För att förstå varför iterationen fungerar på det sättet är det bästa att läsa den här delen av Redis-dokumentationen .




  1. MongoDB:Unik nyckel i inbäddat dokument

  2. Redis SortedSet:Hur får man värden i numerisk ordning snarare än alfabetisk ordning när två värden har samma poäng?

  3. Ansluter du direkt till Redis med (klientsidan) javascript?

  4. Redis Anslutning via uttag på Node.js