15%

Π—Π°ΠΎΡ‰Π°Π΄ΠΆΡƒΠΉΡ‚Π΅ 15% Π½Π° всіх послугах хостингу

ΠŸΠ΅Ρ€Π΅Π²Ρ–Ρ€Ρ‚Π΅ свої Π½Π°Π²ΠΈΡ‡ΠΊΠΈ Ρ‚Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°ΠΉΡ‚Π΅ Π—Π½ΠΈΠΆΠΊΡƒ Π½Π° Π±ΡƒΠ΄ΡŒ-який Ρ‚Π°Ρ€ΠΈΡ„Π½ΠΈΠΉ ΠΏΠ»Π°Π½

Використовуй ΠΊΠΎΠ΄:

Skills
ΠŸΠΎΡ‡Π°Ρ‚ΠΈ
04.11.2024

Використання ΠΊΠΎΠΌΠ°Π½Π΄ сканування Π² Redis Π½Π° Linux

Redis, сховищС структур Π΄Π°Π½ΠΈΡ… Ρƒ ΠΏΠ°ΠΌ’яті Π· Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΠΌ Π²ΠΈΡ…Ρ–Π΄Π½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π²Ρ–Π΄ΠΎΠΌΠ΅ ΡΠ²ΠΎΡ”ΡŽ ΡˆΠ²ΠΈΠ΄ΠΊΡ–ΡΡ‚ΡŽ Ρ‚Π° ΡƒΠ½Ρ–Π²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ–ΡΡ‚ΡŽ як Π±Π°Π·Π° Π΄Π°Π½ΠΈΡ… Ρ‚ΠΈΠΏΡƒ “ΠΊΠ»ΡŽΡ‡-значСння”. ΠžΠ΄Π½Ρ–Ρ”ΡŽ Π· ΠΉΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΡƒΠΆΠ½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΠΉ Ρ” ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒ Ρ–Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–ΠΉΠ½ΠΎΠ³ΠΎ пСрСгляду Π½Π°Π±ΠΎΡ€Ρ–Π² Π΄Π°Π½ΠΈΡ… Π·Π° допомогою ΠΊΠΎΠΌΠ°Π½Π΄ сканування. Π¦Π΅ особливо корисно ΠΏΡ€ΠΈ Ρ€ΠΎΠ±ΠΎΡ‚Ρ– Π· Π²Π΅Π»ΠΈΠΊΠΈΠΌΠΈ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…, ΠΎΡΠΊΡ–Π»ΡŒΠΊΠΈ дозволяє Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡˆΡƒΠΊΠ°Ρ‚ΠΈ Π΄Π°Π½Ρ–, Π½Π΅ ΠΏΠ΅Ρ€Π΅Π²Π°Π½Ρ‚Π°ΠΆΡƒΡŽΡ‡ΠΈ сСрвСр. Для користувачів Π½Π° Π²ΠΈΠ΄Ρ–Π»Π΅Π½ΠΎΠΌΡƒ сСрвСрі Linux використання ΠΊΠΎΠΌΠ°Π½Π΄ сканування Π² Redis ΠΌΠΎΠΆΠ΅ ΠΏΡ–Π΄Π²ΠΈΡ‰ΠΈΡ‚ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŒ Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ Π· Π΄Π°Π½ΠΈΠΌΠΈ Π·Π° Ρ€Π°Ρ…ΡƒΠ½ΠΎΠΊ Ρ‚ΠΎΡ‡Π½ΠΎΡ—, ΠΎΠΏΡ‚ΠΈΠΌΡ–Π·ΠΎΠ²Π°Π½ΠΎΡ— для рСсурсів ΠΎΠ±Ρ€ΠΎΠ±ΠΊΠΈ Π½Π°Π±ΠΎΡ€Ρ–Π² Π΄Π°Π½ΠΈΡ…. Π£ Ρ†Ρ–ΠΉ статті ΠΌΠΈ розглянСмо, як Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ використовувати ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ сканування Π² Redis Π² сСрСдовищі Linux, ΠΏΡ€ΠΎΠΏΠΎΠ½ΡƒΡŽΡ‡ΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ– ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ΠΈ Ρ– ΠΊΡ€Π°Ρ‰Ρ– ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ для управління Ρ– ΠΏΠΎΡˆΡƒΠΊΡƒ Π΄Π°Π½ΠΈΡ… Π² ΠΌΠ°ΡΡˆΡ‚Π°Π±Ρ–..

