redis
-
Improving key expiration in Redis를 읽고개발하면서/타인글보면서 2019. 4. 21. 14:04
https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/improving-key-expiration-in-redis.html Improving Key Expiration in Redis After updating to a new Redis version the Cache team saw a regression. This goes over the investigation and our conclusions. blog.twitter.com 얼마 전 Twitter 블로그에 Redis expire 기능을 개선했다는 글이 올라와 주말 동안 읽고 정리하고자 합니다. 블로그 요약(?)만 하려고 했는데 3.2 activeExpireCycle 함수에 ..
-
Tapjoy에서 실시간으로 중복 제거하기개발하면서/타인글보면서 2017. 8. 2. 21:29
메시지 전송은 3가지 타입이 존재한다. at-most-once at-least-once at-exactly-once at-most-once은 유실이 있어도 괜찮을 때 사용하고 대부분 at-least-once(유실은 없지만 중복 존재)를 사용한다. 하지만 메시지 처리된 결과가 고객의 돈과 관련된 경우(금융, 광고 집행비 등) at-least-once로 메시지 전송이 이루어진다면 회사 운영에 큰 어려움이 생길 것이다. 개발자 유우머에도 있는 메시지 전송 타입 https://twitter.com/mathiasverraes/status/632260618599403520 Mathias Verraes on Twitter “There are only two hard problems in distributed syst..
-
QuickList개발하면서/코드보면서 2015. 2. 4. 22:53
2015년 1월 초에 unstable에 merge된 QuickList에 알아본다.https://matt.sh/redis-quicklist 에서 나온 얘기를 조금 하고 코드를 보자 Redis에 List 자료구조는 일반적인 Linked list와 메모리를 절약을 위한 Ziplist두개가 있다.포인터를 이용하여 리스트 구현한것과 배열을 이용하여 리스트를 구현한것이라고 생각하면 쉽다. list-max-ziplist-entries 512 list-max-ziplist-value 64 (노드 갯수가 512개 이상 || 저장하려는 값의 길이가 64 byte 초과)면 Linked list로 저장이 되고(노드 갯수가 512개 미만 && 저장하려는 값의 길이가 64 byte 이하)면 ziplist로 저장이 된다.재미진건 ..
-
Key notification개발하면서/코드보면서 2013. 2. 12. 23:42
이 기능은 2013년 1월달에 unstable로 merge되었습니다. https://github.com/antirez/redis/commit/4cdbce341ebff64d392a42011f4a9258f8aa834f#src 처음 시작할때는 2.6으로 했는데 하;;; 시간을 너무 끌었네요. 뭐든지 한번할때 왕창해야겠어요. 간단하게 말하면, 이 기능의 요지는 key가 추가/수정/삭제가 되었을때 이벤트를 잡아서 client한테 알려주는것입니다 슬기로운 antirez는 redis에 있는 기능을 이용해서 간단하게 구현을 했습니다. 이 글을 보시기전에 Pub/Sub을 보시고 오시면 더 좋겠습니다. key에 대해 이벤트(추가/수정/삭제)가 발생하면, 어떤키인지, 그리고 어떤 이벤트인지 두가지로 나뉩니다. 체널명을 __..
-
Slowlog개발하면서/코드보면서 2012. 10. 4. 00:02
Slowlog는 지정한 시간이 넘어서는 command를 기록해서 나중에 관리차원에서 볼수있게 해줍니다. 설정으로 slowlog-log-slower-than, slowlog-max-len을 설정합니다. slowlog-log-slower-than는 microseconds단위로써, 지정한 시간보다 느린 command를 기록합니다. threshold같은거죠.음수로 지정하면 slowlog를 사용하지 않고, 0으로 하면 모든 command를 기록합니다.slowlog는 list 자료구조에 저장하는데, 이 List의 최대 크기를 지정하는 설정이 slowlog-max-len 입니다. (검색하면서 알았는데, MySQL Slow Query log 란게 있었네요. 이젠 소스 분석하는만큼 직접 만들어보는것도 시간을 쏟아야겠어요..
-
Bit operation개발하면서/코드보면서 2012. 10. 4. 00:02
Redis 2.6부터 Bit operation이 지원되었습니다. BITOP [NOT | AND | OR | XOR ], BITCOUNT, SETBIT, GETBIT 입니다. Bit operation에 쓰이는 자료형은 String입니다. String이 512MB가 제한입니다.그래서 bit offset 의 최대 길이는 0 ~ (512*1024*1024*8 -1 )입니다. SETBIT, GETBIT, BITCOUNT, BITOP 순으로 진행하겠습니다. 우선 SETBIT는 "SETBIT key offset bitvalue(0 | 1)" 입니다.offset이 위에서 말한 bit 범위인지, bitvalue는 맞게 들어왔는지 검사합니다. 그 후에 해당 key가 기존 DB 존재 여부를 판단하고, 없으면 String형을..