2020-01-17
일단 redis가 뭔지부터 간단히 설명하면, 한마디로 "NO SQL로 된 Memory저장소"이다.
아래에 사용하는 방법을 보면 알겠지만, 단순히 key와 value값을 memory에 저장하고 그 값을 다시 가져오는 방식으로 사용 된다.
그리고 Memory에 저장되다 보니, 속도가 굉장히 빠르지만, 서버가 다운되면 데이터가 전부 날라간다.

우선 redis 윈도우용을 설치 해야 한다.
링크: https://github.com/MicrosoftArchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.msi

위 링크의 프로그램 설치시, 자동으로 서비스에 등록이 돼서 실행이 돼서 계속 돌아가게 된다.
하지만, 따로 제어를 하고 싶으면, 서비스에서 해당 항목의 "속성"의 "시작유형"에서 "자동"을 "수동"으로 바꾸고, 아래 주소로 들어가서 "redis-server.exe"를 직접 실행 시키는 방법도 있다.
C:\Program Files\Redis>redis-server.exe [20400] 17 Jan 16:51:54.970 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server.exe /path/to/redis.conf _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 20400 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' [20400] 17 Jan 16:51:54.977 # Server started, Redis version 3.2.100 [20400] 17 Jan 16:51:54.978 * DB loaded from disk: 0.001 seconds [20400] 17 Jan 16:51:54.978 * The server is now ready to accept connections on port 6379
위와같이 실행시킬 경우, cmd창을 관리자 권한으로 실행시키지 않으면 종종 오류가 나니, 반드시 "관리자 권한"으로 실행시킨 cmd창에서 실행하길 바란다.

자 다음은, python에서 redis를 사용하기 위해서, cmd창을 열고, pip install redis 로 redis 모듈을 설치한다.

이제 그럼 redis를 python에서 사용해볼 차례이다.
>>> import redis
>>>
>>> # redis-server 접속
>>> r = redis.StrictRedis(host="localhost", port=6379, charset="utf-8")
>>>
>>> # key 셋팅
>>> r.set('key', 'value')
True
>>> r.set("키이름", "값 내용")
True
>>>
>>> # 셋팅값 불러오기
>>> r.get('key')
b'value'
>>> r.get("키이름")
b'\xea\xb0\x92 \xeb\x82\xb4\xec\x9a\xa9'
>>>
>>> # 스트링 형태 및 한글 가능
>>> rr = redis.StrictRedis(host="localhost", port=6379, charset="utf-8", decode_responses=True)
>>>
>>> rr.set("키이름", "값 내용")
True
>>> rr.set('key', 'value')
True
>>> rr.get("키이름")
'값 내용'
>>> rr.get('key')
'value'
접속후에 set(), get() 함수를 이용해서 간단하게 값을 저장하고 불러올 수 있다.
다만 그냥 접속했을때는 get()으로 불러올때, 앞에 b가 적혀 있고, 한글로는 제대로 못 불러와 진다.
이럴때는 "decode_responses=True"옵션을 주어 유니코드로 저장 되게 하면 된다.
(기존에 보이던 b는 byte로 저장됐다는 의미)

>>> rr.keys() ['key', '키이름'] >>> rr.flushdb() True >>> rr.keys() []
그밖에 저장된 모든 key들을 알고 싶다면 keys()함수를 쓰면 되고, 저장된 값들을 모두 삭제하고 싶다면, flushdb(), flushall()등의 함수를 쓰면 된다.