Π©ΠΎ Ρ‚Π°ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ сканування?

Команди сканування Ρƒ Redis Π½Π°Π΄Π°ΡŽΡ‚ΡŒ спосіб Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–Ρ— Π½Π°Π΄ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ, Ρ…Π΅ΡˆΠ°ΠΌΠΈ Ρ‚Π° відсортованими Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Ρƒ Π½Π΅Π±Π»ΠΎΠΊΡƒΡŽΡ‡ΠΈΠΉ спосіб. На Π²Ρ–Π΄ΠΌΡ–Π½Ρƒ Π²Ρ–Π΄ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ KEYS, яка ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Π½Π΅Π±Π΅Π·ΠΏΠ΅Ρ‡Π½ΠΎΡŽ для Π²Π΅Π»ΠΈΠΊΠΈΡ… Π½Π°Π±ΠΎΡ€Ρ–Π² Π΄Π°Π½ΠΈΡ…, ΠΎΡΠΊΡ–Π»ΡŒΠΊΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ” всі Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π½Ρ– ΠΊΠ»ΡŽΡ‡Ρ– ΠΎΠ΄Ρ€Π°Π·Ρƒ, ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ сканування ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°ΡŽΡ‚ΡŒ Π½Π΅Π²Π΅Π»ΠΈΠΊΡƒ ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² Π·Π° Ρ€Π°Π·. Π¦Π΅ ΠΌΡ–Π½Ρ–ΠΌΡ–Π·ΡƒΡ” Π²ΠΏΠ»ΠΈΠ² Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŒ Ρ– дозволяє Π²ΠΈΠΊΠΎΠ½ΡƒΠ²Π°Ρ‚ΠΈ Ρ–Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ– Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–Ρ—

Команди сканування ΠΊΠ»ΡŽΡ‡Ρ–Π²

  1. SCAN: ΠŸΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ” ΠΊΠ»ΡŽΡ‡Ρ– Ρƒ просторі ΠΊΠ»ΡŽΡ‡Ρ–Π².
  2. SSCAN: ΠŸΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ” Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Ρƒ Π½Π°Π±ΠΎΡ€Ρ–.
  3. HSCAN: ΠŸΠ΅Ρ€Π΅Π±Ρ–Ρ€ ΠΏΠΎΠ»Ρ–Π² Ρ– Π·Π½Π°Ρ‡Π΅Π½ΡŒ Ρƒ Ρ…Π΅ΡˆΡ–.
  4. ZSCAN: ΠŸΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ” Ρ‡Π»Π΅Π½ΠΈ Ρ‚Π° ΠΎΡ†Ρ–Π½ΠΊΠΈ Ρƒ відсортованому Π½Π°Π±ΠΎΡ€Ρ–.

Π‘Π°Π·ΠΎΠ²ΠΈΠΉ синтаксис ΠΊΠΎΠΌΠ°Π½Π΄ сканування

КоТна ΠΊΠΎΠΌΠ°Π½Π΄Π° сканування ΠΌΠ°Ρ” схоТий синтаксис

