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
'Database' 카테고리의 다른 글
Public Key Retrieval is not allowed & Access denied for user 'root'@'localhost' 해결 (0) | 2024.06.20 |
---|---|
Redis의 활용과 자료구조 (0) | 2024.05.27 |
mariadb 사용자 관리와 프로시저 (1) | 2024.05.23 |
데이터 베이스 모델링과 정규화 (0) | 2024.05.23 |
mariadb join, union, subquery, group by (1) | 2024.05.22 |