파이썬(python)2025. 11. 26. 22:53

우선 redis에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기에

파이썬에서 redis에 데이터를 저장하거나 저장된 데이터를 조회할 수 있다. 먼저 redis 모듈을 설치하자.

pip3 install redis

데비안/우분투 계열 리눅스일 경우 python3-redis 패키지를 설치하면 된다.

sudo apt update

sudo apt install python3-redis

기본적인 사용 방법은 그리 어렵지 않다. 아래의 예시를 보자.

 

import redis

# redis 서버와 연결
r = redis.Redis()

# 'msg' 키(key)에 값 'hello world' 저장 - set()
r.set('msg', 'hello world')

# 'msg' 키에 저장된 값을 조회하여 x_byte에 할당 - get()
x_byte = r.get('msg')

# 문자열(string) 형식으로 변환
x_str = x_byte.decode('utf-8')

# 출력
print(x_str)

# 'msg' 키의 데이터 삭제
r.delete('msg')

 

Redis 객체의 set()과 get()을 이용하여 데이터를 저장하고 조회할 수 있다. 저장된 데이터를 가져오면 바이트(byte) 형식이므로 decode() 함수를 이용해서 파이썬 문자열로 변환해 주었다.

Redis 객체를 선언할 때 옵션을 추가해서 데이터를 조회할 때 자동으로 문자열로 변환할 수도 있다. 아래의 예시처럼 decode_responses 옵션을 지정하면 된다.

 

r = redis.Redis(decode_responses=True)

r.set('msg', 'hello world')

x_str = r.get('msg')

print(x_str)

 

데이터의 유효기간을 지정할 수도 있다. 유효기간이 지나면 데이터는 자동으로 삭제된다.

 

# 'msg' 키의 데이터 유효기간 설정(500초)
r.expire('msg', 500)

# 'msg2' 키에 저장하면서 유효기간 지정(1500초)
r.set('msg2', 'Hello World!', ex=1500)

 

특정 키(key)가 존재하는지 여부를 확인하려면 아래와 같이 할 수 있겠다.

 

# 'msg' 키가 존재하는지 확인
if r.exists('msg'):
    print('msg 키가 있습니다.')
else:
    print('msg 키가 없습니다.')

 

기본으로 사용하는 데이터베이스 번호는 0번이다(redis 데이터베이스 번호에 대한 내용은 이전 게시물을 참고하자. 여기에). 다른 번호의 데이터베이스를 사용하려면 db를 지정하고, 원격에 있는 redis 서버에 연결할 경우엔 host, port 등을 지정할 수 있다. 아래의 예시를 보자.

 

# localhost, 포트 6379, 1번 데이터베이스에 연결
r = redis.Redis(host='localhost', port=6379, db=1, decode_responses=True)

 

그 외에도 다양한 기능이 있다. 사용 설명서는 아래의 링크다.

redis-py 7.0.1 documentation

728x90
Posted by 반달가면
일기_잡담2025. 11. 24. 18:10


한동안 공기 상태가 나쁘지 않았던 것 같은데, 오늘 미세먼지가 엄청나게 심해졌다. 날이 좀 안 춥다 싶으면 편서풍을 타고 중국발 미세먼지가 흘러오는 듯.

여기서도 이렇게 답답한데 중국에서는 대체 어떻게 생활을 하는지 모르겠다. 미세먼지/초미세먼지는 단순히 불편한 것으로 끝이 아니라 사실상 사람 수명을 단축시키는 심각한 오염원인데, 지리적으로 중국과 가까우니 이런 피해를 당할 수밖에 없다.

코로나19 사태 이전에 미세먼지 문제가 지금보다 훨씬 더 심각했던 때가 있었는데, 어떻게 될 지 모르겠지만 일단 11월만 봐서는 그 때보다는 그래도 조금 나아진 것 같기는 하다.

공기 품질을 위해서라도 중국산 제품은 최대한 구매를 자제해야겠다는 생각이 더 많이 든다. 중국 공장/화력발전소 굴뚝에서는 미세먼지를 뿜어내고 이렇게 만들어진 제품들은 - 제대로 된 안전기준이 없는 것인지 - 유해물질 범벅이라면, 그냥 제품을 최대한 안 사는 것이 답인듯.


728x90
Posted by 반달가면
파이썬(python)2025. 11. 23. 10:01

 

파이썬(python)에서 md5, sha256 등 해시(hash)값을 계산하는 방법이다. hashlib 모듈을 사용하면 되고, 예시를 보면 금방 알 수 있다. 아래의 예시는 my_file.tar.gz 파일의 md5와 sha256 해시값을 계산하는 경우다. 

 

import hashlib

# sha256 해시 계산
f = open('my_file.tar.gz', 'rb')
h_sha256 = hashlib.new('sha256')
h_sha256.update(f.read())
print('sha256:', h_sha256.hexdigest())

# md5 해시 계산 
f = open('my_file.tar.gz', 'rb')
h_md5 = hashlib.new('md5')
h_md5.update(f.read())
print('md5:', h_md5.hexdigest())

 

md5, sha256 외에도 sha512, sha3_256, sha3_512 등 다양한 해시 알고리즘을 지원한다. 

만약 파일 크기가 너무 커서 버퍼를 이용해서 메모리를 절약하고 싶다면 아래와 같이 할 수도 있다. 아래의 예시는 버퍼 크기를 640kB로 지정해서 이 단위로 파일을 읽으면서 해시값을 계산하는 경우다. 

 

import hashlib

buffer_size = 65536 * 10

f = open('my_file.tar.gz', 'rb')

hb_md5 = hashlib.new('md5')
hb_sha256 = hashlib.new('sha256')

while True:
    data = f.read(buffer_size)
    if not data:
        break
    hb_md5.update(data)
    hb_sha256.update(data)

print('sha256:', hb_sha256.hexdigest())
print('md5:', hb_md5.hexdigest())
728x90
Posted by 반달가면
리눅스2025. 11. 19. 08:30

데비안/우분투 계열 리눅스에서 MySQL 데이터베이스 파일 위치를 변경하는 방법이다. mysql-server 패키지를 설치하면 데이터베이스 파일 위치 기본값은 /var/lib/mysql 디렉토리이다. 이것을 다른 디렉토리로 변경할 수 있다. 예를 들어 /new_dir/mysql 디렉토리로 변경한다면 mysql 서비스를 중단하고 기존 데이터베이스 파일을 새로운 디렉토리로 복사한다.

# MySQL 서비스 중단
sudo systemctl stop mysql
# 중단 여부 확인
systemctl status mysql

mkdir /new_dir/
# 데이터베이스 파일 복사, -p 옵션으로 퍼미션 설정 유지
sudo cp -rp /var/lib/msql /new_dir/

이제 MySQL 설정 파일을 편집한다.

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

아래와 같이 datadir 설정을 추가하고 저장.

datadir = /new_dir/mysql

이제 MySQL 서비스를 시작한다.

sudo systemctl start mysql

 

참고로, 사용하려는 파일 시스템이 기본 리눅스 파일 시스템인 ext4이면 문제가 없으나 exfat, ntfs 등 외장 USB 메모리나 윈도우 디스크 파티션에서 사용하는 파일 시스템일 경우에는 제대로 동작하지 않는 것 같다.

728x90
Posted by 반달가면