ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π² Redis ΠΏΠΎΠ΄ Linux
Redis, Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΡΡΡ ΡΠ²ΠΎΡΡΠ° ΡΠΊΠΎΡΠΎΡΡ ΠΈ Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ ΠΊΠ°ΡΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ. ΠΠ΄Π½Π° ΠΎΡ ΠΌΠΎΡΠ½ΠΈΡΠ΅ ΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π· Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅. Π’ΠΎΠ²Π° Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, Π±Π΅Π· Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠΎΠ²Π°ΡΠ²Π° ΡΡΡΠ²ΡΡΡΡ. ΠΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Linux ΡΡΡΠ²ΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π² Redis ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Π΄Π°Π½Π½ΠΈ, ΠΊΠ°ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΏΡΠ΅ΡΠΈΠ·Π½Π° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ. Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π² Redis Π² ΡΡΠ΅Π΄Π° Π½Π° Linux, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΈ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΌΠ°ΡΠ°Π±Π° Π½Π°.
ΠΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅?
ΠΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π² Redis ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ Π½Π°ΡΠΈΠ½ Π·Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Π½Π°Π΄ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°, Ρ Π΅ΡΠΎΠ²Π΅ ΠΈ ΡΠΎΡΡΠΈΡΠ°Π½ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠΎ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΠ°Ρ Π½Π°ΡΠΈΠ½. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° KEYS, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠΏΠ°ΡΠ½Π° Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΡΡΠ° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ²ΠΏΠ°Π΄Π°ΡΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π½Π°Π²Π΅Π΄Π½ΡΠΆ, ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π²ΡΡΡΠ°Ρ ΠΌΠ°Π»ΡΠΊ Π±ΡΠΎΠΉ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π°Π²Π΅Π΄Π½ΡΠΆ. Π’ΠΎΠ²Π° ΡΠ²Π΅ΠΆΠ΄Π° Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π²ΡΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π²ΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΡ
ΠΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅
- SCAN: ΠΡΠ΅ΡΠΈΡΠ° ΠΏΡΠ΅Π· ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²Π΅.
- SSCAN: ΠΡΠ΅ΡΠ²ΡΠΈΡΠ° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ.
- HSCAN: ΠΡΠ΅ΡΠΈΡΠ° ΠΏΡΠ΅Π· ΠΏΠΎΠ»Π΅ΡΠ° ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π² Ρ Π΅Ρ.
- ZSCAN: ΠΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· ΡΠ»Π΅Π½ΠΎΠ²Π΅ ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π² ΡΠΎΡΡΠΈΡΠ°Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ.
ΠΡΠ½ΠΎΠ²Π΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅
ΠΡΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ ΠΈΠΌΠ° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
- ΠΊΡΡΡΠΎΡ: Π¦ΡΠ»ΠΎ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΏΠΎΠ·ΠΈΡΠΈΡΡΠ°, ΠΎΡ ΠΊΠΎΡΡΠΎ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ΡΠΎ. ΠΠ° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π½ΠΎΠ²ΠΎ ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ 0.
- MATCH pattern: (ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ) Π¨Π°Π±Π»ΠΎΠ½ Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΡΠ½Π°ΡΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π² ΡΡΠΈΠ» glob.
- COUNT count (Π±ΡΠΎΠΉ): (Π½Π΅Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ) Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΊΡΠΌ Redis ΠΊΠΎΠ»ΠΊΠΎ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π° Π±ΡΠ΄Π°Ρ Π²ΡΡΠ½Π°ΡΠΈ ΠΏΡΠΈ Π²ΡΡΠΊΠ° ΠΈΡΠ΅ΡΠ°ΡΠΈΡ.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Redis Π² Linux
ΠΠ° CentOS/RHEL ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅, ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΡΠ²ΡΡΠ° Redis
Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ Ρ Redis
ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΈ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Ρ Π²Π°ΡΠ°ΡΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡ Π½Π° Redis, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Redis CLI
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° Redis Π² CLI
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° SCAN
ΠΡΠΈΠΌΠ΅Ρ 1: ΠΡΠ½ΠΎΠ²Π΅Π½ SCAN
ΠΠ° Π΄Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Redis, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅
Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΊΡΡΡΠΎΡ ΠΈ ΡΠΏΠΈΡΡΠΊ Ρ ΠΊΠ»ΡΡΠΎΠ²Π΅
ΠΡΠΈΠΌΠ΅Ρ 2: ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° MATCH Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅
ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠ΄Π΅Π», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π·Π°ΠΏΠΎΡΠ²Π°Ρ Ρ “user:”, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅
Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΡΡΠ° ΡΠ°ΠΌΠΎ ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π·Π°ΠΏΠΎΡΠ²Π°Ρ Ρ “user:”
ΠΡΠΈΠΌΠ΅Ρ 3: ΠΠ°Π΄Π°Π²Π°Π½Π΅ Π½Π° COUNT
ΠΠ° Π΄Π° ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ»ΡΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π²ΡΡΠ½Π΅ Redis ΠΏΡΠΈ Π²ΡΡΠΊΠ° ΠΈΡΠ΅ΡΠ°ΡΠΈΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ Π±ΡΠΎΠΉ
Π’ΠΎΠ²Π° ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π΄Π° Π²ΡΡΠ½Π΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 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
Π‘ΡΡΠΏΠΊΠ° 1: Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½Π°Π±ΠΎΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ
ΠΠ΅ΠΊΠ° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ myset, ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΡΠΊΠΎΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΊΡΠΌ Π½Π΅Π³ΠΎ







