Выпуск Π‘Π£Π‘Π” Redis 8.4

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· Π‘Π£Π‘Π” Redis 8.4, относящСйся ΠΊ классу NoSQL-систСм. Redis прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ структурированных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ списки, Ρ…ΡΡˆΠΈ ΠΈ мноТСства, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ выполнСния Π½Π° сторонС сСрвСра скриптов-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° языкС Lua. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° язык Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ AGPLv3.

Π‘Π£Π‘Π” Redis ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π° ΠΎΠ΄ΠΈΠ½ шаг Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΊΠΎΠΌΠ°Π½Π΄, гарантируя Π½Π΅ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… запросов Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΠΈΠ½ΠΈΡ‚ΡŒΡΡ) выполнСния Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄, Π° Π² случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ позволяя ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ измСнСния. ВсС Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ доступны для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° популярных языков, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Perl, Python, PHP, Java, Ruby ΠΈ Tcl.

Для управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠ°ΠΊ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚/Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚, стандартныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ списками ΠΈ мноТСствами (объСдинСниС, пСрСсСчСниС), ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, мноТСствСнныС Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сортировки. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π΄Π²Π° Ρ€Π΅ΠΆΠΈΠΌΠ° хранСния: пСриодичСская синхронизация Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° диск ΠΈ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° дискС Π»ΠΎΠ³Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС гарантируСтся полная ΡΠΎΡ…Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ всСх ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° организация master-slave Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° нСсколько сСрвСров, осущСствляСмая Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. ДоступСн Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями «публикация/подписка», ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ создаётся ΠΊΠ°Π½Π°Π», сообщСния ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΏΠΎ подпискС.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ измСнСния Π² Redis 8.4:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«FT.HYBRIDΒ» с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠ³ΠΎ поиска, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ запросС возмоТности полнотСкстового ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ поиска, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ°ΠΊ прямыС совпадСния, Ρ‚Π°ΠΊ ΠΈ Π±Π»ΠΈΠ·ΠΎΡΡ‚ΡŒ ΠΏΠΎ смыслу. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ возмоТности агрСгирования Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² с синтаксисом ΠΊΠ°ΠΊ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«FT.AGGREGATEΒ».
  • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… примСнСниях Redis для ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. НапримСр, ΠΏΡ€ΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… 10% ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи (SET) ΠΈ 90% ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния (GET) ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ строковых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 1 Кб прирост пропускной способности составил 30%.
     Выпуск Π‘Π£Π‘Π” Redis 8.4
  • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ поиска (FT.SEARCH) ΠΈ агрСгирования Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² (FT.AGGREGATE). Π’ Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… систСмах с большим числом ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… запросов Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ прирост пропускной способности ΠΈ сниТСниС Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π΄ΠΎ 4.7 Ρ€Π°Π· ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ поиска ΠΈ Π΄ΠΎ 1.4 Ρ€Π°Π·Π° ΠΏΡ€ΠΈ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².
     Выпуск Π‘Π£Π‘Π” Redis 8.4
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация выдСлСния памяти ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запросов ΠΈ прСдоставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ настройки повСдСния ΠΏΡ€ΠΈ исчСрпании доступной памяти (OOM, out-of-memory).
  • Π‘Π½ΠΈΠΆΠ΅Π½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΡ€ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ ΠΌΠ΅Π»ΠΊΠΈΡ… строк (Π΄ΠΎ 7 Π±Π°ΠΉΡ‚) Π² структурах с Ρ‚ΠΈΠΏΠΎΠΌ JSON. НапримСр, массив Π² JSON, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ 500 ΠΌΠ΅Π»ΠΊΠΈΡ… элСмСнтов Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡/значСния Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° 37% мСньшС памяти.
  • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ хранСния числовых массивов JSON, всС элСмСнты Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ (Ссли Ρ€Π°Π½ΡŒΡˆΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ массивС сохранялся Ρ‚ΠΈΠΏ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚ΠΈΠΏ сохраняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для всСго массива). Π’ ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ тСстС ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ массивы с ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠΌ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… элСмСнтов Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π½Π° 50-92% мСньшС памяти Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ°.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ SET Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ IFEQ, IFNE, IFDEQ ΠΈ IFDNE, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ для обновлСния строкового ΠΊΠ»ΡŽΡ‡Π° Π² ситуациях, ΠΊΠΎΠ³Π΄Π° связанноС с Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅Π³ΠΎ извлСчСния.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° XDELEX для Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠ³ΠΎ удалСния строкового ΠΊΠ»ΡŽΡ‡Π°, Ссли связанноС с Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ измСнилось с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° извлСчСния.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° DIGEST, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Ρ…ΡΡˆ ΠΎΡ‚ значСния, связанного с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ XREADGROUP Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция Β«CLAIM <min-idle-time>Β» для чтСния ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… (idle pending), Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΠ²ΡˆΠΈΡ… (incoming) сообщСний.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° MSETEX для Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠ³ΠΎ выставлСния ΠΈΠ»ΠΈ обновлСния Ρ€Π°Π·ΠΎΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строковых ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ обновлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΡ… ΠΆΠΈΠ·Π½ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠΉ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ слотов ΠΌΠ΅ΠΆΡƒ ΡƒΠ·Π»Π°ΠΌΠΈ кластСра (ASM β€” Atomic Slot Migration), Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»Π½ΡƒΡŽ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… слотов хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° CLUSTER MIGRATION, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слоты с Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΠ·Π»ΠΎΠ², ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ прогрСсс ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈ нСобходимости ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° CLUSTER SLOT-STATS для ΠΎΡ†Π΅Π½ΠΊΠΈ статистики Π² кластСрС Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… слотов, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ число ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° CPU ΠΈ сСтСвой Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