TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
БЕЗБТ Истории аналитика

23 Apr, 19:15

Open in Telegram Share Report

Удивительно наблюдать, как понемногу смешиваются специализации в IT - еще года полтора назад никто и не подумал бы спрашивать на собеседованиях чуть глубже про технические знания, к примеру про NoSql и Redis в частности, а теперь вообще легко. Впрочем, а почему бы и нет, мы должны быть любознательны, причем и в техническую, и бизнесовую часть.
Поэтому в этот раз можно немного ликбеза по тому, что же такое Redis?

1️⃣ это хранилище данных NoSQL, которое хранится не на жестком диске, а в оперативке (in-memory), пока все просто. Оперативка дороже, но зато запись в нее во много раз быстрее, чем на диск, так что из плюсов - быстродействие, из минусов - отказоустойчивость

2️⃣ формат данных - это не просто ключ-значение, как обычно отвечают. Есть несколько типов:

- строка (string) - фактически это любой массив байт, где может быть текст, число, сериализованный JSON, бинарный код картинки и так далее. Сериализация - есичо, это преобразование того, что мы видим на экране в то, что лежит в памяти компудахтера, то есть мы видим текст, а в памяти лежит длинная строчка байт.
- хэш (hash) - это коллекция пар "поле-значение" для одного ключа. Ладно, на примере - допустим у нас есть пользователь, у него есть отображаемое имя и email, вот эти два "поля" можно сохранить в привязке к 1 ключу в базе, это сэкономит память
- список (list) - фактически связный список строк под одним ключом. Redis позволяет очень быстро вставлять и выкидывать сообщения с обоих концов списка. Самый частый пример - список последних/частых запросов, искать по нему не нужно (это медленно), а вот просто по FIFO добавлять и выкидывать нужно быстро.
- множество и упорядоченное множество (set/sorted set) - если в хэше у нас "поле-значение", то тут просто массив значений под одним ключом. Разница между обычным множеством и упорядоченным тупо в том, что во втором случае для каждого значения из массива есть еще и число score. Например массив игроков и их очков.

3️⃣ базовые команды - это инструкции, как в SQL, но, заточенные под типы данных выше
- SET/GET - очень просто, задаем значение для строки и получаем его
- HSET/HGET - догадаетесь по первой букве? да, задаем значение для хэша и получаем его же
- LPUSH/RPUSH/LPOP/RPOP - добавляем (RUSH) слева (L) или справа (R), либо выкидываем (POP) таким же образом
- SADD/SMEMBERS - добавить множество, получить все элементы
- ZADD/ZRANGE - добавить упорядоченное множество, получить множество, отсортированное по возрастанию score
Чуть больше про команды вот тут - https://habr.com/ru/articles/485672/

4️⃣ Pub/Sub - эти две функции фактически превращают Redis в брокер сообщений.
Фактически у нас есть некий издатель, канал и множество подписчиков, НО отправка сообщений похожа на семантику at most once в kafka. Аналогия с "выстрелил и забыл" здесь очень подходящая.

Так, база есть, в следующем посту распишу про стратегии кэширования, время жизни записей и инвалидацию, а то уже места не хватает)
@nobrstories #Redis

184 0 4 5
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot