레디스는 Key-Value 형식으로 데이터를 저장한다.
콜론(
:
)으로 계층적 의미를 구분해서 사용한다.
예시
users:100:profile
: 사용자들(users) 중에서 pk가 100인 사용자의 프로필products:123:details
: 상품들 중에서 pk가 123인 상품의 세부사항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");
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 반환
keys *
저장된 데이터를 모두 조회한다. 만약 저장된 데이터가 없다면 (empty array)
를 출력한다.
Set<String> keys = redisTemplate.keys("*");
성능 이슈로 인해 사용 지양
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을 반환한다.
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();
운영 환경에서는 절대 사용 금지!