본문으로 건너뛰기
버전: In Development

Types

aerospike-py는 반환값에 NamedTuple 클래스를, 입력 파라미터에 TypedDict 클래스를 사용합니다. 모든 타입은 최상위 패키지 또는 aerospike_py.types에서 import할 수 있습니다.

from aerospike_py import Record, ExistsResult, ReadPolicy, WritePolicy, WriteMeta
# 또는
from aerospike_py.types import Record, ExistsResult, ReadPolicy, WritePolicy, WriteMeta

반환 타입 (NamedTuple)

NamedTuple 반환 타입은 속성 접근과 튜플 언패킹을 모두 지원합니다 (하위 호환성).

Record

읽기 및 operate 메서드가 반환하는 전체 레코드입니다.

필드타입설명
keyAerospikeKey | None레코드 키 (POLICY_KEY_DIGEST이면 None)
metaRecordMetadata | None레코드 메타데이터
binsdict[str, Any] | None빈 이름-값 쌍

반환하는 메서드: get(), select(), operate(), batch_operate(), batch_remove(), Query.results()

record: Record = client.get(key)
print(record.meta.gen) # 속성 접근
print(record.bins) # {"name": "Alice", "age": 30}

key, meta, bins = record # 튜플 언패킹 (하위 호환)

RecordMetadata

generation과 TTL을 포함하는 레코드 메타데이터입니다.

필드타입설명
genint레코드 generation (낙관적 잠금 버전)
ttlint레코드 TTL (초 단위)
record = client.get(key)
print(record.meta.gen) # 1
print(record.meta.ttl) # 2591998

AerospikeKey

서버가 반환하는 레코드 키입니다.

필드타입설명
namespacestr네임스페이스 이름
set_namestr세트 이름
user_keystr | int | bytes | None사용자 제공 기본 키 (POLICY_KEY_DIGEST이면 None)
digestbytes20바이트 RIPEMD-160 다이제스트
record = client.get(key, policy={"key": aerospike_py.POLICY_KEY_SEND})
print(record.key.namespace) # "test"
print(record.key.set_name) # "demo"
print(record.key.user_key) # "user1"

ExistsResult

존재 여부 확인 결과입니다.

필드타입설명
keyAerospikeKey | None레코드 키
metaRecordMetadata | None메타데이터 (레코드가 없으면 None)

반환하는 메서드: exists()

result: ExistsResult = client.exists(key)
if result.meta is not None:
print(f"gen={result.meta.gen}")

_, meta = result # 튜플 언패킹

InfoNodeResult

클러스터 노드별 info 명령 결과입니다.

필드타입설명
node_namestr클러스터 노드 이름
error_codeint성공 시 0
responsestrInfo 응답 문자열

반환하는 메서드: info_all()

results: list[InfoNodeResult] = client.info_all("namespaces")
for result in results:
print(f"{result.node_name}: {result.response}")

OperateOrderedResult

operate_ordered()의 순서 보존 결과입니다.

필드타입설명
keyAerospikeKey | None레코드 키
metaRecordMetadata | None레코드 메타데이터
ordered_binslist[BinTuple]순서가 보존된 연산 결과

반환하는 메서드: operate_ordered()

result: OperateOrderedResult = client.operate_ordered(key, ops)
for bin_tuple in result.ordered_bins:
print(f"{bin_tuple.name} = {bin_tuple.value}")

BinTuple

순서 보존 결과에서 사용되는 단일 빈 이름-값 쌍입니다.

필드타입설명
namestr빈 이름
valueAny빈 값

API → 반환 타입 빠른 참조

메서드반환 타입
get()Record
select()Record
exists()ExistsResult
operate()Record
operate_ordered()OperateOrderedResult
info_all()list[InfoNodeResult]
batch_read()BatchRecords
batch_operate()list[Record]
batch_remove()list[Record]
Query.results()list[Record]

입력 타입 (TypedDict)

TypedDict 입력 타입은 policymeta 파라미터에 대한 IDE 자동완성과 타입 체크를 제공합니다. 모든 필드는 선택적(total=False)입니다.

ClientConfig

클라이언트 생성을 위한 설정 딕셔너리입니다.

사용하는 메서드: aerospike_py.client(config), AsyncClient(config)

필드타입기본값설명
hostslist[tuple[str, int]]필수클러스터 시드 노드
cluster_namestr예상 클러스터 이름
auth_modeintAUTH_INTERNAL인증 모드 (AUTH_INTERNAL, AUTH_EXTERNAL, AUTH_PKI)
userstr인증 사용자명
passwordstr인증 비밀번호
timeoutint1000연결 타임아웃 (ms)
idle_timeoutint연결 유휴 타임아웃 (ms)
max_conns_per_nodeint노드당 최대 연결 수
min_conns_per_nodeint노드당 최소 연결 수
tend_intervalint클러스터 tend 간격 (ms)
use_services_alternateboolFalse대체 서비스 주소 사용
config: ClientConfig = {
"hosts": [("127.0.0.1", 3000)],
"cluster_name": "docker",
"timeout": 5000,
}
client = aerospike_py.client(config).connect()

ReadPolicy

읽기 작업을 위한 정책입니다.

사용하는 메서드: get(), select(), exists()

필드타입기본값설명
socket_timeoutint30000소켓 유휴 타임아웃 (ms)
total_timeoutint1000전체 트랜잭션 타임아웃 (ms)
max_retriesint2최대 재시도 횟수
sleep_between_retriesint0재시도 간 대기 시간 (ms)
filter_expressionAnyExpression 필터 (deprecated, expressions 사용 권장)
expressionsAnyaerospike_py.exp로 빌드한 Expression 필터
replicaintPOLICY_REPLICA_SEQUENCE레플리카 알고리즘
read_mode_apintPOLICY_READ_MODE_AP_ONEAP 읽기 일관성 수준
policy: ReadPolicy = {
"total_timeout": 5000,
"max_retries": 3,
}
record = client.get(key, policy=policy)

