Filter, script와 분산 primitive
최신 안정판 Bluetape4k 1.11.0 릴리스 기준
확률 자료구조를 정확히 읽는다
섹션 제목: “확률 자료구조를 정확히 읽는다”Bloom filter의 contains=false는 확실한 부재지만 true는 false positive일 수 있습니다. Cuckoo filter는 삭제를 지원하지만 제한된 bucket에서 insert가 실패할 수 있습니다. 서로 다른 option으로 이미 만든 filter를 다시 초기화하면 예외가 납니다.
val filter = LettuceBloomFilter( connection, "blocked-email", BloomFilterOptions(expectedInsertions = 100_000, falseProbability = 0.01),)filter.tryInit()filter.add("spam@example.com")HyperLogLog는 정확한 set 크기가 아니라 근사 cardinality를 제공합니다. 과금이나 quota처럼 정확성이 필요한 판단에는 쓰지 않습니다.
Lua script의 fallback
섹션 제목: “Lua script의 fallback”RedisScript는 source의 SHA1을 미리 계산합니다. RedisScriptRunner는 sync, async, suspend 모두 EVALSHA를 먼저 실행하고 Redis가 NOSCRIPT를 반환할 때 원문 EVAL로 재시도합니다. 다른 script 오류는 fallback으로 숨기지 않습니다.
AtomicLong, semaphore, lock은 Redis 명령과 Lua script를 조합합니다. lock과 permit은 try/finally에서 반환하고, network 분할이 있는 업무 원자성을 단순 mutex와 동일하게 보지 않습니다.
Source와 tests
섹션 제목: “Source와 tests”다음은 운영과 생태계 경로입니다.