공부함
Redis 빌드, RESP V2 명령어 사용해보기 본문
Redis란?
- In Memory NoSQL 또는 In Memory Cache로 다양한 자료구조를 제공한다.
- Memory에 모든 자료를 저장한다.
- 빠르면서 다양한 자료구조를 제공해 개발에 편의성을 제공한다.
캐시
데이터를 DB(디스크)가 아닌 더 빠른 저장 매체(메모리)에 저장해놓고 읽는 것이다.
다양한 방식의 캐시가 있다. 가장 대표적인 방법은 Cache Aside이다.
Cache Aside
- 대부분 캐시가 사용하는 방식이다.
- 캐시에서 먼저 읽고, 캐시 미스가 발생하면 DB를 읽어서 캐시를 업데이트한다.
- 장점 : 로직이 애플리케이션에 있어 구현이 쉽고 캐시에는 필요한 내용만 들어가게 된다.
- 단점 : 캐시 미스가 발생하면 성능이 떨어진다. DB에 업데이트 된 내용이 캐시에 반영되지 않을 수 있다.
- 캐시 미스가 발생한 경우 성능을 떨어트리지 않기 위한 꼼수로 "데이터 : 없음" 과 같이 캐싱을 할 수 있다. 데이터가 없어도 캐시히트가 되게 하는 것이다.
이외에도 Read Through, Write Around, Write Back, Write Through 등의 방법이 있다.
Redis 빌드 및 실행
Redis는 Linux, Mac에서 빌드할 수 있다. 나는 Windows이므로 WSL을 사용했다.
WSL은 Window Subsystem for Linux다. Window에서 Linux를 사용할 수 있게 해준다.
WSL을 설치하고 PowerShell(관리자권한)에서 wsl 을 실행하면 우분투 환경을 사용할 수 있다.
우분투 환경에서 빌드에 필요한 C 컴파일러, make를 설치해주자. update를 하면 보편적으로 필요한 프로그램들을 얼추 세팅해주는 것 같다.
저장소 클론
git clone https://github.com/valkey-io/valkey
빌드 (valkey 디렉토리에서)
make
빌드 도중 에러가 발생했을 경우 초기화 후 다시 빌드
make distclean
Redis 서버 실행 (src 디렉토리에서)
./valkey-server
위와 같은 화면과 함께 Redis가 실행된 것을 확인할 수 있다.
ctrl+c로 종료할 수 있다.
cli 실행
./valkey-cli
명령어 실행해보기
set redis valkey
get redis
PowerShell을 하나 더 켜서 cli상에서 Redis 명령어를 실행해볼 수 있다.
RESP
RESP는 Redis Serialization Protocol이다. Redis 서버가 Redis 클라이언트와 통신할 때 사용하는 프로토콜이다.
https://sgc109.github.io/2020/07/22/redis-resp-protocol/
자세한 내용은 위 링크를 참고하자.
Redis cli 상에서는 RESP를 지원하지 않는다.
Redis 클라이언트를 사용해야 한다. 예를 들자면 Python에서 redis-py 라이브러리를 사용해 RESP로 Redis 서버에 명령할 수 있다.
또 다른 방법은 Telnet 환경을 사용하는 것이다. 나는 Telnet으로 진행해 보았다.
Telnet을 사용하기 위해서는 먼저 Windows 상에서 Telnet을 사용하겠다는 설정을 제어판에서 해준다.
이후 PowerShell에서 wsl을 실행하고 telnet을 사용해주면 된다.
telnet 접속
telnet <Redis 서버 주소> 6379
telnet에 접속한 후에는 RESP 명령어를 사용해 Redis 서버에 명령할 수 있다.