Redis 기초 명령어 & 자바 적용

Regular Kim·2025년 8월 3일
0

기타

목록 보기
11/19

레디스는 Key-Value 형식으로 데이터를 저장한다.

명령어 알아보기 전에 Key 네이밍 컨벤션 먼저 숙지하기

콜론(:)으로 계층적 의미를 구분해서 사용한다.

예시

  • users:100:profile : 사용자들(users) 중에서 pk가 100인 사용자의 프로필
  • products:123:details : 상품들 중에서 pk가 123인 상품의 세부사항

왜 이렇게 해야하죠?

  1. 데이터의 의미와 용도를 쉽게 파악 가능
  2. 컨벤션에 의해 일관성과 유지보수성 향상
  3. 패턴 매칭을 통해 특정 유형의 Key 검색 용이
  4. 서로 다른 Key와 이름이 겹쳐 충돌할 일이 적어짐

Redis 기초 명령어

데이터(Key, Value) 저장

set myname:name "regular kim" # 띄어쓰기 저장하려면 쌍따옴표로 묶기
set myname:hobby computer

set key-name value 형식으로 데이터를 저장할 수 있다. 저장에 성공하면 OK 문자가 출력된다.

redisTemplate.opsForValue().set("myname:name", "regular kim");
redisTemplate.opsForValue().set("myname:hobby", "computer");

데이터 조회 (Key로 Value 조회)

get myname:name
get myname:hobby

get noname:name # 없는 데이터를 조회할 경우 (nil) 출력됨
String name = redisTemplate.opsForValue().get("myname:name");
String hobby = redisTemplate.opsForValue().get("myname:hobby");
String noname = redisTemplate.opsForValue().get("noname:name"); // null 반환

저장된 모든 Key 조회

keys *

저장된 데이터를 모두 조회한다. 만약 저장된 데이터가 없다면 (empty array)를 출력한다.

Set<String> keys = redisTemplate.keys("*");

성능 이슈로 인해 사용 지양

Key로 데이터 삭제하기

del myname:name

get myname:name # 삭제됐는지 확인

del key-name 형식으로 저장된 데이터를 삭제할 수 있다. 삭제에 성공하면 1이 출력된다. 없는 데이터(삭제된 데이터)를 조회할 경우 (nil) 문자열이 출력된다.

Boolean result = redisTemplate.delete("myname:name"); // true or false

데이터 수명 설정하기

set myname:name regular ex 30

set keyname value ex 만료시간(초) 형식으로 데이터의 수명을 지정할 수 있다. 수명시간이 지나면 해당 데이터는 삭제된다.

redisTemplate.opsForValue().set("myname:name", "regular", Duration.ofSeconds(30));

데이터 수명 확인하기

ttl myname:name
ttl myname:hobby
ttl noname:name

ttl key-name 형식으로 조회시 해당 데이터의 수명을 확인할 수 있다. 만료 시간이 몇 초 남았는지 반환한다. 키가 없는 경우에는 -2를 반환한다. 키는 존재하지만 만료 시간이 설정되지 않은 경우에는 -1을 반환한다.

  • TTL -> Time To Live
Long ttlName = redisTemplate.getExpire("myname:name");     // 남은 TTL (초)
Long ttlHobby = redisTemplate.getExpire("myname:hobby");   // -1 또는 TTL
Long ttlNone = redisTemplate.getExpire("noname:name");     // -2

모든 데이터 삭제하기

flushall
redisTemplate.getConnectionFactory().getConnection().flushAll();

운영 환경에서는 절대 사용 금지!

profile
What doesn't kill you, makes you stronger

0개의 댓글