본문 바로가기

Database

Redis 설치 및 접속하기

Redis

키-값 형태의 저장소

맵(Map) 데이터 저장소형태를 가지고 데이터를 메모리에 저장하여 빠른 읽기와 쓰기를 지원

rdb는 기본적으로 disk에 저장이고 필요시에 메모리에 캐싱하는 것이므로, rdb보다 훨씬 빠른 성능

필요시가 언제인가? 빈번한 조회가 일어날 때

→ 인메모리이지만 주기적으로 디스크에 백업이 일어나기 때문에 데이터손실이 크지 않음

  • 로그인의 경우, 사용자 인증 키 값은 굉장히 빈번하게 사용되기 때문에 rdb에 넣어놓기보다 성능이 좋은 redis에 넣어놓는 경우가 굉장히 많음
  • 재고 값을 redis로 동시성 제어를 함 왜냐면 redis는 싱글 스레드 작업을 하기 때문에 동시성 이슈가 생기지 않음 (→ 한번에 한명을 굉장히 빠른 속도로 처리하기 때문에 가능한 것)
  • 인스타 좋아요 기능 구현시 redis를 썼을 것이다. because 동시성 이슈

 

# redis 설치
sudo apt-get update
sudo apt-get install redis-server

# redis 접속
# cli : command line interface
redis-cli

# redis는 0~15번까지의 database 구성
# 데이터베이스 선택 
select 번호(0번디폴트)

# 데이터베이스 내 전체 key 조회
keys *

# 일반 string 자료구조
# key:value 값 세팅
# key값은 중복되면 안됨 
SET key(키) value(값)
set test_key1 test_value1
set user:email:1 hongildong@naver.com
# set할 때 key값이 이미 존재하면 덮어쓰기 되는 것이 기본
# 맵 저장소에서 key값은 유일하게 관리가 되므로
# nx : not exist -> 존재하지 않을 때만 적용하겠다는 옵션
set user:email:1 hongildong@naver.com nx 
# ex(만료시간-초단위) - ttl(time to live) 
set user:email:2 hongildong2@naver.com ex 20

# get을 통해 value값 얻기
get test_key1

# 특정 key 삭제
del user:email:1

# 현재 데이터베이스의 모든 key 삭제
flushdb

# 좋아요 기능 구현
set likes:posting:1 0
incr likes:posting:1 # 특정 key값의 value를 1만큼 증가
decr likes:posting:1
get likes:posting:1

# 재고 기능 구현
set product:1:stock 100
decr product:1:stock
get product:1:stock