flask로 백엔드를 개발하는데, 각 api마다 공유할 딕셔너리와 변수가 있다.
해결 방법이 생각이 안나 전역변수로 코딩을 하기 시작했다.
하지만 양심의 가책... 이러면 안된다는 생각이 끊이질 않았고, 해결 방법을 찾아봤다.
그러다 발견한 redis
공식 문서
https://www.tutorialspoint.com/redis/redis_hashes.htm
redis가 뭐냐?
https://www.youtube.com/watch?v=Gimv7hroM8A ☜ 개념 설명 잘 되어 있다.
in-memory data structure store
cache 개념(결과를 저장했다가 나중에 빠르게 사용하는 것)
"데이터베이스보다 더 빠른 메모리에/ 더 자주 접근하고 덜 자주 바뀌는 데이터를 저장하자"
redis의 자료 구조? 데이터 타입
이거 말고 좀 더 있는 것 같은데 잘 모르겠다ㅎ.ㅎ
- set
- list
- string
- hash https://realmojo.tistory.com/172
redis에서 hash 데이터 타입은 key - field - value 와 같이 이루어져있다.
따라서 key : {
field1 : value1,
field2 : value2,
}
이렇게 이루어져 있는 것이다.
flask와 redis의 연동
파이썬 라이브러리는 이걸 사용한다. https://pypi.org/project/flask-redis/
따로 PC에 설치도 해야 한다. 윈도우에 redis를 설치하는 방법은 https://gofnrk.tistory.com/35 여기 나와있다.
flask-redis 라이브러리에 보면 password를 적어야하는 부분이 있다.
그 방법은 https://oingdaddy.tistory.com/242 여깅
redis-cli.exe 명령어
변수
.
.
auth [비밀번호]
ping : PONG이 오면 정상 동작
select 0 : 0번 데이터베이스(같은 개념) 선택
keys * : 모든 key 출력
get n : string으로 저장한 변수 출력
set n 1 : n에 string 1 저장
hgetall agent_ip_list(key 입력) : field , value 모두 출력
hget agent_ip_list : 하면 출력 안됨. 아마 agent_ip_list가 field-value로 이루어져있기 때문에 안되는 듯. 만약 value를 출력하고 싶다면
hget agent_ip_list field 해야 함. value만 출력할 수 있다.
참조
https://sabarada.tistory.com/135?category=856943
https://www.joinc.co.kr/w/man/12/REDIS/DataModeling
list type 명령어
https://blog.geunho.dev/til/redis/ops/
https://realmojo.tistory.com/169
set type 명령어
https://zzdd1558.tistory.com/222
'개발' 카테고리의 다른 글
동기 비동기/ blocking nonblocking 개념 (0) | 2021.07.29 |
---|---|
[python] socket과 multi-thread (0) | 2021.07.28 |
[Flask-3]ORM 라이브러리 이용해 DB 연동 (0) | 2021.07.13 |
[Flask-2]개발 시작하기 - 애플리케이션 팩토리, 블루프린트 (0) | 2021.07.13 |
[Flask-1]개발 환경 setting (0) | 2021.07.13 |
댓글