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.
  • MATCH pattern: (ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ€) Π¨Π°Π±Π»ΠΎΠ½ Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Π²ΡŠΡ€Π½Π°Ρ‚ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° шаблони Π² стил glob.
  • COUNT count (Π±Ρ€ΠΎΠΉ): (Π½Π΅Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ) Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ към Redis ΠΊΠΎΠ»ΠΊΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π²ΡŠΡ€Π½Π°Ρ‚ΠΈ ΠΏΡ€ΠΈ всяка итСрация.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° Redis Π² Linux

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΈΡΡ‚ΡŠΠΏΠΈΠΌ към ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ Π·Π° сканиранС, ΡƒΠ²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ Redis Π΅ инсталиран Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° Linux систСма. Π—Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Debian Dedicated Server, инсталиранСто Π½Π° 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: ОсновСн SCAN

Π—Π° Π΄Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Ρ‚Π΅ всички ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ 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
Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