WritePolicy

쓰기 작업을 위한 정책입니다.

사용하는 메서드: put(), remove(), touch(), append(), prepend(), increment(), remove_bin(), operate(), operate_ordered()

필드타입기본값설명
socket_timeoutint30000소켓 유휴 타임아웃 (ms)
total_timeoutint1000전체 트랜잭션 타임아웃 (ms)
max_retriesint0최대 재시도 횟수
durable_deleteboolFalse영구 삭제 사용 (Enterprise 전용)
keyintPOLICY_KEY_DIGEST키 전송 정책 (POLICY_KEY_DIGEST, POLICY_KEY_SEND)
existsintPOLICY_EXISTS_IGNORE존재 정책 (POLICY_EXISTS_*)
genintPOLICY_GEN_IGNOREGeneration 정책 (POLICY_GEN_IGNORE, POLICY_GEN_EQ, POLICY_GEN_GT)
commit_levelintPOLICY_COMMIT_LEVEL_ALL커밋 수준 (POLICY_COMMIT_LEVEL_ALL, POLICY_COMMIT_LEVEL_MASTER)
ttlint0레코드 TTL (초)
filter_expressionAnyExpression 필터 (deprecated, expressions 사용 권장)
expressionsAnyaerospike_py.exp로 빌드한 Expression 필터
policy: WritePolicy = {
"key": aerospike_py.POLICY_KEY_SEND,
"exists": aerospike_py.POLICY_EXISTS_CREATE_ONLY,
}
client.put(key, bins, policy=policy)

BatchPolicy

배치 작업을 위한 정책입니다.

사용하는 메서드: batch_read(), batch_operate(), batch_remove()

필드타입기본값설명
socket_timeoutint30000소켓 유휴 타임아웃 (ms)
total_timeoutint1000전체 트랜잭션 타임아웃 (ms)
max_retriesint2최대 재시도 횟수
filter_expressionAnyExpression 필터
policy: BatchPolicy = {"total_timeout": 10000}
batch = client.batch_read(keys, policy=policy)

QueryPolicy

쿼리 작업을 위한 정책입니다.

사용하는 메서드: Query.results(), Query.foreach()

필드타입기본값설명
socket_timeoutint30000소켓 유휴 타임아웃 (ms)
total_timeoutint0전체 트랜잭션 타임아웃 (0 = 제한 없음)
max_retriesint2최대 재시도 횟수
max_recordsint0최대 반환 레코드 수 (0 = 전부)
records_per_secondint0속도 제한 (0 = 무제한)
filter_expressionAnyExpression 필터 (deprecated, expressions 사용 권장)
expressionsAnyaerospike_py.exp로 빌드한 Expression 필터
policy: QueryPolicy = {"max_records": 100}
records = query.results(policy=policy)

AdminPolicy

관리 작업을 위한 정책입니다.

사용하는 메서드: admin_create_user(), admin_drop_user(), admin_change_password(), admin_grant_roles(), admin_revoke_roles(), admin_query_user_info(), admin_query_users_info(), admin_create_role(), admin_drop_role(), admin_grant_privileges(), admin_revoke_privileges(), admin_query_role(), admin_query_roles(), admin_set_whitelist(), admin_set_quotas()

필드타입기본값설명
timeoutint1000관리 작업 타임아웃 (ms)
policy: AdminPolicy = {"timeout": 5000}
client.admin_create_user("user", "pass", ["read-write"], policy=policy)

WriteMeta

쓰기 작업의 메타데이터입니다.

사용하는 메서드: put(), remove(), touch(), append(), prepend(), increment(), remove_bin(), operate(), operate_ordered()meta 파라미터로 사용

필드타입설명
genint낙관적 잠금을 위한 예상 generation (POLICY_GEN_EQ와 함께 사용)
ttlint레코드 TTL (초 단위)
# TTL 설정
meta: WriteMeta = {"ttl": 300}
client.put(key, bins, meta=meta)

# 낙관적 잠금
record = client.get(key)
meta: WriteMeta = {"gen": record.meta.gen}
client.put(key, new_bins, meta=meta, policy={"gen": aerospike_py.POLICY_GEN_EQ})

Privilege

관리자 역할 관리를 위한 권한 정의입니다.

사용하는 메서드: admin_create_role(), admin_grant_privileges(), admin_revoke_privileges()

필드타입설명
codeint권한 코드 (PRIV_READ, PRIV_WRITE, PRIV_READ_WRITE 등)
nsstr네임스페이스 범위 (빈 문자열이면 글로벌)
setstr세트 범위 (빈 문자열이면 네임스페이스 전체)
privilege: Privilege = {
"code": aerospike_py.PRIV_READ_WRITE,
"ns": "test",
"set": "demo",
}
client.admin_create_role("custom_role", [privilege])

UserInfo

관리자 쿼리가 반환하는 사용자 정보입니다.

반환하는 메서드: admin_query_user_info(), admin_query_users_info()

필드타입설명
userstr사용자명
roleslist[str]할당된 역할 이름
conns_in_useint활성 연결 수

RoleInfo

관리자 쿼리가 반환하는 역할 정보입니다.

반환하는 메서드: admin_query_role(), admin_query_roles()

필드타입설명
namestr역할 이름
privilegeslist[Privilege]할당된 권한
allowlistlist[str]IP 허용 목록
read_quotaint읽기 쿼터
write_quotaint쓰기 쿼터