Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion src/main/java/org/redis/Main.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
package org.redis;

import redis.clients.jedis.Jedis;

import java.util.Map;

public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
Jedis jedis = new Jedis("localhost", 6379);
Map<String, String> mapRedis = new RedisMap(jedis);

mapRedis.put("1", "Polina");
mapRedis.put("2", "Lina");
mapRedis.put("3", "Alina");
mapRedis.put("4", "Karolina");
System.out.println(mapRedis.get("4"));

System.out.println(mapRedis.containsKey("9"));
}
}
92 changes: 92 additions & 0 deletions src/main/java/org/redis/RedisMap.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
package org.redis;

import redis.clients.jedis.Jedis;

import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class RedisMap implements Map<String,String> {
private final Jedis jedis;

public RedisMap(Jedis jedis) {
this.jedis = jedis;
}

@Override
public int size() {
return (int) jedis.dbSize();
}

@Override
public boolean isEmpty() {
return size() == 0;
}

@Override
public boolean containsKey(Object key) {
return jedis.exists((String) key);
}

@Override
public boolean containsValue(Object value) {
return jedis.keys("*").stream()
.anyMatch(key -> value.equals(jedis.get(key)));
}

@Override
public String get(Object key) {
return jedis.get((String) key);
}

@Override
public String put(String key, String value) {
return jedis.set(key, value);
}

@Override
public String remove(Object key) {
String value = get(key);
jedis.del((String) key);
return value;
}

@Override
public void putAll(Map<? extends String, ? extends String> m) {
for (Entry<? extends String, ? extends String> entry : m.entrySet()) {
put(entry.getKey(), entry.getValue());
}
}

@Override
public void clear() {
jedis.flushDB();
}

@Override
public Set<String> keySet() {
return jedis.keys("*");
}

@Override
public Collection<String> values() {
List<String> values = new ArrayList<>();
for (String key : jedis.keys("*")) {
values.add(jedis.get(key));
}
return values;
}

@Override
public Set<Entry<String, String>> entrySet() {
Set<Entry<String, String>> entrySet = new HashSet<>();
for (String key : jedis.keys("*")) {
entrySet.add(new AbstractMap.SimpleEntry<>(key, jedis.get(key)));
}
return entrySet;
}
}
72 changes: 72 additions & 0 deletions src/test/java/RedisMapTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.redis.RedisMap;
import redis.clients.jedis.Jedis;

import java.util.Map;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class RedisMapTest {
private Jedis jedis;
private RedisMap redisMap;

@BeforeEach
void setUp() {
jedis = new Jedis("localhost", 6379);
redisMap = new RedisMap(jedis);
jedis.flushDB();
}

@AfterEach
void tearDown() {
jedis.close();
}

@Test
void testPutAndGet() {
redisMap.put("key1", "value1");
assertEquals("value1", redisMap.get("key1"));
}

@Test
void testSizeAndIsEmpty() {
assertTrue(redisMap.isEmpty());
redisMap.put("key1", "value1");
assertFalse(redisMap.isEmpty());
assertEquals(1, redisMap.size());
}

@Test
void testContainsKey() {
redisMap.put("key1", "value1");
assertTrue(redisMap.containsKey("key1"));
assertFalse(redisMap.containsKey("key2"));
}

@Test
void testRemove() {
redisMap.put("key1", "value1");
assertEquals("value1", redisMap.remove("key1"));
assertNull(redisMap.get("key1"));
}

@Test
void testClear() {
redisMap.put("key1", "value1");
assertEquals(1, jedis.keys("*").size());
redisMap.clear();
assertEquals(0,jedis.keys("*").size());
}

@Test
void testPutAll(){
redisMap.putAll(Map.of("key1", "value1","key2","value2"));
assertEquals("value1", redisMap.get("key1"));
assertEquals("value2", redisMap.get("key2"));
}
}