🌚 부록
지난 시간에는 Redis에 문자열에 관한 간단한 문법에 대해서 알아보았다. set, get, append, increse, decrease와 같은 기본 문법이 존재하고 ttl과 expire 통해 로그인 시 웹서버, DB, GameServer 와의 소통 방법에 대해서도 알아보았다. 오늘은 문자열을 넘어서 셋, 정렬된 셋, 리스트, 해시 문법에 대해서 알아보자.
🎸 Redis
이전 시간에는 문자열 자료구조를 알아보았다. 오늘은 이어서 셋, 정렬된 셋, 리스트, 해시에 대해서 알아보도록 하자.
셋
셋은 기본적으로 '중복을 허용하지 않는 집합'이라고 생각하면 된다. 집합의 개념이라고 이해하면 되기 때문에 차집합, 교집합, 합집합 등 다양한 명령어들도 마찬가지로 사용할 수 있다. 셋은 유튜브 채널의 구독 시스템으로 예를 들어 이해하면 편하다. 구독 시스템은 중복을 허용하지 않기 때문이다. 두 번 중복을 누르면 그건 구독취소가 되는 거니까!
셋을 통해 데이터를 추가할 때에는 sadd를 사용하고, 조회할 경우에는 sinter를 사용한다. 삭제할 때에는 sremove의 약자인 srem를 사용한다. 아래 이미지는 셋의 기본적인 문법 사용 예제이다.
정렬된 셋
정렬된 셋은 집합이긴 하지만, 항상 정렬된 상태를 유지한다. 마치 C++의 맵에 해당하는 자료구조인 셈이다. 셋이 유튜브 구독 시스템을 예로 든다면, 정렬된 셋은 랭킹 시스템으로 예를 들 수 있다.
정렬된 셋은 앞에 'z'를 붙여 사용한다. 마찬가지로 add를 통해 데이터를 넣어주고, range를 통해 데이터를 조회할 수 있다. 이 때 0부터 10은 10개의 데이터를 조회한다는 의미이고, -1은 끝까지 조회한다는 것을 의미한다.
zreverserange의 약자인 zrevrange를 통해 데이터를 역순으로 조회할 수 있다.
리스트
리스트의 경우 우리가 사용하는 C#과 동일하다. 따라서 앞, 뒤 구분없이 데이터를 넣어줄 수 있다. (left, right push) 이번에는 길드 유저를 조회 한다고 예를 가정해보자.
push를 통해 데이터를 넣어주고, range를 통해 데이터를 조회할 수 있다. 마찬가지로 pop을 통해 데이터를 꺼낼 수 있고, range의 경우 끝 값으로 -1을 넣어주면 모든 데이터를 조회한다.
해시
해시는 C#에서 사용하는 딕셔너리와 동일하다. 해시는 사용자의 정보를 만드는 것으로 예제를 들어보도록 하자. 먼저 hset을 통해 데이터를 추가하고, hget을 통해 데이터를 확인한다.
이 후 length와 get all과 같이 정의한 클래스의 길이와 모든 정보를 볼 수 있다.
체계적인 MMORPG를 만드는 회사를 간다면 레디스까지 사용할 순 있지만, 인디 게임에서는 굳이 레디스까지 사용할 필요는 없다. 왜냐하면 최대한 심플하게 만드는 것이 가장 좋기 때문이다. 이상으로 데이터베이스의 모든 강의를 마친다. 휴. 🫡😎
'공부 > 인프런 - Rookiss' 카테고리의 다른 글
Part 6-1-1. 개론 : OT (0) | 2024.07.25 |
---|---|
Part 6. 웹 서버 (0) | 2024.07.25 |
Part 5-4-6. 부록 : Redis 맛보기 #2 (1) | 2024.07.24 |
Part 5-4-5. 부록 : Redis 맛보기 #1 (3) | 2024.07.23 |
Part 5-4-4. 부록 : 트랜잭션 (3) | 2024.07.22 |