SCAN cursor [MATCH pattern] [COUNT count]
  • курсор: Π¦Ρ–Π»Π΅ число, якС прСдставляє ΠΏΠΎΠ·ΠΈΡ†Ρ–ΡŽ, Π· якої слід ΠΏΠΎΡ‡Π°Ρ‚ΠΈ сканування. Π©ΠΎΠ± ΠΏΠΎΡ‡Π°Ρ‚ΠΈ Π½ΠΎΠ²Π΅ сканування, використовуйтС 0.
  • Π¨Π°Π±Π»ΠΎΠ½ Π·Π±Ρ–Π³Ρƒ: (Π½Π΅ΠΎΠ±ΠΎΠ²’язково) Π¨Π°Π±Π»ΠΎΠ½ для Ρ„Ρ–Π»ΡŒΡ‚Ρ€Π°Ρ†Ρ–Ρ— ΠΏΠΎΠ²Π΅Ρ€Π½Π΅Π½ΠΈΡ… ΠΊΠ»ΡŽΡ‡Ρ–Π². ΠŸΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡ” шаблони Ρƒ стилі glob.
  • COUNT ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ: (Π½Π΅ΠΎΠ±ΠΎΠ²’язково) ΠŸΡ–Π΄ΠΊΠ°Π·ΠΊΠ° Redis ΠΏΡ€ΠΎ Ρ‚Π΅, ΡΠΊΡ–Π»ΡŒΠΊΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ‚ΠΈ Π² ΠΊΠΎΠΆΠ½Ρ–ΠΉ Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–Ρ—.

ВстановлСння Redis Ρƒ Linux

ΠŸΠ΅Ρ€Ρˆ Π½Ρ–ΠΆ ΠΌΠΈ зануримося Ρƒ використання ΠΊΠΎΠΌΠ°Π½Π΄ сканування, пСрСконайтСся, Ρ‰ΠΎ Redis встановлСно Ρƒ Π²Π°ΡˆΡ–ΠΉ систСмі Linux. Для Ρ‚ΠΈΡ…, Ρ…Ρ‚ΠΎ використовує Π²ΠΈΠ΄Ρ–Π»Π΅Π½ΠΈΠΉ сСрвСр Debian, встановлСння Redis Ρ” простим Ρ– ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠΊΡ€Π°Ρ‰ΠΈΡ‚ΠΈ моТливості сСрвСра для Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡ— ΠΎΠ±Ρ€ΠΎΠ±ΠΊΠΈ Π΄Π°Π½ΠΈΡ… Π² ΠΏΠ°ΠΌ’яті. Π’ΡƒΡ‚ описано, як встановити Redis Ρƒ систСмі Π½Π° основі Debian, Ρ‰ΠΎΠ± Π·Π°Π±Π΅Π·ΠΏΠ΅Ρ‡ΠΈΡ‚ΠΈ ΡΡ‚Π°Π±Ρ–Π»ΡŒΠ½Π΅ сСрСдовищС, ΠΎΠΏΡ‚ΠΈΠΌΡ–Π·ΠΎΠ²Π°Π½Π΅ для високопродуктивних ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–ΠΉ.

Π’ΠΈΠΊΠΎΠ½ΡƒΡŽΡ‡ΠΈ Ρ†Ρ– ΠΊΡ€ΠΎΠΊΠΈ, Π²ΠΈ Π½Π°Π»Π°ΡˆΡ‚ΡƒΡ”Ρ‚Π΅ Redis Ρ‚Π°ΠΊΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ, Ρ‰ΠΎΠ± використовувати рСсурси Ρ– ΡΡ‚Π°Π±Ρ–Π»ΡŒΠ½Ρ–ΡΡ‚ΡŒ вашого Π²ΠΈΠ΄Ρ–Π»Π΅Π½ΠΎΠ³ΠΎ сСрвСра Debian, Ρ‰ΠΎ Ρ–Π΄Π΅Π°Π»ΡŒΠ½ΠΎ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ для Π½Π°Π΄Ρ–ΠΉΠ½ΠΎΡ— Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ Π· Π΄Π°Π½ΠΈΠΌΠΈ

sudo apt update
sudo apt install redis-server

Для CentOS/RHEL використовуйтС

sudo yum install redis

ΠŸΡ–ΡΠ»Ρ встановлСння Π·Π°ΠΏΡƒΡΡ‚Ρ–Ρ‚ΡŒ сСрвСр Redis

sudo systemctl start redis

ΠŸΡ–Π΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ Π΄ΠΎ Redis

