BAEL-3613: Reading All Available Redis Keys (#8490)
This commit is contained in:
committed by
Sam Millington
parent
f46ea65783
commit
6bca22524a
+96
@@ -0,0 +1,96 @@
|
||||
package com.baeldung.redis_scan;
|
||||
|
||||
import com.baeldung.redis_scan.client.RedisClient;
|
||||
import org.junit.*;
|
||||
import redis.embedded.RedisServer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class NaiveApproachIntegrationTest {
|
||||
private static RedisServer redisServer;
|
||||
private static int port;
|
||||
private static RedisClient redisClient;
|
||||
|
||||
@BeforeClass
|
||||
public static void setUp() throws IOException {
|
||||
|
||||
// Take an available port
|
||||
ServerSocket s = new ServerSocket(0);
|
||||
port = s.getLocalPort();
|
||||
s.close();
|
||||
|
||||
redisServer = new RedisServer(port);
|
||||
redisServer.start();
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void destroy() {
|
||||
if (redisServer.isActive())
|
||||
redisServer.stop();
|
||||
}
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
if (!redisServer.isActive()) {
|
||||
redisServer.start();
|
||||
}
|
||||
redisClient = RedisClient.getInstance("127.0.0.1", port);
|
||||
}
|
||||
|
||||
@After
|
||||
public void flushAll() {
|
||||
redisClient.flushAll();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testKeys() {
|
||||
HashMap<String, String> keyValues = new HashMap<String, String>();
|
||||
keyValues.put("balls:cricket", "160");
|
||||
keyValues.put("balls:football", "450");
|
||||
keyValues.put("balls:volleyball", "270");
|
||||
redisClient.mset(keyValues);
|
||||
Set<String> readKeys = redisClient.keys("ball*");
|
||||
Assert.assertEquals(keyValues.size(), readKeys.size());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSmembers() {
|
||||
HashSet<String> setMembers = new HashSet<String>();
|
||||
setMembers.add("cricket_160");
|
||||
setMembers.add("football_450");
|
||||
setMembers.add("volleyball_270");
|
||||
redisClient.sadd("balls", setMembers.toArray(new String[setMembers.size()]));
|
||||
Set<String> readSetMembers = redisClient.smembers("balls");
|
||||
Assert.assertEquals(setMembers.size(), readSetMembers.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHgetAll() {
|
||||
HashMap<String, String> keyValues = new HashMap<String, String>();
|
||||
keyValues.put("balls:cricket", "160");
|
||||
keyValues.put("balls:football", "450");
|
||||
keyValues.put("balls:volleyball", "270");
|
||||
redisClient.hmset("balls", keyValues);
|
||||
Map<String, String> readHash = redisClient.hgetAll("balls");
|
||||
Assert.assertEquals(keyValues.size(), readHash.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZRange() {
|
||||
HashMap<String, Double> scoreMembers = new HashMap<String, Double>();
|
||||
scoreMembers.put("cricket", (double) 160);
|
||||
scoreMembers.put("football", (double) 450);
|
||||
scoreMembers.put("volleyball", (double) 270);
|
||||
redisClient.zadd("balls", scoreMembers);
|
||||
Set<String> readSetMembers = redisClient.zrange("balls", 0, -1);
|
||||
|
||||
Assert.assertEquals(readSetMembers.size(), scoreMembers.size());
|
||||
}
|
||||
|
||||
}
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
package com.baeldung.redis_scan;
|
||||
|
||||
import com.baeldung.redis_scan.client.RedisClient;
|
||||
import com.baeldung.redis_scan.iterator.RedisIterator;
|
||||
import com.baeldung.redis_scan.strategy.ScanStrategy;
|
||||
import com.baeldung.redis_scan.strategy.impl.Hscan;
|
||||
import com.baeldung.redis_scan.strategy.impl.Scan;
|
||||
import com.baeldung.redis_scan.strategy.impl.Sscan;
|
||||
import com.baeldung.redis_scan.strategy.impl.Zscan;
|
||||
import org.junit.*;
|
||||
import redis.clients.jedis.Tuple;
|
||||
import redis.embedded.RedisServer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
public class ScanStrategyIntegrationTest {
|
||||
|
||||
private static RedisServer redisServer;
|
||||
private static int port;
|
||||
private static RedisClient redisClient;
|
||||
|
||||
@BeforeClass
|
||||
public static void setUp() throws IOException {
|
||||
|
||||
// Take an available port
|
||||
ServerSocket s = new ServerSocket(0);
|
||||
String ip = "127.0.0.1";
|
||||
port = s.getLocalPort();
|
||||
s.close();
|
||||
|
||||
redisServer = new RedisServer(port);
|
||||
redisServer.start();
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void destroy() {
|
||||
if (redisServer.isActive())
|
||||
redisServer.stop();
|
||||
}
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
if (!redisServer.isActive()) {
|
||||
redisServer.start();
|
||||
}
|
||||
redisClient = RedisClient.getInstance("127.0.0.1", port);
|
||||
}
|
||||
|
||||
@After
|
||||
public void flushAll() {
|
||||
redisClient.flushAll();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScanStrategy() {
|
||||
HashMap<String, String> keyValues = new HashMap<String, String>();
|
||||
keyValues.put("balls:cricket", "160");
|
||||
keyValues.put("balls:football", "450");
|
||||
keyValues.put("balls:volleyball", "270");
|
||||
redisClient.mset(keyValues);
|
||||
|
||||
ScanStrategy<String> scanStrategy = new Scan();
|
||||
int iterationCount = 2;
|
||||
RedisIterator iterator = redisClient.iterator(iterationCount, "ball*", scanStrategy);
|
||||
List<String> results = new LinkedList<String>();
|
||||
while (iterator.hasNext()) {
|
||||
results.addAll(iterator.next());
|
||||
}
|
||||
Assert.assertEquals(keyValues.size(), results.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSscanStrategy() {
|
||||
HashSet<String> setMembers = new HashSet<String>();
|
||||
setMembers.add("cricket_160");
|
||||
setMembers.add("football_450");
|
||||
setMembers.add("volleyball_270");
|
||||
redisClient.sadd("balls", setMembers.toArray(new String[setMembers.size()]));
|
||||
|
||||
Sscan scanStrategy = new Sscan("balls");
|
||||
int iterationCount = 2;
|
||||
RedisIterator iterator = redisClient.iterator(iterationCount, "*", scanStrategy);
|
||||
List<String> results = new LinkedList<String>();
|
||||
while (iterator.hasNext()) {
|
||||
results.addAll(iterator.next());
|
||||
}
|
||||
Assert.assertEquals(setMembers.size(), results.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHscanStrategy() {
|
||||
HashMap<String, String> hash = new HashMap<String, String>();
|
||||
hash.put("cricket", "160");
|
||||
hash.put("football", "450");
|
||||
hash.put("volleyball", "270");
|
||||
redisClient.hmset("balls", hash);
|
||||
|
||||
Hscan scanStrategy = new Hscan("balls");
|
||||
int iterationCount = 2;
|
||||
RedisIterator iterator = redisClient.iterator(iterationCount, "*", scanStrategy);
|
||||
List<Map.Entry<String, String>> results = new LinkedList<Map.Entry<String, String>>();
|
||||
while (iterator.hasNext()) {
|
||||
results.addAll(iterator.next());
|
||||
}
|
||||
Assert.assertEquals(hash.size(), results.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZscanStrategy() {
|
||||
HashMap<String, Double> memberScores = new HashMap<String, Double>();
|
||||
memberScores.put("cricket", (double) 160);
|
||||
memberScores.put("football", (double) 450);
|
||||
memberScores.put("volleyball", (double) 270);
|
||||
redisClient.zadd("balls", memberScores);
|
||||
|
||||
Zscan scanStrategy = new Zscan("balls");
|
||||
int iterationCount = 2;
|
||||
RedisIterator iterator = redisClient.iterator(iterationCount, "*", scanStrategy);
|
||||
List<Tuple> results = new LinkedList<Tuple>();
|
||||
while (iterator.hasNext()) {
|
||||
results.addAll(iterator.next());
|
||||
}
|
||||
Assert.assertEquals(memberScores.size(), results.size());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user