본문 바로가기
Redis

[Redis] 데이터 타입 Lists

by 신입같은 3년차 2018. 10. 18.

( 출처  http://bcho.tistory.com/654 , http://wiki.pchero21.com/wiki/Redis )


Lists

list는 string들의 집합으로 저장되는 데이타 형태는 set과 유사하지만, 일종의 양방향 Linked List라고 생각하면 된다. List 앞과 뒤에서 PUSH/POP 연산을 이용해서 데이타를 넣거나 뺄 수 있고, 지정된 INDEX 값을 이용하여 지정된 위치에 데이타를 넣거나 뺄 수 있다. 또한 새로운 요소를 list의 head or tail에 삽입이 가능하다

한 key 에 넣을 수 있는 요소의 최대 개수는 4,294,967,295 개이다.

 

Redis Lists 사용 관련 document  https://redis.io/commands/#list



Lists

  • LPUSH - 키에 저장된 목록의 맨 좌측에 지정된 값을 모두 삽입한다. 기존에 키가 없었다면 빈 목록으로 생성된 후 작업이 수행된다.
  • RPUSH - 키에 저장된 목록의 맨 우측에 지정된 값을 모두 삽입한다 . 기존에 키가 없었다면 빈 목록으로 생된 후 작업이 수행된다. 
  • LPUSHX - 키가 이미 있고 목록이 있는 경우에만 키에 저장된 목록의 맨 좌측에 값을 삽입한다. ( 처음부터 사용할 수 없음 )
  • RPUSHX - 키가 이미 있고 목록이 있는 경우에만 키에 저장된 목록의 맨 우측에 값을 삽입한다. ( 처음부터 사용할 수 없음 )
  • LPOP - 맨 좌측에 있는 요소를 제거후 제거한 값을 리턴해준다.
  • RPOP - 맨 우측에 있는 요소를 제거후 제거한 값을 리턴해준다.
  • LLEN - 키에 저장된 list의 길이를 반환 , 키가 없으면 빈목록으로 인식하고 0을 반환 , 만약 키가 list가 아니라면 오류를 반환
  • LREM - 키에 저장된 목록중에서 값과 동일한 요소들을 삭제하는데 count가 0보다 작다면 우측부터 , 크다면 좌측부터 , 같다면 모든 값들을 삭제한다.
  • LSET - 해당 index에 대한 값을 입력받은 값으로 변경한다.
  • LRANGE - list에 담고있는 요소들의 값들을 startIndex,  endIndex를 통해 목록을 보여준다.
  • RPOPLPUSH - RPOP 후 LPUSH를한다. return은 POP해서 PUSH로 넣은 요소를 출력한다.


# LPUSH를 통한 list 생성
127.0.0.1:6379> LPUSH myList "a"
(integer) 1
127.0.0.1:6379> LRANGE myList 0 -1
1) "a"

# LPUSH , RPUSH를 통한 요소 삽입 결과.
127.0.0.1:6379> LPUSH myList "b"
(integer) 2
127.0.0.1:6379> RPUSH myList "c"
(integer) 3
127.0.0.1:6379> LRANGE myList 0 -1
1) "b"
2) "a"
3) "c"

# LPUSHX , RPUSHX 사용 예
# key가 없는곳에 추가할려고 하는 경우 0을 반환.
127.0.0.1:6379> LPUSHX myList2 "a"
(integer) 0
127.0.0.1:6379> LPUSH myList "d"
(integer) 4


# 기존에 있던 myList요소들은 [ d , b , a , c ] 순으로 되어있음.
# LPOP , RPOP을 통해 맨 좌 우측 요소 한개씩 제거 
127.0.0.1:6379> LPOP myList
"d"
127.0.0.1:6379> RPOP myList
"c"
127.0.0.1:6379> LRANGE myList 0 -1
1) "b"
2) "a"

# 현재 List의 요소 길이를 출력.
127.0.0.1:6379> LLEN myList
(integer) 2

# LREM을 통핸 해당 요소 삭제 , count를 0 으로 해서 요소중에 "a"랑 매칭되는 값을 삭제
127.0.0.1:6379> LREM myList 0 "a"
(integer) 1
127.0.0.1:6379> LRANGE myList 0 -1
1) "b"

# 해당 key에 해당되는 index값을 입력받은 값을 수정.
# 현재 b로 남아있던 요소값을 z로 변경
127.0.0.1:6379> LSET myList 0 "z"
OK
127.0.0.1:6379> LRANGE myList 0 -1
1) "z"

# RPOPLPUSH 
127.0.0.1:6379> RPOPLPUSH myList hello
"z"
127.0.0.1:6379> LRANGE hello 0 -1
1) "z"



반응형

'Redis' 카테고리의 다른 글

[Redis] 데이터 타입 Sets  (0) 2018.10.18
[Redis] 데이터 타입 String  (0) 2018.10.18

댓글