Skip to content

Commit b4e623d

Browse files
Change redis operations from using set to value.
1 parent 70500f0 commit b4e623d

2 files changed

Lines changed: 21 additions & 31 deletions

File tree

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
11
package org.wise.portal.service.ping.impl;
22

33
import java.time.Duration;
4-
import java.util.Set;
54

65
import org.springframework.beans.factory.annotation.Autowired;
76
import org.springframework.data.redis.core.StringRedisTemplate;
87
import org.springframework.stereotype.Service;
98
import org.wise.portal.service.ping.CRaterPingService;
109

1110
@Service
12-
public class CRaterPingServiceImpl implements CRaterPingService{
11+
public class CRaterPingServiceImpl implements CRaterPingService {
1312
@Autowired
1413
private StringRedisTemplate stringRedisTemplate;
1514

1615
public boolean hasPingedItem(String itemId) {
17-
Set<String> members = stringRedisTemplate.opsForSet().members(itemId);
18-
return members.size() > 0;
16+
return stringRedisTemplate.opsForValue().size(itemId) == 1;
1917
}
2018

2119
public void cachePingedItem(String itemId, int ttl) {
22-
this.stringRedisTemplate.opsForSet().add(itemId, "pinged");
23-
this.stringRedisTemplate.expire(itemId, Duration.ofSeconds(ttl));
20+
this.stringRedisTemplate.opsForValue().setIfAbsent(itemId, "pinged");
21+
this.stringRedisTemplate.expire(itemId, Duration.ofSeconds(ttl));
2422
}
25-
}
23+
}

src/test/java/org/wise/portal/service/ping/impl/CRaterPingServiceImplTest.java

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,15 @@
55
import static org.easymock.EasyMock.verify;
66
import static org.junit.Assert.assertFalse;
77
import static org.junit.Assert.assertTrue;
8-
import static org.junit.jupiter.api.Assertions.assertEquals;
98

109
import java.time.Duration;
11-
import java.util.HashSet;
12-
import java.util.Set;
13-
1410
import org.easymock.EasyMockExtension;
1511
import org.easymock.Mock;
1612
import org.easymock.TestSubject;
1713
import org.junit.jupiter.api.Test;
1814
import org.junit.jupiter.api.extension.ExtendWith;
19-
import org.springframework.data.redis.core.SetOperations;
2015
import org.springframework.data.redis.core.StringRedisTemplate;
16+
import org.springframework.data.redis.core.ValueOperations;
2117

2218
@ExtendWith(EasyMockExtension.class)
2319
public class CRaterPingServiceImplTest {
@@ -28,42 +24,38 @@ public class CRaterPingServiceImplTest {
2824
private StringRedisTemplate stringRedisTemplate;
2925

3026
@Mock
31-
private SetOperations<String, String> setOperations;
27+
private ValueOperations<String, String> valueOperations;
3228

3329
private String testId = "test";
3430

3531
@Test
3632
public void hasPingedItem_ItemPinged_ShouldReturnTrue() {
37-
Set<String> members = new HashSet<String>();
38-
members.add(testId);
39-
expect(stringRedisTemplate.opsForSet()).andReturn(setOperations);
40-
expect(setOperations.members(testId)).andReturn(members);
41-
replay(stringRedisTemplate, setOperations);
33+
expect(stringRedisTemplate.opsForValue()).andReturn(valueOperations);
34+
expect(valueOperations.size(testId)).andReturn(1L);
35+
replay(stringRedisTemplate, valueOperations);
4236
assertTrue(pingEndpointServiceImpl.hasPingedItem(testId));
4337
verify(stringRedisTemplate);
44-
verify(setOperations);
38+
verify(valueOperations);
4539
}
46-
40+
4741
@Test
4842
public void hasPingedItem_ItemNotPinged_ShouldReturnFalse() {
49-
Set<String> members = new HashSet<String>();
50-
expect(stringRedisTemplate.opsForSet()).andReturn(setOperations);
51-
expect(setOperations.members(testId)).andReturn(members);
52-
replay(stringRedisTemplate, setOperations);
43+
expect(stringRedisTemplate.opsForValue()).andReturn(valueOperations);
44+
expect(valueOperations.size(testId)).andReturn(0L);
45+
replay(stringRedisTemplate, valueOperations);
5346
assertFalse(pingEndpointServiceImpl.hasPingedItem(testId));
5447
verify(stringRedisTemplate);
55-
verify(setOperations);
48+
verify(valueOperations);
5649

5750
}
5851

59-
6052
@Test
6153
public void cachePingedItem_ShouldCacheAndExpireItemId() {
62-
expect(stringRedisTemplate.opsForSet()).andReturn(setOperations);
54+
expect(stringRedisTemplate.opsForValue()).andReturn(valueOperations);
6355
expect(stringRedisTemplate.expire(testId, Duration.ofSeconds(1))).andReturn(null);
64-
expect(setOperations.add(testId, "pinged")).andReturn(null);
65-
replay(stringRedisTemplate, setOperations);
56+
expect(valueOperations.setIfAbsent(testId, "pinged")).andReturn(null);
57+
replay(stringRedisTemplate, valueOperations);
6658
pingEndpointServiceImpl.cachePingedItem(testId, 1);
67-
verify(stringRedisTemplate, setOperations);
59+
verify(stringRedisTemplate, valueOperations);
6860
}
69-
}
61+
}

0 commit comments

Comments
 (0)