Π’Ρ–Π΄ΠΊΡ€ΠΈΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΡ–Π½Π°Π» Ρ– ΠΏΡ–Π΄ΠΊΠ»ΡŽΡ‡Ρ–Ρ‚ΡŒΡΡ Π΄ΠΎ вашого СкзСмпляра Redis Π·Π° допомогою Redis CLI

redis-cli

Π’Π΅ΠΏΠ΅Ρ€ Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠΊΠΎΠ½ΡƒΠ²Π°Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Redis Π² CLI

Використання ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ SCAN

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ 1: Π‘Π°Π·ΠΎΠ²Π΅ сканування

Π©ΠΎΠ± ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ всі ΠΊΠ»ΡŽΡ‡Ρ– Π² Π±Π°Π·Ρ– Π΄Π°Π½ΠΈΡ… Redis, Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ використовувати

SCAN 0

Ця ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ²Π΅Ρ€Π½Π΅ курсор Ρ– список ΠΊΠ»ΡŽΡ‡Ρ–Π²

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ 2: Використання MATCH для Ρ„Ρ–Π»ΡŒΡ‚Ρ€Π°Ρ†Ρ–Ρ— ΠΊΠ»ΡŽΡ‡Ρ–Π²

Π―ΠΊΡ‰ΠΎ Π²ΠΈ Ρ…ΠΎΡ‡Π΅Ρ‚Π΅ Π·Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ»ΡŽΡ‡Ρ–, які Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°ΡŽΡ‚ΡŒ ΠΏΠ΅Π²Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄, ΠΊΠ»ΡŽΡ‡Ρ–, Ρ‰ΠΎ ΠΏΠΎΡ‡ΠΈΠ½Π°ΡŽΡ‚ΡŒΡΡ Π· “user:”, Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ використати

SCAN 0 MATCH username:*

Ця ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ” Ρ‚Ρ–Π»ΡŒΠΊΠΈ ΠΊΠ»ΡŽΡ‡Ρ–, які ΠΏΠΎΡ‡ΠΈΠ½Π°ΡŽΡ‚ΡŒΡΡ Π· “user:”

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ 3: Π’ΠΊΠ°Π·Ρ–Π²ΠΊΠ° COUNT

Π©ΠΎΠ± ΠΏΡ–Π΄ΠΊΠ°Π·Π°Ρ‚ΠΈ, ΡΠΊΡ–Π»ΡŒΠΊΠΈ ΠΊΠ»ΡŽΡ‡Ρ–Π² Redis ΠΌΠ°Ρ” ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ‚ΠΈ Π² ΠΊΠΎΠΆΠ½Ρ–ΠΉ Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–Ρ—, Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Π»Ρ–Ρ‡ΠΈΠ»ΡŒΠ½ΠΈΠΊ

SCAN 0 COUNT 10

Π¦Π΅ Π±ΡƒΠ΄Π΅ спроба ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·Π½ΠΎ 10 ΠΊΠ»ΡŽΡ‡Ρ–Π². Π—Π°ΡƒΠ²Π°ΠΆΡ‚Π΅, Ρ‰ΠΎ Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π½Π° ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Π½Π΅Π½ΠΈΡ… ΠΊΠ»ΡŽΡ‡Ρ–Π² ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ мСншою

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ 4: ΠŸΠ΅Ρ€Π΅Π±Ρ–Ρ€ усіх ΠΊΠ»ΡŽΡ‡Ρ–Π²

Π©ΠΎΠ± ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΠΈ всі ΠΊΠ»ΡŽΡ‡Ρ– Π·Π° ΠΊΡ–Π»ΡŒΠΊΠ° Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–ΠΉ, Π²Π°ΠΌ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ відстСТувати курсор, який ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ”Ρ‚ΡŒΡΡ. Ось простий ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ ΡΡ†Π΅Π½Π°Ρ€Ρ–ΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ рядка:

