Redis — розподілене сховище пар ключ-значення, які зберігаються в оперативній пам'яті, з можливістю забезпечувати довговічність зберігання на бажання користувача. Це програмне забезпечення з відкритим початковим кодом написане на ANSI C. Розробка Redis фінансується VMware.Початковий код проєкту поширюються в рамках ліцензії BSD.
Тип | |
---|---|
Розробник | |
Перший випуск | 2009 |
Стабільний випуск | 4.0.0 (14 липня 2017 ) |
Операційна система | Крос-платформне |
Мова програмування | ANSI C |
Доступні мови | Англійська |
Стан розробки | Активне |
Ліцензія | BSD |
Репозиторій | github.com/redis/redis |
Вебсайт | redis.io |
|
Redis надає схожі на Memcached функції для зберігання даних в форматі ключ/значення, розширені підтримкою структурованих даних, таких як списки, хеші і множини. На відміну від Memcached, Redis забезпечує постійне зберігання даних на диску і гарантує збереження БД у разі аварійного завершення роботи. Клієнтські бібліотеки доступні для більшості популярних мов, включаючи Perl, Python, PHP, Java, Ruby і Tcl.
Є підтримка транзакцій, що дозволяють виконати за один крок групу команд, гарантуючи несуперечність і послідовність (команди від інших запитів не можуть вклинитися) виконання заданого набору команд, а в разі проблем дозволяючи відкотити зміни. Всі дані у повному обсязі кешуються в оперативній пам'яті. Зберігання всіх даних в оперативній пам'яті дозволяє досягнути значної продуктивності: при тестуванні Redis на сервері з CPU Xeon X3320 2.5 ГГц вдалося забезпечити 110000 операцій запису і 81000 операцій читання за секунду.
Для управління даними підтримуються такі команди, як інкремент/декремент, стандартні операції над списками і множинами (об'єднання, перетин), перейменування ключів, множинні вибірки та функції сортування. Підтримується два режими зберігання: періодична синхронізація даних на диск і ведення на диску логу змін. У другому випадку гарантується повне збереження всіх змін. Можлива організація master-slave реплікації даних на кілька серверів, здійснювана в неблокуючому режимі. Доступний також режим обміну повідомленнями «публікація/підписка», при якому створюється канал, повідомлення з якого поширюються клієнтам, що підписані на канал.
Підтримувані мови
Мови, для яких існують прив'язки бібліотек Redis:
- ActionScript
- C
- C#
- Clojure
- Common Lisp
- Erlang
- Go
- Haskell
- haXe
- Java
- Node.js
- Lua
- Objective-C
- Perl
- PHP
- Pure Data
- Python
- Ruby
- Scala
- Smalltalk
- Tcl.
Від версії 2.6 у Redis вбудований інтерпретатор Lua і підтримуються скрипти на мові Lua, що працюють на стороні сервера.
Модель даних
На зовнішньому рівні абстракції, модель даних в Redis це асоціативний масив в якому ключі відображаються в значення. Основною відмінністю між Redis та іншими базами такого типу в тому, що значення словника не обмежені рядковими типами. На додачу до рядків підтримуються наступні абстрактні типи даних:
- Списки рядків
- Множини рядків (невпорядкований набір неповторюваних елементів)
- Впорядковані множини рядків (набори неповторюваних елементів впорядкованих за пов'язаним значенням з рухомою комою)
- Хеші в яких ключі і значення є рядками
Тип значення визначає які операції є доступними для цього значення. Redis підтримує високорівневі атомні операції на стороні сервера, такі як перетин, об'єднання та різниця між множинами та списками.
Персистентність
Redis зазвичай тримає всі дані в оперативній пам'яті. До версії 2.4 існувала можливість налаштувати роботу з віртуальною пам'яттю але зараз це не рекомендовано. Персистентність досягається двома шляхами, перший з яких називається знімкування (англ. snapshotting), і є напівперсистентним режимом довговічності, в якому дані час від часу асинхронно передаються з пам'яті на диск. З версії 1.1 безпечнішою альтернативою є файл який можна лише доповнювати (журнал транзакцій), і в який доповнюється всіма операціями що модифікують дані в пам'яті. Redis має можливість переписувати файл з нуля в фоновому режимі для того щоб уникнути нескінченного росту його довжини.
Реплікація і розподіленість
Redis підтримує реплікацію master-slave. Дані з будь-якого сервера Redis можуть реплікуватись довільною кількістю разів. Реплікація корисна для масштабування читання (але не запису) чи надлишковості даних.
Починаючи з версії 3.0, що вийшла навесні 2015, з базою інтегрований Redis Cluster для створення розподілених сховищ. Redis Cluster дозволяє розгорнути конфігурацію в якій дані автоматично розподіляються між декількома вузлами Redis. Можливе створення відмовостійких конфігурацій, при яких дані дублюються на різних вузлах і вихід одного вузла з ладу не призводить до зупинки,
Продуктивність
Коли в довговічності даних немає потреби, розміщення даних в пам'яті допомагає Redis показувати набагато кращі результати ніж СУБД які записують кожну зміну на диск, перш ніж вважають транзакцію завершеною. Між операціями читання та запису немає помітної різниці в швидкості.
Див. також
Примітки
- Jeremy Zawodny, Redis: Lightweight key/value Store That Goes the Extra Mile [ 28 червня 2010 у Wayback Machine.], , August 31, 2009
- Isabel Drost and Jan Lehnard (29 October 2009), Happenings: NoSQL Conference, Berlin [ 22 липня 2011 у Wayback Machine.], The H. Slides [ 19 липня 2011 у Wayback Machine.] for the Redis presentation. Summary [ 7 липня 2011 у Wayback Machine.].
- Billy Newport (IBM): «Evolving the Key/Value Programming Model to a Higher Level [ 10 лютого 2011 у Wayback Machine.]» Qcon Conference 2009 San Francisco.
- . Архів оригіналу за 22 березня 2010. Процитовано 3 листопада 2011.
- . Архів оригіналу за 22 березня 2010. Процитовано 3 листопада 2011.
- Релиз БД Redis 2.6 [ 25 жовтня 2012 у Wayback Machine.] // opennet.ru 24.10.2012
- . Архів оригіналу за 8 лютого 2014. Процитовано 3 листопада 2011.
- Документація Redis «Virtual Memory» [ 24 грудня 2010 у Wayback Machine.], redis.io
- . Архів оригіналу за 29 травня 2013. Процитовано 3 листопада 2011.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - Redis 3.0.0 is out. Архів оригіналу за 22 січня 2011. Процитовано 2 квітня 2015.
- . Архів оригіналу за 2 квітня 2015. Процитовано 2 квітня 2015.
- FAQ. Архів оригіналу за 16 липня 2013. Процитовано 3 листопада 2011.
Посилання
- Офіційний сайт проєкту [ 2 листопада 2011 у Wayback Machine.]
- PHP programming examples for Redis [ 13 листопада 2011 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Redis rozpodilene shovishe par klyuch znachennya yaki zberigayutsya v operativnij pam yati z mozhlivistyu zabezpechuvati dovgovichnist zberigannya na bazhannya koristuvacha Ce programne zabezpechennya z vidkritim pochatkovim kodom napisane na ANSI C Rozrobka Redis finansuyetsya VMware Pochatkovij kod proyektu poshiryuyutsya v ramkah licenziyi BSD RedisTipRozrobnikPershij vipusk2009Stabilnij vipusk4 0 0 14 lipnya 2017 6 rokiv tomu 2017 07 14 Operacijna sistemaKros platformneMova programuvannyaANSI CDostupni moviAnglijskaStan rozrobkiAktivneLicenziyaBSDRepozitorijgithub com redis redisVebsajtredis io Mediafajli u Vikishovishi Redis nadaye shozhi na Memcached funkciyi dlya zberigannya danih v formati klyuch znachennya rozshireni pidtrimkoyu strukturovanih danih takih yak spiski heshi i mnozhini Na vidminu vid Memcached Redis zabezpechuye postijne zberigannya danih na disku i garantuye zberezhennya BD u razi avarijnogo zavershennya roboti Kliyentski biblioteki dostupni dlya bilshosti populyarnih mov vklyuchayuchi Perl Python PHP Java Ruby i Tcl Ye pidtrimka tranzakcij sho dozvolyayut vikonati za odin krok grupu komand garantuyuchi nesuperechnist i poslidovnist komandi vid inshih zapitiv ne mozhut vklinitisya vikonannya zadanogo naboru komand a v razi problem dozvolyayuchi vidkotiti zmini Vsi dani u povnomu obsyazi keshuyutsya v operativnij pam yati Zberigannya vsih danih v operativnij pam yati dozvolyaye dosyagnuti znachnoyi produktivnosti pri testuvanni Redis na serveri z CPU Xeon X3320 2 5 GGc vdalosya zabezpechiti 110000 operacij zapisu i 81000 operacij chitannya za sekundu Dlya upravlinnya danimi pidtrimuyutsya taki komandi yak inkrement dekrement standartni operaciyi nad spiskami i mnozhinami ob yednannya peretin perejmenuvannya klyuchiv mnozhinni vibirki ta funkciyi sortuvannya Pidtrimuyetsya dva rezhimi zberigannya periodichna sinhronizaciya danih na disk i vedennya na disku logu zmin U drugomu vipadku garantuyetsya povne zberezhennya vsih zmin Mozhliva organizaciya master slave replikaciyi danih na kilka serveriv zdijsnyuvana v neblokuyuchomu rezhimi Dostupnij takozh rezhim obminu povidomlennyami publikaciya pidpiska pri yakomu stvoryuyetsya kanal povidomlennya z yakogo poshiryuyutsya kliyentam sho pidpisani na kanal Pidtrimuvani moviMovi dlya yakih isnuyut priv yazki bibliotek Redis ActionScript C C C Clojure Common Lisp Erlang Go Haskell haXe Java Node js Lua Objective C Perl PHP Pure Data Python Ruby Scala Smalltalk Tcl Vid versiyi 2 6 u Redis vbudovanij interpretator Lua i pidtrimuyutsya skripti na movi Lua sho pracyuyut na storoni servera Model danihNa zovnishnomu rivni abstrakciyi model danih v Redis ce asociativnij masiv v yakomu klyuchi vidobrazhayutsya v znachennya Osnovnoyu vidminnistyu mizh Redis ta inshimi bazami takogo tipu v tomu sho znachennya slovnika ne obmezheni ryadkovimi tipami Na dodachu do ryadkiv pidtrimuyutsya nastupni abstraktni tipi danih Spiski ryadkiv Mnozhini ryadkiv nevporyadkovanij nabir nepovtoryuvanih elementiv Vporyadkovani mnozhini ryadkiv nabori nepovtoryuvanih elementiv vporyadkovanih za pov yazanim znachennyam z ruhomoyu komoyu Heshi v yakih klyuchi i znachennya ye ryadkami Tip znachennya viznachaye yaki operaciyi ye dostupnimi dlya cogo znachennya Redis pidtrimuye visokorivnevi atomni operaciyi na storoni servera taki yak peretin ob yednannya ta riznicya mizh mnozhinami ta spiskami PersistentnistRedis zazvichaj trimaye vsi dani v operativnij pam yati Do versiyi 2 4 isnuvala mozhlivist nalashtuvati robotu z virtualnoyu pam yattyu ale zaraz ce ne rekomendovano Persistentnist dosyagayetsya dvoma shlyahami pershij z yakih nazivayetsya znimkuvannya angl snapshotting i ye napivpersistentnim rezhimom dovgovichnosti v yakomu dani chas vid chasu asinhronno peredayutsya z pam yati na disk Z versiyi 1 1 bezpechnishoyu alternativoyu ye fajl yakij mozhna lishe dopovnyuvati zhurnal tranzakcij i v yakij dopovnyuyetsya vsima operaciyami sho modifikuyut dani v pam yati Redis maye mozhlivist perepisuvati fajl z nulya v fonovomu rezhimi dlya togo shob uniknuti neskinchennogo rostu jogo dovzhini Replikaciya i rozpodilenistRedis pidtrimuye replikaciyu master slave Dani z bud yakogo servera Redis mozhut replikuvatis dovilnoyu kilkistyu raziv Replikaciya korisna dlya masshtabuvannya chitannya ale ne zapisu chi nadlishkovosti danih Pochinayuchi z versiyi 3 0 sho vijshla navesni 2015 z bazoyu integrovanij Redis Cluster dlya stvorennya rozpodilenih shovish Redis Cluster dozvolyaye rozgornuti konfiguraciyu v yakij dani avtomatichno rozpodilyayutsya mizh dekilkoma vuzlami Redis Mozhlive stvorennya vidmovostijkih konfiguracij pri yakih dani dublyuyutsya na riznih vuzlah i vihid odnogo vuzla z ladu ne prizvodit do zupinki ProduktivnistKoli v dovgovichnosti danih nemaye potrebi rozmishennya danih v pam yati dopomagaye Redis pokazuvati nabagato krashi rezultati nizh SUBD yaki zapisuyut kozhnu zminu na disk persh nizh vvazhayut tranzakciyu zavershenoyu Mizh operaciyami chitannya ta zapisu nemaye pomitnoyi riznici v shvidkosti Div takozhNoSQL Memcached Membase CassandraPrimitkiJeremy Zawodny Redis Lightweight key value Store That Goes the Extra Mile 28 chervnya 2010 u Wayback Machine August 31 2009 Isabel Drost and Jan Lehnard 29 October 2009 Happenings NoSQL Conference Berlin 22 lipnya 2011 u Wayback Machine The H Slides 19 lipnya 2011 u Wayback Machine for the Redis presentation Summary 7 lipnya 2011 u Wayback Machine Billy Newport IBM Evolving the Key Value Programming Model to a Higher Level 10 lyutogo 2011 u Wayback Machine Qcon Conference 2009 San Francisco Arhiv originalu za 22 bereznya 2010 Procitovano 3 listopada 2011 Arhiv originalu za 22 bereznya 2010 Procitovano 3 listopada 2011 Reliz BD Redis 2 6 25 zhovtnya 2012 u Wayback Machine opennet ru 24 10 2012 Arhiv originalu za 8 lyutogo 2014 Procitovano 3 listopada 2011 Dokumentaciya Redis Virtual Memory 24 grudnya 2010 u Wayback Machine redis io Arhiv originalu za 29 travnya 2013 Procitovano 3 listopada 2011 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Redis 3 0 0 is out Arhiv originalu za 22 sichnya 2011 Procitovano 2 kvitnya 2015 Arhiv originalu za 2 kvitnya 2015 Procitovano 2 kvitnya 2015 FAQ Arhiv originalu za 16 lipnya 2013 Procitovano 3 listopada 2011 PosilannyaOficijnij sajt proyektu 2 listopada 2011 u Wayback Machine PHP programming examples for Redis 13 listopada 2011 u Wayback Machine