Redis 사용 예시
27 Jul 2022 | backend db redis목적
레디스에 키밸류 형태로 데이터를 저장하면 메모리에 올라가서 디비에서 매번 쿼리 실행을 통해서 가져오는 것보다 더 빠르게 데이터를 가져올 수 있다. 특히 변하지 않는 값을 가져오려고 할 때 사용한다.
기본 명령어
redis-cli -h 12.345.678.99 -p 6379
앱의 실행파일이 있는 위치에서 ip주소와 포트번호를 입력한다.
select 2 # db번호
keys * # 2번 db에 들어있는 키를 모두 보여준다
set notice 24926 #키, 밸류 설정, 주어진 키에 하나의 값만 저장
"OK"
get notice #키로 밸류값 찾기
"24926"
SET anotherkey "will expire in a minute" EX 60 #1분 뒤 삭제되도록 설정
"OK"
잘 정리되어있는 블로그 : https://sjh836.tistory.com/178
사용 예시
특정 게시글을 블락하고 싶을 때
class RedisConfig:
config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'config.ini')
config = configparser.ConfigParser()
config.read(config_path)
server_name = config['DEFAULT']['SERVER_NAME']
redis_intra = connect_redis_user(server_name)
redis_info = config[redis_intra]
REDIS_INFO = {
'block_board': {
"host": redis_info['host'], "port": redis_info['port'], "db": 12 # 차단 게시글
}
}
from configuration import redis_block_board
block_boards = redis_block_board.keys("*")
if block_boards:
block_boards_list = str(block_boards).strip('[,]')
for block_board in block_boards:
read_sql = f""" select user_seq from db_community.tb_board where board_seq = {block_board}"""
cursor.execute(read_sql)
row = cursor.fetchone()
if user_seq != row['user_seq']:
sql += f""" and b.board_seq != {block_board}"""