cursor=0
while true; do
result=$(redis-cli SSCAN myset $cursor MATCH apple:*)
echo "$result" # Process the result as needed
cursor=$(echo "$result" | awk 'NR==1{print $1}') # Update the cursor
if [[ "$cursor" == "0" ]]; then
break Β # Stop when the cursor is back to 0
fi
done

Використання ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ SSCAN

Команда SSCAN Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ для Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Ρƒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² Ρƒ ΠΌΠ½ΠΎΠΆΠΈΠ½Ρ–. Π‡Ρ— синтаксис ΠΏΠΎΠ΄Ρ–Π±Π½ΠΈΠΉ Π΄ΠΎ синтаксису ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ SCAN

SSCAN key cursor [MATCH pattern] [COUNT count]

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ використання SSCAN

ΠšΡ€ΠΎΠΊ 1: БтворСння ΠΌΠ½ΠΎΠΆΠΈΠ½ΠΈ Ρ‚Π° додавання Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π²

Π‘Ρ‚Π²ΠΎΡ€ΠΈΠΌΠΎ ΠΌΠ½ΠΎΠΆΠΈΠ½Ρƒ Π· назвою myset Ρ– Π΄ΠΎΠ΄Π°ΠΌΠΎ Π΄ΠΎ Π½Π΅Ρ— дСякі Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ

SADD myset "apple"
SADD myset "banana"
SADD myset "cherry"
SADD myset "date"
SADD myset "elderberry"

ΠšΡ€ΠΎΠΊ 2: Використання ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ SSCAN

Π’Π΅ΠΏΠ΅Ρ€, ΠΊΠΎΠ»ΠΈ Ρƒ нас Ρ” ΠΌΠ½ΠΎΠΆΠΈΠ½Π° myset, ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ використовувати ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ SSCAN для Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–ΠΉΠ½ΠΎΠ³ΠΎ пСрСгляду Ρ—Ρ— Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π²

  1. Π‘Π°Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° SSCAN:ΠŸΡ€ΠΈΠΏΡƒΡΡ‚ΠΈΠΌΠΎ, Ρƒ вас Ρ” ΠΌΠ½ΠΎΠΆΠΈΠ½Π° Π· назвою “myset”. Π©ΠΎΠ± пСрСглянути Ρ—Ρ— Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ
    SSCAN myset 0
  2. Π—Π° допомогою MATCH:Π©ΠΎΠ± Π²Ρ–Π΄Ρ„Ρ–Π»ΡŒΡ‚Ρ€ΡƒΠ²Π°Ρ‚ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π°Π±ΠΎΡ€Ρƒ Π½Π° основі ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Ρ– Π΄ΠΎΠ΄Π°Ρ‚ΠΈ дСякі Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ, Ρ‰ΠΎ ΠΌΡ–ΡΡ‚ΡΡ‚ΡŒ слово “ΠΌΠ°Π½Π³ΠΎ” Ρ‚Π° Ρ–Π½ΡˆΡ– Π²Π°Ρ€Ρ–Π°Ρ†Ρ–Ρ—:
    SSCAN myset 0 MATCH mango:*
  3. ІтСрація ΠΏΠΎ ΠΌΠ½ΠΎΠΆΠΈΠ½Ρ–:Π’ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ використовувати Ρ†ΠΈΠΊΠ» для Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–Ρ— ΠΏΠΎ ΠΌΠ½ΠΎΠΆΠΈΠ½Ρ– :

#!/bin/bash
cursor=0
echo "Scanning through myset:"
while true; do
# Scan the set
result=$(redis-cli SSCAN myset $cursor)
# Print the elements returned by SSCAN
echo "$result"
# Update the cursor for the next iteration
cursor=$(echo "$result" | awk 'NR==1{print $1}')
# Break the loop if cursor is back to 0
if [[ "$cursor" == "0" ]]; then
break
fi
done

