루나의 TIL 기술 블로그

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}"""