<commit_before># Chapter 5. LIST 명령

List collection에 관한 명령은 아래와 같다.

- [List collection 생성: lop create](ch05-command-list-collection.md#lop-create-list-collection-생성)
- List collection 삭제: delete (기존 key-value item의 삭제 명령을 그대로 사용)

List element에 관한 명령은 아래와 같다.

- [List element 삽입: lop insert](ch05-command-list-collection.md#lop-insert-list-element-삽입)
- [List element 삭제: lop delete](ch05-command-list-collection.md#lop-delete-list-element-삭제)
- [List element 조회: lop get](ch05-command-list-collection.md#lop-get-list-element-조회)

### lop create (List Collection 생성)

List collection을 empty 상태로 생성한다.

```
lop create <key> <attributes> [noreply]\r\n
* attributes: <flags> <exptime> <maxcount> [<ovflaction>] [unreadable]
```

- \<key\> - 대상 item의 key string
- \<attributes\> - 설정할 item attributes. [Item Attribute 설명](ch03-item-attributes.md)을 참조 바란다.
- noreply - 명시하면, response string을 전달받지 않는다.

Response string과 그 의미는 아래와 같다.

- "CREATED" - 성공
- "EXISTS" - 동일 key string을 가진 item이 이미 존재
- "NOT_SUPPORTED" - 지원하지 않음
- “CLIENT_ERROR bad command line format” - protocol syntax 틀림
- “SERVER_ERROR out of memory” - 메모리 부족

### lop insert (List Element 삽입)

List collection에 하나의 element를 삽입한다.
List collection을 생성하면서 하나의 element를 삽입할 수도 있다.

```
lop insert <key> <index> <bytes> [create <attributes>] [noreply|pipe]\r\n<data>\r\n
* attributes: <flags> <exptime> <maxcount> [<ovflaction>] [unreadable]
```

- \<key\> - 대상 item의 key string
- \<index\> - 삽입 위치를 0-based index로 지정.
  - 0, 1, 2, ... : list의 앞에서 시작하여 각 element 위치를 나타냄
  - -1, -2, -3, ... : list의 뒤에서 시작하여 각 element 위치를 나타냄
- \<bytes\> - 삽입할 데이터 길이 (trailing 문자인 "\r\n"을 제외한 길이)
- create \<attributes\> - list collection 없을 시에 list 생성 요청.
                    [Item Attribute 설명](ch03-item-attributes.md)을 참조 바란다.
- noreply or pipe - 명시하면, response string을 전달받지 않는다. 
                    pipe 사용은 [Command Pipelining](ch09-command-pipelining.md)을 참조 바란다.
- \<data\> - 삽입할 데이터 (최대 4KB)
 
Response string과 그 의미는 아래와 같다.

- "STORED" - 성공 (element만 삽입)
- “CREATED_STORED” - 성공 (collection 생성하고 element 삽입)
- “NOT_FOUND” - key miss
- “TYPE_MISMATCH” - 해당 item이 list collection이 아님
- “OVERFLOWED” - overflow 발생
- “OUT_OF_RANGE” - 삽입 위치가 list의 현재 element index 범위를 넘어섬,
                   예를 들어, 10개 element가 있는 상태에서 삽입 위치가 20인 경우임
- "NOT_SUPPORTED" - 지원하지 않음
- “CLIENT_ERROR bad command line format” - protocol syntax 틀림
- “CLIENT_ERROR too large value” - 삽입할 데이터가 4KB 보다 큼
- “CLIENT_ERROR bad data chunk” - 삽입할 데이터 길이가 \<bytes\>와 다르거나 "\r\n"으로 끝나지 않음
- “SERVER_ERROR out of memory” - 메모리 부족

### lop delete (List Element 삭제)

List collection에 하나의 index 또는 index range에 해당하는 elements를 삭제한다.

```
lop delete <key> <index or "index range"> [drop] [noreply|pipe]\r\n
lop delete 명령에서 각 인자의 설명은 아래와 같다.
```<commit_msg>DOC: updated max element size in list collection.<commit_after># Chapter 5. LIST 명령

List collection에 관한 명령은 아래와 같다.

- [List collection 생성: lop create](ch05-command-list-collection.md#lop-create-list-collection-생성)
- List collection 삭제: delete (기존 key-value item의 삭제 명령을 그대로 사용)

List element에 관한 명령은 아래와 같다.

- [List element 삽입: lop insert](ch05-command-list-collection.md#lop-insert-list-element-삽입)
- [List element 삭제: lop delete](ch05-command-list-collection.md#lop-delete-list-element-삭제)
- [List element 조회: lop get](ch05-command-list-collection.md#lop-get-list-element-조회)

### lop create (List Collection 생성)

List collection을 empty 상태로 생성한다.

```
lop create <key> <attributes> [noreply]\r\n
* attributes: <flags> <exptime> <maxcount> [<ovflaction>] [unreadable]
```

- \<key\> - 대상 item의 key string
- \<attributes\> - 설정할 item attributes. [Item Attribute 설명](ch03-item-attributes.md)을 참조 바란다.
- noreply - 명시하면, response string을 전달받지 않는다.

Response string과 그 의미는 아래와 같다.

- "CREATED" - 성공
- "EXISTS" - 동일 key string을 가진 item이 이미 존재
- "NOT_SUPPORTED" - 지원하지 않음
- “CLIENT_ERROR bad command line format” - protocol syntax 틀림
- “SERVER_ERROR out of memory” - 메모리 부족

### lop insert (List Element 삽입)

List collection에 하나의 element를 삽입한다.
List collection을 생성하면서 하나의 element를 삽입할 수도 있다.

```
lop insert <key> <index> <bytes> [create <attributes>] [noreply|pipe]\r\n<data>\r\n
* attributes: <flags> <exptime> <maxcount> [<ovflaction>] [unreadable]
```

- \<key\> - 대상 item의 key string
- \<index\> - 삽입 위치를 0-based index로 지정.
  - 0, 1, 2, ... : list의 앞에서 시작하여 각 element 위치를 나타냄
  - -1, -2, -3, ... : list의 뒤에서 시작하여 각 element 위치를 나타냄
- \<bytes\> - 삽입할 데이터 길이 (trailing 문자인 "\r\n"을 제외한 길이)
- create \<attributes\> - list collection 없을 시에 list 생성 요청.
                    [Item Attribute 설명](ch03-item-attributes.md)을 참조 바란다.
- noreply or pipe - 명시하면, response string을 전달받지 않는다. 
                    pipe 사용은 [Command Pipelining](ch09-command-pipelining.md)을 참조 바란다.
- \<data\> - 삽입할 데이터 (최대 크기는 [기본제약사항](ch01-arcus-basic-concept.md#기본-제약-사항)을 참고)

 
Response string과 그 의미는 아래와 같다.

- "STORED" - 성공 (element만 삽입)
- “CREATED_STORED” - 성공 (collection 생성하고 element 삽입)
- “NOT_FOUND” - key miss
- “TYPE_MISMATCH” - 해당 item이 list collection이 아님
- “OVERFLOWED” - overflow 발생
- “OUT_OF_RANGE” - 삽입 위치가 list의 현재 element index 범위를 넘어섬,
                   예를 들어, 10개 element가 있는 상태에서 삽입 위치가 20인 경우임
- "NOT_SUPPORTED" - 지원하지 않음
- “CLIENT_ERROR bad command line format” - protocol syntax 틀림
- “CLIENT_ERROR too large value” - 삽입할 데이터가 element value의 최대 크기보다 큼
- “CLIENT_ERROR bad data chunk” - 삽입할 데이터 길이가 \<bytes\>와 다르거나 "\r\n"으로 끝나지 않음
- “SERVER_ERROR out of memory” - 메모리 부족

### lop delete (List Element 삭제)

List collection에 하나의 index 또는 index range에 해당하는 elements를 삭제한다.

```
lop delete <key> <index or "index range"> [drop] [noreply|pipe]\r\n
lop delete 명령에서 각 인자의 설명은 아래와 같다.
```
{'fraction_non_alphanumeric': 0.1310748492373182, 'fraction_numerical': 0.009932600212841433, 'mean_word_length': 3.246234939759036, 'pattern_counts': {'":': 0, '<': 53, '<?xml version=': 0, '>': 53, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4210128', 'n_tokens_mistral': 2864, 'n_tokens_neox': 3224, 'n_words': 699}