Запуск скрипта

  1. Π—Π±Π΅Ρ€Π΅ΠΆΡ–Ρ‚ΡŒ скрипт як scan_myset.sh.
  2. Π—Ρ€ΠΎΠ±Ρ–Ρ‚ΡŒ ΠΉΠΎΠ³ΠΎ Π²ΠΈΠΊΠΎΠ½ΡƒΠ²Π°Π½ΠΈΠΌ
    chmod +x scan_myset.sh
  3. Π—Π°ΠΏΡƒΡΡ‚Ρ–Ρ‚ΡŒ скрипт
    ./scan_myset.sh

Використання ΠΊΠΎΠΌΠ°Π½Π΄ HSCAN Ρ‚Π° ZSCAN

Команда HSCAN

Команда HSCAN Π²ΠΈΠΊΠΎΠ½ΡƒΡ” Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–ΠΉΠ½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π±Ρ–Ρ€ ΠΏΠΎΠ»Ρ–Π² Ρ‚Π° Π·Π½Π°Ρ‡Π΅Π½ΡŒ Ρƒ Ρ…Π΅ΡˆΡ–

HSCAN key cursor [MATCH pattern] [COUNT count]

Команда HSCAN Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Ρƒ ΠΏΠΎΠ»Ρ–Π² Ρ– Π·Π½Π°Ρ‡Π΅Π½ΡŒ Ρƒ Ρ…Π΅ΡˆΡ–

ΠšΡ€ΠΎΠΊ 1: БтворСння Ρ…Π΅ΡˆΡƒ Ρ– додавання ΠΏΠΎΠ»Ρ–Π²

  1. Π‘Ρ‚Π²ΠΎΡ€Ρ–Ρ‚ΡŒ Ρ…Π΅Ρˆ Π· Ρ–ΠΌ’ям myhash Ρ– Π΄ΠΎΠ΄Π°ΠΉΡ‚Π΅ Π΄ΠΎ нього ΠΊΡ–Π»ΡŒΠΊΠ° ΠΏΠΎΠ»Ρ–Π²:
HSET myhash name "John Doe"
HSET myhash age "30"
HSET myhash occupation "Software Developer"
HSET myhash city "San Francisco"
HSET myhash country "USA"

ΠšΡ€ΠΎΠΊ 2: Використання HSCAN для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Ρƒ Ρ…Π΅ΡˆΡƒ

  1. ВикористовуйтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ HSCAN для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Ρƒ ΠΏΠΎΠ»Ρ–Π² Π² myhash:
HSCAN myhash 0

Команда ZSCAN

ZSCAN – Ρ†Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Redis, яка Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ для Ρ–Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Ρƒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² відсортованої ΠΌΠ½ΠΎΠΆΠΈΠ½ΠΈ. Π’ΠΎΠ½Π° дозволяє ΠΎΡ‚Ρ€ΠΈΠΌΡƒΠ²Π°Ρ‚ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Ρ€Π°Π·ΠΎΠΌ Π· Ρ—Ρ…Π½Ρ–ΠΌΠΈ ΠΎΡ†Ρ–Π½ΠΊΠ°ΠΌΠΈ Ρƒ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈΠΉ Ρ– Π½Π΅Π±Π»ΠΎΠΊΡƒΡŽΡ‡ΠΈΠΉ спосіб. Ця ΠΊΠΎΠΌΠ°Π½Π΄Π° особливо корисна для Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ Π· Π²Π΅Π»ΠΈΠΊΠΈΠΌΠΈ відсортованими ΠΌΠ½ΠΎΠΆΠΈΠ½Π°ΠΌΠΈ, Π΄Π΅ отримання всіх Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Π½Π΅ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΈΠΌ. Команда ZSCAN Π²ΠΈΠΊΠΎΠ½ΡƒΡ” Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–ΠΉΠ½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π±Ρ–Ρ€ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² Ρ– ΠΎΡ†Ρ–Π½ΠΎΠΊ Ρƒ відсортованій ΠΌΠ½ΠΎΠΆΠΈΠ½Ρ–

ZSCAN key cursor [MATCH pattern] [COUNT count]

ΠšΡ€ΠΎΠΊ 1: БтворСння відсортованої ΠΌΠ½ΠΎΠΆΠΈΠ½ΠΈ Ρ‚Π° додавання Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π²

