[SPRING] 값에 대해 Redis에서 데이터를 모델링하는 방법 복잡한 데이터 구조?
SPRING값에 대해 Redis에서 데이터를 모델링하는 방법 복잡한 데이터 구조?
나는 아래의 코드를 개발하기 위해 http://panuoksala.blogspot.com/2015/09/redis-many-to-many.html 링크를 참조했다. 몇 가지 코드를 구현했습니다. 지금까지는 아무 것도 달성 할 수없는 것처럼 보입니다.
사용자 1 그룹 가져 오기 :
hget User:1 Groups
결과를 산출하지 않습니다.
데이터 모델링 관점에서 더 많은 답변을 얻고 싶었습니다. 나는 아래와 같은 코드를 모델링했지만, 그것이 나의 요구 사항에 따라 작동하지 않는다.
Group.java
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@RedisHash("groups")
public class Group {
@Id
private Long groupId;
private String name;
private List<User> users;
}
그리고 User.java
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@RedisHash("users")
public class User {
@Id
private Long userId;
private String name;
List<Group> groups;
}
UserGroupTest.java
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class UserGroupTest extends RepositoryTestSupport{
@Autowired UserRepository userRepository;
@Autowired GroupRepository groupRepository;
@Before
public void setUp() {
// User -> Group relations
Group group1 = Group.builder().groupId(1L).name("Nature-Group").build();
Group group2 = Group.builder().groupId(2L).name("Music-Group").build();
Group group3 = Group.builder().groupId(3L).name("Sports-Group").build();
User user1 = User.builder().userId(1L).name("John").groups(Arrays.asList(group1, group2)).build();
User user2 = User.builder().userId(2L).name("Sally").groups(Arrays.asList(group2, group3)).build();
User user3 = User.builder().userId(3L).name("Chris").groups(Arrays.asList(group3)).build();
userRepository.save(user1);
userRepository.save(user2);
userRepository.save(user3);
// second contains Group -> User
User myuser1 = User.builder().userId(1L).name("John").build();
User myuser2 = User.builder().userId(2L).name("Sally").build();
User myuser3 = User.builder().userId(3L).name("Chris").build();
Group mygroup1 = Group.builder().groupId(1L).name("Nature-Group").users(Arrays.asList(myuser1)).build();
Group mygroup2 = Group.builder().groupId(2L).name("Music-Group").users(Arrays.asList(myuser1, myuser2)).build();
Group mygroup3 = Group.builder().groupId(3L).name("Sports-Group").users(Arrays.asList(myuser2, myuser3)).build();
groupRepository.save(mygroup1);
groupRepository.save(mygroup2);
groupRepository.save(mygroup3);
}
@Test
public void test() {
}
}
이 문제를 해결하기 위해 서로 다른 두 세트를 사용하여 관계를 추적 할 수 있습니다.
먼저 사용자와 그룹을 세트로 저장합니다. 그런 다음 관계를 두 개의 별도 해시 "구조"에 저장합니다. 첫 번째 것은 User -> Group 관계를 포함하고 두 번째는 Group -> User 관계를 포함합니다.
127.0.0.1:6379> HGET users:1 groups
(nil)
127.0.0.1:6379> HGET users:1 Groups
(nil)
127.0.0.1:6379> HGET users:1 Group
(nil)
이 모든 결과를 얻을 수 있도록 POJO 클래스를 모델링하는 방법은 무엇입니까?
hmset User:1 Groups 1,2 (Store user to database)
hmset Group1 Users 1 (Store group to database)
Get User 1 groups:
hget User:1 Groups
Remove user from group:
hmset User:1 Group ""
hmset Group:1 Users: ""
?
해결법
from https://stackoverflow.com/questions/53265496/how-to-model-data-in-redis-for-values-complex-data-structure by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 카프카 탄력성 - 그룹 코디네이터 (0) | 2019.04.28 |
---|---|
[SPRING] 왜 봄 ReactiveMongoRepository는 모노에 대한 저장 방법을 가지고 있지 않습니까? (0) | 2019.04.28 |
[SPRING] 전용 바람둥이에 war 파일로 spring-boot 어플리케이션을 배치하는 것이 효과가 없습니다. (0) | 2019.04.28 |
[SPRING] 스프링 테스트 및 메이븐 (0) | 2019.04.28 |
[SPRING] 스프링 보안 - BcryptPasswordEncoder (0) | 2019.04.28 |