본문 바로가기
Programming/Redis, Kafka

레디스redis 자료구조 예시 코드 (Geospatial 이용 거리 찾기 예제 포함)

by Renechoi 2023. 5. 29.

우선 docker에서 실행중인 redis를 컨테이너에 접속하여 실행한다. 

 

docker exec -it 0dda0724c460 redis-cli --raw

 

 

1. String 자료 구죠 (key-value)

 

set id 10

get id 

del id

 

 

 

 

 

2. Hash 자료 구조 (key-subKey-value)

 

hgetall USER //key(USER)와 매핑되는 모든 필드와 값들을 조회 
hset USER subkey value // key의 subkey의 값을 지정 
hget USER subkey // 조회

 

 

 

 

 

3. 리스트 (List)

 

 

# 리스트에 값 추가
RPUSH mylist "apple"
RPUSH mylist "banana"
RPUSH mylist "cherry"

# 리스트에서 값 조회
LRANGE mylist 0 -1

# 리스트에서 값 제거
LREM mylist 0 "banana"

 

 

4. 셋 (Set) 

 

# 셋에 값 추가
SADD myset "apple"
SADD myset "banana"
SADD myset "cherry"

# 셋에 있는 값 조회
SMEMBERS myset

# 셋에서 값 제거
SREM myset "banana"

 

 

 

5. 정렬 셋 (Sorted Set)

# 정렬된 집합에 값 추가
ZADD myzset 1 "apple"
ZADD myzset 2 "banana"
ZADD myzset 3 "cherry"

# 정렬된 집합에서 값 조회
ZRANGE myzset 0 -1

# 정렬된 집합에서 값 제거
ZREM myzset "banana"

 

 

6. Hash 

 

# 해시에 필드와 값 추가
HSET myhash field1 "value1"
HSET myhash field2 "value2"
HSET myhash field3 "value3"

# 해시에서 필드 값 조회
HGET myhash field2

# 모든 필드와 값을 조회
HGETALL myhash

# 해시에서 필드 제거
HDEL myhash field3

 

7. 비트맵 bitmap

 

# 비트맵에 비트 설정
SETBIT mybitmap 0 1
SETBIT mybitmap 2 1
SETBIT mybitmap 5 1

# 비트맵에서 비트 조회
GETBIT mybitmap 2

# 비트맵의 비트 개수 세기
BITCOUNT mybitmap

 

 

8. Geospatial 

 

# 지리 좌표 추가
GEOADD mylocation 126.9780 37.5665 "Seoul"
GEOADD mylocation 139.6917 35.6895 "Tokyo"
GEOADD mylocation -122.4194 37.7749 "San Francisco"

# 지리 좌표 조회
GEOPOS mylocation "Seoul"

# 위치 기반 검색
GEORADIUS mylocation 127 37 100 km

 

// geopoints1 자료구조에 pharmacy1,2 각각 경도, 위도 추가 
geoadd geopoints1 127.0817 37.5505 pharmacy1
geoadd geopoints2 127.0766 37.541 pharmacy2 


// 두 지역의 거리를 리턴(단위 km)
geodist geopoints1 pharmacy1 pharmacy2 km

 

geoadd geopoints2 127.0569046 37.61040424 pharmacy1
geoadd geopoints2 127.029052 37.60894036 pharmacy2 
geoadd geopoints2 127.236707811313 37.3825107393401 pharmacy3 

// geoponts2 이름의 자료구조에서 주어진 위도, 경도 기준으로 반경 10km 이내에 가까운 약국 찾기 
georadius geopoints2 127.037033003036 37.596065045809 10 km withdist withcoord asc count 3

 

반응형