Π‘Ρ‚Π²ΠΎΡ€ΠΈΠΌΠΎ відсортовану ΠΌΠ½ΠΎΠΆΠΈΠ½Ρƒ Π· назвою mysortedset Ρ– Π΄ΠΎΠ΄Π°ΠΌΠΎ дСякі Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π· ΠΎΡ†Ρ–Π½ΠΊΠ°ΠΌΠΈ

ZADD mysortedset 1 "apple"
ZADD mysortedset 2 "banana"
ZADD mysortedset 3 "cherry"

Π‘Π°Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ZSCAN:Π©ΠΎΠ± ΠΏΠΎΡ‡Π°Ρ‚ΠΈ сканування відсортованої ΠΌΠ½ΠΎΠΆΠΈΠ½ΠΈ, використовуйтС

ZSCAN mysortedset 0

ΠšΡ€ΠΎΠΊ 2: Використання MATCH для Ρ„Ρ–Π»ΡŒΡ‚Ρ€Π°Ρ†Ρ–Ρ— Ρ‡Π»Π΅Π½Ρ–Π² (Π½Π΅ΠΎΠ±ΠΎΠ²’язково)

Π―ΠΊΡ‰ΠΎ Π²ΠΈ Ρ…ΠΎΡ‡Π΅Ρ‚Π΅ Π²Ρ–Π΄Ρ„Ρ–Π»ΡŒΡ‚Ρ€ΡƒΠ²Π°Ρ‚ΠΈ ΠΎΡ€Π³Π°Π½Ρ–Π·Π°Ρ†Ρ–Ρ—, ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚Ρ– ZSCAN, Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ скористатися ΠΎΠΏΡ†Ρ–Ρ”ΡŽ MATCH. Наприклад, Ρ‰ΠΎΠ± Π·Π½Π°ΠΉΡ‚ΠΈ учасників, які ΠΌΡ–ΡΡ‚ΡΡ‚ΡŒ Π»Ρ–Ρ‚Π΅Ρ€Ρƒ “e”, Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ

ZSCAN mysortedset 0 MATCH *e*

Найкращі ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ використання ΠΊΠΎΠΌΠ°Π½Π΄ сканування

  1. ВикористовуйтС SCAN Π·Π°ΠΌΡ–ΡΡ‚ΡŒ KEYS: Π£Π½ΠΈΠΊΠ°ΠΉΡ‚Π΅ використання ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ KEYS Ρƒ Π²ΠΈΡ€ΠΎΠ±Π½ΠΈΡ†Ρ‚Π²Ρ–, ΠΎΡΠΊΡ–Π»ΡŒΠΊΠΈ Π²ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅ Π·Π°Π±Π»ΠΎΠΊΡƒΠ²Π°Ρ‚ΠΈ сСрвСр. ВикористовуйтС SCAN для Π½Π΅Π±Π»ΠΎΠΊΡƒΡŽΡ‡ΠΈΡ… Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–ΠΉ.
  2. ΠšΠΎΠΌΠ±Ρ–Π½ΡƒΠΉΡ‚Π΅ Π· MATCH Ρ– COUNT: ВикористовуйтС ΠΎΠΏΡ†Ρ–Ρ— MATCH Ρ– COUNT, Ρ‰ΠΎΠ± ΠΏΡ–Π΄Π²ΠΈΡ‰ΠΈΡ‚ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŒ Ρ– ΠΎΠ±ΠΌΠ΅ΠΆΠΈΡ‚ΠΈ Π½Π°Π±Ρ–Ρ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ–Π².
  3. ΠžΠ±Ρ€ΠΎΠ±ΠΊΠ° Π²Π΅Π»ΠΈΠΊΠΈΡ… Π½Π°Π±ΠΎΡ€Ρ–Π² Π΄Π°Π½ΠΈΡ…: ΠŸΡ€ΠΈ Ρ€ΠΎΠ±ΠΎΡ‚Ρ– Π· Π²Π΅Π»ΠΈΠΊΠΈΠΌΠΈ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ… обробляйтС ΠΊΠ»ΡŽΡ‡Ρ– ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Π·Π° допомогою курсорів для Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ кСрування ΠΏΠ°ΠΌ’ΡΡ‚Ρ‚ΡŽ.
  4. ВСстування ΠΏΡ–Π΄ час Ρ€ΠΎΠ·Ρ€ΠΎΠ±ΠΊΠΈ: Π—Π°Π²ΠΆΠ΄ΠΈ тСстуйтС Π»ΠΎΠ³Ρ–ΠΊΡƒ сканування Π² сСрСдовищі Ρ€ΠΎΠ·Ρ€ΠΎΠ±ΠΊΠΈ, Ρ‰ΠΎΠ± пСрСконатися, Ρ‰ΠΎ Π²ΠΎΠ½Π° ΠΏΡ€Π°Ρ†ΡŽΡ” Π½Π°Π»Π΅ΠΆΠ½ΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄ розгортанням Ρƒ Π²ΠΈΡ€ΠΎΠ±Π½ΠΈΡ†Ρ‚Π²Ρ–.

