IT 개발 관련/데이터 처리 및 DBMS

Python을 사용하여 Redis hash 데이터 추가하기

vegab0nd 2025. 2. 7. 14:32
반응형

Hash

Hash는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑해주는 알고리즘이다.
이 알고리즘이 적용된 함수는 치역 즉, 출력값의 범위가 정해져있으며, 아무리 큰 숫자, 긴 데이터를 넣는다고 하더라도 정해진 범위 내의 값을 출력한다.

Hash 알고리즘의 특성상 입력의 범위(정의역)보다 출력값의 범위(치역)가 작기 때문에, 서로 다른 입력 값에도 동일한 값이 출력되는 경우도 존재할 수 밖에 없으며, 이러한 경우를 충돌한다고 한다.

 

Hash table (= Hash Map)

Hash 알고리즘을 사용하는 자료구조로, 데이터(대개 키-값 구조)를 저장함에 있어 Key를 입력하면 출력 hash 값을 Index(색인)로 사용하는 table 및 map이라고 할 수 있다.
데이터를 저장하는 자료구조로서 빠른 검색, 빠른 삽입이 가능한 장점이 있다.

물론 위에서 언급한 충돌 현상이 발생하여 같은 index가 만들어질 수 있는데, 
이 경우에 데이터를 조회하는 등에 있어서 문제가 생길 듯 하지만 여러가지 해결 방법들이 있으며,
대표적으로 Linked List 자료구조 형태로 같은 인덱스에 데이터가 관리되어 충돌이 일어나면 다음 link로 이동하는 형식으로 시스템이 구성되어 있다.

HashMap의 형태

 

Python 모듈을 사용해 Redis hashmap에 데이터 추가하기

# -*- coding: utf-8 -*-
import redis

testrd = redis.StrictRedis(host='localhost', port=1111, db=2, password='asdfasdf')

rd.hset("FRUIT:RED_APPLE", mapping={

	'skin':'red',
	'pulp':'soursweet',
	'seed':'smallmany'

	}
)

# testrd 네이밍의 Redis 서버와의 연결 변수 생성
# hset을 사용해 hash table에 mapping

위와 같이 python으로 작성된 파일을 생성하고,
python 모듈을 사용할 수 있는 CLI 환경에서 python testapple.py와 같이 명령어를 입력하여, Redis 서버와의 연결을 구축하여 hashmap 자료구조에 데이터를 추가 매핑할 수 있다.

이 방식의 장점은 키-값 데이터 pair들이 무수히 많아질 수록, 또는 추가해야할 데이터 셋이 많아질 수록 일일이 데이터를 입력하여 추가하기에는 매우 번거로워질 것이며, Redis 서버의 백업 및 재부팅 등의 기작이 일어나면, 수동으로 입력한 데이터가 없어지기에 다시 재입력을 해야하는 경우에 매우 곤란해진다.
따라서 이렇게 파이썬 스크립트 파일로 관리하는 것에 큰 장점이 있다.

hset 이외에 데이터를 가져오는 hget이라던가, 사용자 추가 등의 다른 기능들을 활용하고 싶으면,
Redis 공식 홈페이지의 python document를 참고하도록 하자. (~/docs/latest/develop/connect/clients/python)