[t:/]$ 지식_

nginx, lua, redis 다 까먹었다

2021/02/01

lua에서 redis 사용하는 법

https://github.com/openresty/lua-resty-redis

파이프를 쓸 때 커밋하면 항상 init를 새로 해줘야 한다.

python에서 redis 쓰는 법은 딱 좋은 튜토리얼이 마땅치가 않아서 help(redis)를 참조한다.

python에서 get한 값은 바이트 형태인데 파이썬은 byte와 문자열을 엄격히 구분한다. 현대의 언어들은 유니코드들의 메타를 포함한 처리를 하는 경향이 있어 문자열은 바이트가 아니다. 아래와 같이 접속하면 편리하다.

rd = redis.StrictRedis(host.... decode_response=True)

엔터프라이즈 버전이 아닌 redis는 hset 스타일의 해시 데이터형에 TTL을 줄 수 없다. 그냥 코드로 꼼수로 처리한다.

mset은 TTL을 줄 수 없다. expire를 따로 처리해야 한다. 파이프 set으로 대체하면 된다.

OS와 시스템의 원리에 대해서 알면 당연히 파이프로 처리한다. 파이프로 처리하면 레디스 get, set 수에 따른 레디스 부하를 그다지 걱정할 필요가 없다.

mget을 이용할 때에는 키값을 밸류에도 다시 넣어주는 것이 편하다. mget의 덩어리에는 값을 못 찾은 nil 들이 존재하고 리턴 배열에는 키가 없고 배열의 인덱스만 있다. 언어에 따라서 배열 인덱스로 쉽게 찾을 수도 있으나 그냥 밸류에 키값을 도로 넣어주는 것이 편하다. 나는 이걸 나중에 알았다. 고치기 귀찮다.

lua의 배열(=테이블) 인덱스는 1부터 시작한다. 오랫만에 lua 다 까먹었다...

lua, nginx 를 병행해서 사용하다보면 nil과 ngx.null 이 공존한다.









[t:/] is not "technology - root". dawnsea, rss