Висновок

Використання ΠΊΠΎΠΌΠ°Π½Π΄ сканування Π² Redis дозволяє Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ–Ρ‚Π΅Ρ€Π°Ρ†Ρ–ΠΉΠ½ΠΎ пСрСглядати Π²Π΅Π»ΠΈΠΊΡ– Π½Π°Π±ΠΎΡ€ΠΈ Π΄Π°Π½ΠΈΡ… Π² сСрСдовищі Linux, Π½Π΅ ΠΏΠ΅Ρ€Π΅Π²Π°Π½Ρ‚Π°ΠΆΡƒΡŽΡ‡ΠΈ ваш сСрвСр. Π ΠΎΠ·ΡƒΠΌΡ–ΡŽΡ‡ΠΈ, як використовувати SCAN, SSCAN, HSCAN Ρ– ZSCAN, Π²ΠΈ Π·ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΊΠ΅Ρ€ΡƒΠ²Π°Ρ‚ΠΈ Ρ– ΠΎΡ‚Ρ€ΠΈΠΌΡƒΠ²Π°Ρ‚ΠΈ Π΄Π°Π½Ρ– Π· Redis. Π¦Ρ– ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½Ρ– для створСння ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠ²Π°Π½ΠΈΡ… Π΄ΠΎΠ΄Π°Ρ‚ΠΊΡ–Π², які ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡŒ ΠΎΠ±Ρ€ΠΎΠ±ΠΊΠΈ Π΄Π°Π½ΠΈΡ… Ρƒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ часі. Для отримання Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎΡ— Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ— Ρ‚Π° Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΈΡ… інструкцій Π·Π²Π΅Ρ€Π½Ρ–Ρ‚ΡŒΡΡ Π΄ΠΎ ΠΎΡ„Ρ–Ρ†Ρ–ΠΉΠ½ΠΎΡ— Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†Ρ–Ρ— Redis Ρ– поСкспСримСнтуйтС Π· Ρ†ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Ρƒ Π²Π°ΡˆΠΎΠΌΡƒ сСрСдовищі Redis

15%

Π—Π°ΠΎΡ‰Π°Π΄ΠΆΡƒΠΉΡ‚Π΅ 15% Π½Π° всіх послугах хостингу

ΠŸΠ΅Ρ€Π΅Π²Ρ–Ρ€Ρ‚Π΅ свої Π½Π°Π²ΠΈΡ‡ΠΊΠΈ Ρ‚Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°ΠΉΡ‚Π΅ Π—Π½ΠΈΠΆΠΊΡƒ Π½Π° Π±ΡƒΠ΄ΡŒ-який Ρ‚Π°Ρ€ΠΈΡ„Π½ΠΈΠΉ ΠΏΠ»Π°Π½

Використовуй ΠΊΠΎΠ΄:

Skills
ΠŸΠΎΡ‡Π°Ρ‚ΠΈ