Redis 3.2.0 is out!

Salvatore Sanfilippo

Redis 3.2.0이 출시되었습니다!

예상보다 오래 걸렸지만, 드디어 Redis 3.2.0 안정 버전이 출시되었습니다. 이번 버전에는 많은 Redis 사용자에게 유용할 만한 변경 사항이 포함되어 있습니다. 지금까지 여러 차례 변경 사항을 다뤘지만, 주요 내용은 다음과 같습니다.

  • GEO API가 추가되었습니다. 위도와 경도로 원하는 대상을 인덱싱하고, 다른 Redis 자료 구조와 마찬가지로 빠르고 쉽게 반경 기준으로 조회할 수 있습니다. API 문서는 여기에서 확인할 수 있습니다: http://redis.io/commands/#geo. 초기 구현을 맡아 주신 Matt Stancliff에게 감사드립니다. 이후 구현은 다시 다듬었지만, 여전히 GEO API의 핵심에는 Matt의 코드가 자리하고 있습니다. 또한 Matt가 사용한 지리 인덱싱 코드를 제공해 준 ARDB 개발자들에게도 감사드립니다.
  • 새로운 BITFIELD 명령어를 사용하면 Redis 문자열을 사용자가 지정한 크기와 오프셋을 가진 여러 정수로 구성된 비트 배열처럼 사용할 수 있습니다. 증가와 감소를 지원하므로 이 작은 정수 또는 큰 정수를 카운터로 활용할 수 있으며, 오버플로 동작도 세밀하게 제어할 수 있습니다. http://redis.io/commands/bitfield. 이 기발한 아이디어를 계속 밀어붙이고 제가 구현을 작성하도록 동기를 부여해 준 Yoav Steinberg에게 감사드립니다.
  • Redis Cluster가 여러 면에서 개선되었습니다. 여기에는 redis-trib의 리밸런싱 기능과 향상된 복제본 마이그레이션이 포함됩니다. 다만 NAT 환경과 Docker 포트 포워딩 지원은 “unstable” 브랜치에 구현되어 있지만, 성숙도가 충분하지 않다고 판단해 3.2에는 백포트하지 않았습니다.
  • Lua 스크립트 복제가 개선되었습니다. 이제 “effects replication”을 사용해 부작용이 있는 스크립트를 작성할 수 있습니다. 문서는 여기에서 확인할 수 있습니다: http://redis.io/commands/EVAL. 이 기능을 추가하도록 자극하고 설계에 도움을 준 Yossi Gottlieb에게 감사드립니다.
  • 이제 제대로 된 Lua 스크립트 디버거도 제공됩니다: https://www.youtube.com/watch?v=IMvRfStaoyM. redis-cli에서도 사용할 수 있습니다. Lua 스크립팅이 시작된 때부터 복잡한 스크립트를 작성해 왔고, 이 기능을 정말 원했으며 개발 과정에도 도움을 준 Itamar Haber에게 감사드립니다.
  • Oran Agra가 SDS와 Jemalloc의 크기 클래스 설정을 변경한 덕분에 Redis의 메모리 효율이 더욱 좋아졌습니다. 또한 Matt Stancliff가 기여한 새로운 List 내부 표현 방식도 추가되었습니다. 이 방식은 대규모 리스트를 표현할 때 이전에 사용하던 메모리의 일부만 사용합니다!
  • 이제 읽기 작업 중 어떤 키가 만료되는지를 슬레이브와 마스터가 일치된 상태로 처리합니다. 진작 그랬어야 했습니다 :-)
  • 이제 SPOP에서 선택적으로 count 인자를 받을 수 있습니다. 초기 구현을 제공해 준 Alon Diamant에게 감사드립니다. 이후 성능을 위해 제가 상당 부분 다시 작성했고, 그 결과 꽤 빠른 기능이 완성되었습니다.
  • RDB AUX 필드가 추가되었습니다. 이제 RDB 파일 안에 파일을 생성한 서버와 생성 날짜 등의 정보가 일부 포함됩니다. 조만간 redis-cli에서도 이 필드를 파싱할 수 있게 될 예정입니다(바라건대 3.2.1에서요). 작업량은 적지만, 솔직히 이 글을 쓰면서야 그 작업을 기억해 냈습니다.
  • 이제 RDB 로딩 속도가 더 빨라졌습니다.
  • 이제 Sentinel은 많은 마스터를 모니터링하도록 확장할 수 있습니다. 하지만 안정 버전이라기보다는 고급 베타 버전으로 보는 편이 좋습니다. Sentinel 내부 코드가 많이 변경되었으므로 배포하기 전에 자신의 환경에서 신중하게 테스트해 주세요.
  • 그 밖에도 많은 변경 사항이 있지만, 목록이 이미 충분히 길어졌습니다.

이번 릴리스를 가능하게 해 준 모든 기여자 여러분, 사랑스럽고 큰 힘이 되어 준 Redis 사용자 여러분, 그리고 3.2.0에 들어간 많은 작업을 후원해 준 Redis Labs에 진심으로 감사드립니다.

지난 몇 주 동안에는 다음 Redis 버전에 출시될 또 하나의 흥미로운 기능도 작업했습니다. 이 기능은 5월 10~11일 샌프란시스코에서 열리는 RedisConf 2016에서 발표할 예정이니, 계속 지켜봐 주세요!

안정성에 관해 한 가지 말씀드리겠습니다. 늘 하는 말이지만, 소프트웨어의 안정성은 흑백으로 나뉘지 않습니다. 분홍색, 노란색, 초록색 같은 거죠. 농담입니다. 역시 회색의 여러 단계에 가깝습니다. 3.2.0은 꽤 탄탄해 보이지만, 아직 갓 나온 버전입니다. 조금씩 도입하면서 여러분의 환경에서 어떻게 동작하는지 확인하고, 문제가 있으면 신속하게 알려 주세요. 물론 오랫동안 RC 상태로 있었기 때문에, 새로운 기능이 너무 절실해서 최대한 빨리 배포한 용감한 사용자들이 이미 테스트했다는 점도 사실입니다.

3.2.0 전체 변경 기록은 여기에서 확인할 수 있습니다: https://raw.githubusercontent.com/antirez/redis/3.2/00-RELEASENOTES

Redis 3.2.0은 http://download.redis.io에서 tarball로 받을 수 있으며, Github의 antirez/redis 저장소에서 3.2.0 태그를 가져와도 됩니다.

즐겁게 사용하세요!

원문은 Salvatore Sanfilippo님이 에 게재했습니다.

이 글은 gpt-5.6-luna 모델을 사용해 번역했습니다.