아래는 주어진 Redis 명령어들에 대한 설명입니다.
1. HSET: 해시(Hash)에 필드-값 추가
HSET users:1:info name greg email greg@gmail.com phone 010-5897-4859
- 설명: Redis의 HSET 명령어는 해시(Hash) 자료구조에 필드-값 쌍을 추가합니다.
- 동작:
users:1:info
라는 해시에"name"
,"email"
,"phone"
필드와 각각"greg"
,"greg@gmail.com"
,"010-5897-4859"
값을 추가합니다. - 결과: 3개의 필드가 추가되었으므로,
(integer) 3
이 반환됩니다.
2. HGET: 해시에서 특정 필드의 값 조회
HGET users:1:info name
HGET users:1:info email
HGET users:1:info phone
- 설명: HGET 명령어는 해시에서 특정 필드의 값을 조회합니다.
- 동작:
users:1:info
해시에서"name"
,"email"
,"phone"
필드의 값을 각각 조회합니다. - 결과:
"name"
필드의 값은"greg"
."email"
필드의 값은"greg@gmail.com"
."phone"
필드의 값은"010-5897-4859"
.
3. HGETALL: 해시의 모든 필드-값 쌍 조회
HGETALL users:1:info
- 설명: HGETALL 명령어는 해시의 모든 필드와 값을 조회합니다.
- 동작:
users:1:info
해시의 모든 필드와 값을 반환합니다. - 결과:
"name"
,"greg"
,"email"
,"greg@gmail.com"
,"phone"
,"010-5897-4859"
.
4. HDEL: 해시에서 특정 필드 삭제
HDEL users:1:info email
- 설명: HDEL 명령어는 해시에서 특정 필드를 삭제합니다.
- 동작:
users:1:info
해시에서"email"
필드를 삭제합니다. - 결과:
(integer) 1
이 반환되며, 필드가 삭제되었음을 의미합니다.
5. HSET: 새로운 필드 추가
HSET users:1:info visits 0
- 설명: HSET 명령어를 사용해 새로운 필드
"visits"
를users:1:info
해시에 추가하고 값으로0
을 저장합니다. - 결과:
(integer) 1
이 반환되며, 필드가 추가되었음을 의미합니다.
6. HGET: 특정 필드의 값 조회 (방문 횟수)
HGET users:1:info visits
- 설명: HGET 명령어를 사용해
users:1:info
해시에서"visits"
필드의 값을 조회합니다. - 결과:
"0"
이 반환됩니다.
7. HINCRBY: 해시의 특정 필드 값 증가
HINCRBY users:1:info visits 1
HINCRBY users:1:info visits 10
- 설명: HINCRBY 명령어는 해시의 특정 필드 값을 지정된 양만큼 증가시킵니다.
- 동작:
- 첫 번째 명령어는
"visits"
필드의 값을1
증가시킵니다. 기존 값이0
이었으므로 증가 후 값은1
이 됩니다. - 두 번째 명령어는
"visits"
필드의 값을10
증가시킵니다. 현재 값이1
이므로, 증가 후 값은11
이 됩니다.
- 첫 번째 명령어는
- 결과:
- 첫 번째 명령어 결과:
(integer) 1
. - 두 번째 명령어 결과:
(integer) 11
.
- 첫 번째 명령어 결과:
요약:
- HSET: 해시에 필드-값 쌍을 저장합니다. 여러 필드와 값을 동시에 저장할 수 있습니다.
- HGET: 해시에서 특정 필드의 값을 조회합니다.
- HGETALL: 해시의 모든 필드-값 쌍을 조회합니다.
- HDEL: 해시에서 특정 필드를 삭제합니다.
- HINCRBY: 해시의 특정 필드 값을 지정된 양만큼 증가시킵니다.
이 예제에서는 사용자 정보를 해시(Hash) 자료구조로 관리하며, 사용자 정보 조회 및 수정, 필드 삭제, 방문 횟수 증가 등의 동작을 보여줍니다.
자바 코드로 실습한 내용입니다.
코드
public static void main(String[] args) {
System.out.println("Hello world!");
try (var jedisPool = new JedisPool("127.0.0.1", 6379)) {
try (Jedis jedis = jedisPool.getResource()) {
// HSET 명령어를 사용하여 해시에 필드와 값을 저장
jedis.hset("users:2:info", "name", "greg2");
// 해시에 여러 필드와 값을 저장할 수 있는 HashMap 준비
var userInfo = new HashMap<String, String>();
userInfo.put("email", "greg3@fastcampus.co.kr");
userInfo.put("phone", "010-XXXX-YYYY");
// HSET을 사용하여 여러 필드와 값을 저장
jedis.hset("users:2:info", userInfo);
// HDEL 명령어로 특정 필드를 삭제
jedis.hdel("users:2:info", "phone");
// HGET 명령어로 특정 필드 값 조회
System.out.println(jedis.hget("users:2:info", "email"));
// HGETALL 명령어로 해시의 모든 필드-값 쌍 조회
Map<String, String> user2Info = jedis.hgetAll("users:2:info");
user2Info.forEach((k, v) -> System.out.printf("%s %s%n", k, v));
// HINCRBY 명령어로 필드의 값을 증가
jedis.hincrBy("users:2:info", "visits", 30);
}
}
}
코드 설명
1. JedisPool과 Jedis 객체 생성
try (var jedisPool = new JedisPool("127.0.0.1", 6379)) {
try (Jedis jedis = jedisPool.getResource()) {
// Redis 명령어 수행
}
}
- 설명:
JedisPool
은 Redis 서버와 연결할 수 있는 커넥션 풀을 생성하는 객체입니다.getResource()
를 호출하여Jedis
객체를 가져와 Redis 명령어를 수행합니다. - 사용 목적:
JedisPool
을 사용하면 다수의 클라이언트가 효율적으로 Redis 서버와 연결을 공유할 수 있습니다.
2. HSET 명령어로 해시에 값 저장
jedis.hset("users:2:info", "name", "greg2");
- 설명:
jedis.hset
은 Redis의 해시 자료구조에 특정 필드-값 쌍을 저장하는 메서드입니다. - 사용 목적:
"users:2:info"
라는 해시에"name"
필드에"greg2"
값을 저장합니다.
3. 여러 필드와 값을 한 번에 저장하기 위한 HashMap 사용
var userInfo = new HashMap<String, String>();
userInfo.put("email", "greg3@fastcampus.co.kr");
userInfo.put("phone", "010-XXXX-YYYY");
jedis.hset("users:2:info", userInfo);
- 설명: 자바의
HashMap
을 사용하여 여러 필드와 값을 저장합니다. 이후jedis.hset
메서드를 통해userInfo
에 저장된 필드-값 쌍을 Redis의 해시에 저장합니다. - 사용 목적: 한 번에 여러 개의 필드-값을 저장하기 위해
HashMap
을 사용했습니다.
4. HDEL 명령어로 해시에서 특정 필드 삭제
jedis.hdel("users:2:info", "phone");
- 설명:
jedis.hdel
은 Redis의 해시에서 특정 필드를 삭제하는 메서드입니다. - 사용 목적:
"users:2:info"
해시에서"phone"
필드를 삭제합니다.
5. HGET 명령어로 특정 필드 값 조회
System.out.println(jedis.hget("users:2:info", "email"));
- 설명:
jedis.hget
은 Redis 해시에서 특정 필드의 값을 가져옵니다. - 사용 목적:
"users:2:info"
해시에서"email"
필드의 값을 조회하고 출력합니다.
6. HGETALL 명령어로 해시의 모든 필드-값 쌍 조회
Map<String, String> user2Info = jedis.hgetAll("users:2:info");
user2Info.forEach((k, v) -> System.out.printf("%s %s%n", k, v));
- 설명:
jedis.hgetAll
은 Redis 해시의 모든 필드-값 쌍을 조회하는 메서드입니다. - 사용 목적:
"users:2:info"
해시의 모든 필드-값 쌍을 가져와 출력합니다.
7. HINCRBY 명령어로 필드의 값을 증가
jedis.hincrBy("users:2:info", "visits", 30);
- 설명:
jedis.hincrBy
는 Redis 해시에서 숫자 값 필드를 지정된 값만큼 증가시키는 메서드입니다. - 사용 목적:
"users:2:info"
해시의"visits"
필드를 30만큼 증가시킵니다."visits"
필드가 없다면 자동으로 생성되고 값이 30으로 설정됩니다.
요약:
- 이 코드는 Redis 해시 자료구조를 사용하여 사용자 정보를 저장하고 관리하는 예제입니다.
- Jedis를 사용하여 Redis와의 통신을 관리하며, HSET, HGET, HDEL, HINCRBY 등의 명령어를 통해 해시에 값을 저장하고 조회, 삭제 및 필드 값 증가 작업을 수행합니다.
'DB > Redis' 카테고리의 다른 글
Redis Geospatial 실습: 좌표 기반 데이터 처리 (0) | 2024.09.11 |
---|---|
Redis Sorted Set 실습: 정렬된 데이터를 효율적으로 처리하기 (0) | 2024.09.11 |
Redis Set 실습: 집합 연산과 활용법 (0) | 2024.09.11 |
Redis 문자열 실습: 기본 데이터 타입 다루기 (1) | 2024.09.11 |
Redis 데이터타입 정리: 문자열부터 복합 데이터까지 (0) | 2024.09.11 |