Redis DataBase Cache

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Redis?

Redis - это Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ всС свои Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ»ΡŽΡ‡: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΏΡ€ΠΈ этом Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠ°ΠΊ Π² MongoDB, Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠ°ΠΊ Π² SQL

Redis, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ свои Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° дискС - ΠΎΠ½ Π΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΈΡ… Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π—Π° счёт Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π°Π·Ρ‹ Π±ΠΎΠ»Π΅Π΅ быстро, Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π‘Π”. Однако эти Π΄Π°Π½Π½Ρ‹Π΅ энСргозависимы, ΠΈ, Ссли ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ, Ρ‚ΠΎ всС Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΏΠ°Π΄ΡƒΡ‚. Из-Π·Π° этого Redis большС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для сохранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ кСша.

Π’ РСдисС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… вычислСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»Π³ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ.

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· ΠžΠ—Π£ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… миллисСкунд, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°Π·Ρ‹ быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΌΠΈ Π‘Π”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ‰ΡƒΡ‚ ΠΈ ΠΎΡ‚Π΄Π°ΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с диска.

Установка Redis

Для установки Redis потрСбуСтся Mac ΠΈΠ»ΠΈ Linux. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ для Windows потрСбуСтся подсистСма WSL, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

sudo apt-get install redis

И ΠΏΠΎΡ‚ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ ввСсти ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ своСй ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Linux

БСйчас остаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвСр рСдиса:

redis-server
 
// ΠΈΠ»ΠΈ Ρ‚Π°ΠΊΠΈΠΌ способом:
 
sudo service redis-server start

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сСрвСр, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ shutdown

redis-cli shutdown NOSAVE
 
// ΠΈΠ»ΠΈ...
 
sudo service redis-server stop

Π”Π°Π»Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» WSL ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ CLI РСдиса:

redis-cli

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Redis

ПослС открытия CLI рСдиса ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π°ΠΌΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ - Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ SET Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Valery Π² ΠΊΠ»ΡŽΡ‡ name

|400

И Π΄Π°Π»Π΅Π΅ Ρ‡Π΅Ρ€Π΅Π· GET ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

|400

Π’Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ запись Ρ‡Π΅Ρ€Π΅Π· DEL. Π’ΡƒΡ‚ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Redis ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с числом (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΎΡΡŒ Π² Π±Π°Π·Π΅ Π² Π²ΠΈΠ΄Π΅ строки).

ПослС ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

|400

Π§Π΅Ρ€Π΅Π· Exists ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° (0 ΠΈΠ»ΠΈ 1)

|400

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ KEYS ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ вывСсти ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌΡƒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρƒ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½Π°ΠΌ ΠΊΠ»ΡŽΡ‡ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ вывСсти всС ΠΊΠ»ΡŽΡ‡ΠΈ, Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ *

|400

Если Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ flushall, Ρ‚ΠΎ ΠΎΠ½Π° очистит вСсь кСш (всС Π΄Π°Π½Π½Ρ‹Π΅)

|400

И Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ консоль, ΠΊΠΎΠ³Π΄Π° Π»ΠΎΠ³ΠΎΠ² стало слишком ΠΌΠ½ΠΎΠ³ΠΎ

clear

Handling Expirations

Команда TTL позволяСт Π½Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°. Если ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -1, Ρ‚ΠΎ врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΊΠ»ΡŽΡ‡Π°, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ EXPIRE ΠΊΠ»ΡŽΡ‡ врСмя ΠΈ ttl Π½Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ отсчёт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сущСствования ΠΊΠ»ΡŽΡ‡Π°. Когда ttl ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ -2, Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½

Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ SETEX ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сразу ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΊΠ»ΡŽΡ‡Π°

Lists

Π’Π°ΠΊ ΠΆΠ΅ Redis ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ массивов Π² Π²ΠΈΠ΄Π΅ списков.

Команда lpush имя_списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ добавляСт запись Π² Π½Π°Ρ‡Π°Π»ΠΎ списка (список создаётся ΠΈΠ»ΠΈ выбираСтся ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ значСния), Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° rpush добавляСт запись Π² ΠΊΠΎΠ½Π΅Ρ† списка.

Команда lrange список ΠΎΡ‚ΠΊΡƒΠ΄Π° Π΄ΠΎΠΊΡƒΠ΄Π° позволяСт вывСсти Π½ΡƒΠΆΠ½Ρ‹Π΅ значСния списка. Если ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ элСмСнтом Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ -1, Ρ‚ΠΎ вывСдСтся вСсь список.

Команда LPOP ΡƒΠ΄Π°Π»ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π°Ρ‡Π°Π»Π° списка, Π° RPOP ΠΈΠ· ΠΊΠΎΠ½Ρ†Π° списка

Sets

Π’Π°ΠΊ ΠΆΠ΅ Π² Redis Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ массивов, состоящих Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ Π² JS.

Команда SADD позволяСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² список. Если ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ с Ρ‚Π΅ΠΌ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ 0, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ список Π½Π΅ Π΄Π°Ρ‘Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ значСния. SMEMBERS имя_списка позволяСт вывСсти всС значСния списка.

Команда SREM позволяСт ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ список ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ

Hashes

Π₯эши Redis - это Ρ‚ΠΈΠΏΡ‹ записСй, структурированныС ΠΊΠ°ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠ°Ρ€ ΠΏΠΎΠ»Π΅-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΡΡˆΠΈ, срСди ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, для прСдставлСния Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ хранСния Π³Ρ€ΡƒΠΏΠΏ счСтчиков.

  • HSET - установка значСния Π² Ρ…Π΅Ρˆ
  • HGETALL - ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС значСния ΠΈΠ· Ρ…Π΅ΡˆΠ°
  • HDEL - ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ…Π΅ΡˆΠ°
  • HEXISTS - ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ сущСствованиС ΠΊΠ»ΡŽΡ‡Π° Π² Ρ…Π΅ΡˆΠ΅