Redis, съкратено от Remote Dictionary Server, е BSD-лицензиран, отворен код в паметта, съхраняващ структура на данни ключ-стойност, написан на език C от Salvatore Sanfillipo и беше пуснат за първи път на 10 май 2009 г. В зависимост от това как е конфигуриран , Redis може да действа като база данни, кеш или посредник на съобщения. Важно е да се отбележи, че Redis е система за бази данни NoSQL. Това означава, че за разлика от SQL (Structured Query Language), управлявани от системи за бази данни като MySQL, PostgreSQL и Oracle, Redis не съхранява данни в добре дефинирани схеми на база данни, които представляват таблици, редове и колони. Вместо това Redis съхранява данни в структури от данни, което го прави много гъвкав за използване. Хостингът на ScaleGrid за Redis™* ви позволява да автоматизирате вашите отнемащи време операции за различни различни случаи на използване на Redis. В този блог очертаваме най-добрите случаи на използване на Redis според различните основни типове структура на данни.
Структури от данни в Redis
Нека да разгледаме някои от типовете данни, които Redis поддържа. В Redis имаме низове, списъци, набори, сортирани набори и хешове, които ще разгледаме в тази статия. Освен това имаме други типове данни като растерни изображения, хиперлогове и геопространствени индекси със заявки за радиус и потоци. Въпреки че има някои инструменти на Redis GUI, написани от общността на Redis, командният ред е най-важният клиент, за разлика от популярните потребители на SQL бази данни, които често предпочитат системи за управление на GUI, например phpMyAdmin за MySQL и PgAdmin за PostgreSQL.
Нека разгледаме по-отблизо типовете данни, които съществуват в Redis.
Redis Strings
Redis Стринговете са най-основният тип стойност на Redis, използвана от всички други типове структура на данни, и са доста подобни на низовете в други езици за програмиране като Java или Python. Низовете, които могат да съдържат всякакъв тип данни, се считат за двоични безопасни и имат максимална дължина от 512MB. Ето няколко полезни команди за низове на Redis:
За съхраняване на низ „john “ под ключ като „студент“ в Redis изпълнете командата:
ЗАДАДЕТЕ „студент“ „джон“
За да извлечете низа, използвайте командата GET, както е показано:
ВЗЕМЕТЕ „студент“
За да изтриете низа, съдържащ се в ключа, използвайте командата DEL:
DEL „ученик“
Случаи на използване на низове на Redis
- Кеш на сесията: Много уебсайтове използват Redis Strings, за да създадат кеш на сесията, за да ускорят изживяването на уебсайта си чрез кеширане на HTML фрагменти или страници. Тъй като данните се съхраняват временно в RAM паметта, този атрибут прави Redis перфектен избор като кеш на сесията. Той може временно да съхранява специфични за потребителя данни, например артикули, съхранявани в пазарска количка в онлайн магазин, което е от решаващо значение, тъй като потребителите ви не губят данните си в случай, че излязат или загубят връзка.
- Опашки: Всяко приложение, което се занимава със задръстванията на трафика, съобщенията, събирането на данни, управлението на задачи или маршрутизирането на опаковки, трябва да обмисли Redis Queue, тъй като това може да ви помогне да управлявате размера на опашката си по скорост на пристигане и заминаване за разпределение на ресурсите.
- Използване и таксуване с измерване: По-малко известен случай на използване на Redis Strings е измерването в реално време за модели на ценообразуване, базирани на потреблението. Това позволява на SaaS платформите, които таксуват въз основа на действителното използване, за да измерват активността на своите клиенти, като например в телекомуникационната индустрия, където могат да таксуват за текстови съобщения или минути.
Списъци на Redis
Списъците съдържат низове, които са сортирани по реда на вмъкване. С Redis Lists можете да добавяте елементи към началото или опашката на списъците, което е много полезно за опашката на задания. Ако има по-спешни задачи, които трябва да бъдат изпълнени, те могат да бъдат избутани пред други задачи с по-нисък приоритет в опашката. Ще използваме командата LPUSH, за да вмъкнем елемент в главата или вляво от низа, и командата RPUSH за вмъкване в опашката или вдясно от нашия низ. Нека разгледаме пример:
LPUSH списък x # сега списъкът е "x"
LPUSH списък y # сега списъкът е "y","x"
RPUSH списък z # сега списъкът е "y","x","z" (забележете как елементът „z“ беше добавен в края на списъка чрез команда RPUSH)
Случаи на употреба на Redis List
- Сайтове за социални мрежи: Социалните платформи като Twitter използват Redis Lists, за да попълват своите времеви линии или емисии на начална страница и могат да персонализират горната част на своите емисии с набиращи популярност туитове или истории.
- RSS емисии: Създавайте новинарски емисии от персонализирани източници, където можете да изтеглите най-новите актуализации и да позволите на заинтересованите последователи да се абонират за вашата RSS емисия.
- Класове: Форуми като Reddit и други платформи за гласуване използват Redis Lists, за да добавят статии към класацията и да сортират по най-много гласувани записи.
Научете как да създадете своя собствена Twitter емисия в нашите кеширащи туитове, използвайки публикация в блога на Node.js, Redis и Socket.io.
Водещи случаи на използване на #Redis по типове структура на основни данни Щракнете за туитНабори на Redis
Наборите на Redis са мощни типове данни, които поддържат мощни операции като пресечки и обединения. Те не са в никакъв ред и обикновено се използват, когато искате да извършите одит и да видите връзките между различни променливи. Наборите са сравнително бързи и независимо от броя на елементите, които сте съхранили, добавянето или премахването на елементи в набор ще отнеме същото време. Освен това наборите не позволяват дублиране на ключове или дублирани членове, така че ключ, добавен няколко пъти в набор, просто ще бъде игнориран. Това се управлява от функция, наречена SADD, която избягва дублирането на множество подобни записи. Атрибутът SADD може да се използва при проверка на уникални стойности, а също и за планиране на задачи, изпълнявани във фонов режим, включително cron задачи, които са автоматизирани скриптове.
Те са особено полезни за анализиране на поведението на клиентите в реално време за вашия сайт за онлайн пазаруване. Например, ако управлявате онлайн магазин за дрехи, Redis Sorted Sets използват техника за съвпадение на връзки, като обединения, пресичания и изваждане (често прилагани в диаграмите на Venn), за да дадат точна картина на поведението на клиентите. Можете да извлечете данни за моделите на пазаруване между половете, кои дрехи се продават най-много и кои часове записват най-високи продажби.
Redis задава случаи на употреба
- Анализиране на продажбите при електронна търговия: Много онлайн магазини използват Redis Sets за анализиране на поведението на клиентите, като например търсения или покупки за конкретна продуктова категория или подкатегория. Например собственик на онлайн книжарница може да разбере колко клиенти са закупили медицински книги по психология.
- Проследяване на IP адрес: Redis Sets са чудесен инструмент за разработчици, които искат да анализират всички IP адреси, които са посетили конкретна страница на уебсайт или публикация в блога, и да могат да игнорират всички дубликати за уникални посетители с тяхната функция SADD.
- Неподходящо филтриране на съдържанието: За всяко приложение, което събира информация от потребителя, е добра идея да приложите филтриране на съдържанието за неподходящи думи и можете да направите това с Redis Sets, като добавите думи, които искате да филтрирате, към клавиш SET и командата SADD.
Сортирани набори
Както подсказва името, Redis Sorted Sets са колекция от низове, които присвояват ред на вашите елементи и са една от най-модерните структури от данни в Redis. Те са подобни на наборите Redis, само че наборите нямат ред, докато сортираните набори свързват всеки член с резултат. Сортираните набори са известни с това, че са много бързи, тъй като можете да върнете подредени списъци и елементи за достъп във възможно най-кратък срок.
Случаи на използване на сортирани набори Redis
- Платформи за въпроси и отговори: Много платформи за въпроси и отговори, като Stack Overflow и Quora, използват Redis Sorted Sets, за да класират най-високо гласуваните отговори за всеки предложен въпрос, за да гарантират, че най-качественото съдържание е посочено в горната част на страницата.
- Таблици на приложения за игри: Приложенията за онлайн игри използват Redis Sorted Sets, за да поддържат своите списъци с високи резултати, тъй като резултатите могат да се повтарят, но низовете, които съдържат уникалните потребителски данни, не могат.
- Услуга за планиране на задачи: Redis Sorted Sets са чудесен инструмент за услуга за планиране на задачи, тъй като можете да свържете резултат, за да класирате приоритета на задача във вашата опашка. За всяка задача, за която не е отбелязан резултат, можете да използвате опцията ТЕГЛА със стойност по подразбиране 1.
- Географско хеширане: API за гео индексиране на Redis използва сортиран набор за техниката Geo Hash, която ви позволява да индексирате местоположения въз основа на географска ширина и дължина, превръщайки многоизмерните данни в линейни данни.
Redis хешове
Redis хешовете са карти между низови полета и низови стойности. Това е основният тип данни, ако трябва по същество да създадете контейнер с уникални полета и техните стойности за представяне на обекти. Хешовете ви позволяват да съхранявате прилично количество полета, до 232 – 1 двойки поле-стойност (повече от 4 милиарда), като същевременно заема много малко място. Трябва да използвате Redis хешове, когато е възможно, тъй като можете да използвате малък екземпляр на Redis за съхраняване на милиони обекти. Можете да използвате основни хеш командни операции, като get, set, exists, в допълнение към много разширени операции.
Случаи на използване на хешове на Redis
- Потребителски профили: Много уеб приложения използват Redis хешове за своите потребителски профили, тъй като могат да използват един хеш за всички потребителски полета, като име, фамилия, имейл, парола и т.н.
- Потребителски публикации: Социалните платформи като Instagram използват Redis хешове, за да картографират всички архивирани потребителски снимки или публикации обратно към един потребител. Механизмът за хеширане им позволява да търсят и връщат стойности много бързо, да поставят данните в паметта и да използват постоянството на данните в случай, че някой от сървърите им умре.
- Съхраняване на показатели за няколко наематели: Приложенията с множество наематели могат да използват хешовете на Redis, за да записват и съхраняват своите продукти и показатели за продажби по начин, който гарантира солидно разделяне между всеки наемател, тъй като хешовете могат да бъдат кодирани ефективно в много малко пространство в паметта.
Кой използва Redis?
Redis намери огромен пазарен дял в индустриите за пътувания и гостоприемство, форуми на общността, социални медии, SaaS и електронна търговия, за да назовем само няколко. Някои от водещите компании, които използват Redis, включват Pinterest, Uber, Slack, Airbnb, Twitter и Stack Overflow. Ето някои статистически данни за популярността на Redis днес:
- 4107 компании съобщиха, че използват Redis в StackShare
- 8 759 разработчици са заявили, че използват Redis в StackShare
- 38 094 потребители на GitHub са отбелязали Redis със звезда
- #8 класирана база данни на DB-Engines с резултат 144,08