Redis зберігає ключі, що вказують на значення. Клавішами може бути будь-яке двійкове значення до розумного розміру (для читання та налагодження рекомендується використовувати короткі ASCII рядки). Значення є одним із п’яти типових типів даних Redis.
1. рядки - послідовність бінарних безпечних байтів до 512 Мб
2.hashes - сукупність пар ключових значень
3.lists - список колекцій рядків у порядку вставки
4.sets - колекція унікальних рядків без впорядкування
5. набір рядків - це сукупність унікальних рядків, упорядкованих за бажанням, визначеним користувачем
Струни
Рядок Redis - це послідовність байтів.
Рядки в Redis є бінарними безпечними (тобто вони мають відому довжину, яка не визначається якимись спеціальними символами, що закінчуються), тому ви можете зберігати що-небудь до 512 мегабайт в одній рядку.
Струни - це канонічна концепція "зберігання ключових цінностей". У вас є ключ, який вказує на значення, де і ключ, і значення є текстовими або двійковими рядками.
Про всі можливі операції над рядками див.
Http://redis.io/commands/#string
Хеші
Хеш Redis - це сукупність пар ключових значень.
Хеш Redis містить багато пар ключових значень, де кожен ключ і значення є рядком. Redis хеші не підтримують складні значення безпосередньо (тобто, у хеш-полі не може бути значення списку чи набору чи іншого хеша), але ви можете використовувати хеш-поля для вказівки на інші комплексні значення верхнього рівня. Єдина спеціальна операція, яку ви можете виконати на значеннях хеш-поля, - приріст / зменшення атомного числового вмісту.
Хеші Redis можна думати двома способами: як пряме представлення об'єкта і як спосіб компактного зберігання багатьох малих значень.
Безпосередні уявлення об'єктів зрозумілі просто. Об'єкти мають ім'я (ключ хеша) та набір внутрішніх ключів зі значеннями. Дивіться приклад нижче для, ну, приклад.
Зберігання багатьох малих значень за допомогою хеша - це розумна техніка масового зберігання даних Redis. Якщо хеш має невелику кількість полів (~ 100), Redis оптимізує ефективність зберігання та доступу до всього хешу. Невелика оптимізація хеш-пам'яті Redis викликає цікаву поведінку: ефективніше мати 100 хешів із 100 внутрішніми ключами та значеннями, а не мати 10 000 клавіш верхнього рівня, що вказують на рядкові значення. Використання хедів Redis для оптимізації зберігання даних таким чином вимагає додаткових накладних програм програмування для відстеження того, де дані закінчуються, але якщо ваше зберігання даних, головним чином, базується на рядках, ви можете зберегти багато накладних витрат пам'яті, використовуючи цей дивний фокус.
Про всі можливі операції над хешами див. У хеш-документах
Списки
Списки Redis діють як пов'язані списки.
Ви можете вставляти в списки, видаляти з них та переміщувати їх з головою чи хвостом списку.
Використовуйте списки, коли потрібно підтримувати значення у тому порядку, в який вони були вставлені. (Redis дає вам можливість вставити в будь-яку довільну позицію списку, якщо вам потрібно, але ефективність вставки знизиться, якщо ви вставите далеко від початкової позиції.)
Списки Redis часто використовуються як черги виробників / споживачів. Вставте елементи в список, а потім виведіть елементи зі списку. Що станеться, якщо ваші споживачі намагаються вийти зі списку без елементів? Ви можете попросити Redis дочекатися появи елемента і повернути його вам негайно, коли він буде доданий. Це перетворює Redis у чергу повідомлень / подій / роботи / завдання / системи повідомлень у реальному часі.
Ви можете атомно видалити елементи з будь-якого кінця списку, що дозволяє будь-якому списку оброблятись як стек чи черга.
Ви також можете підтримувати списки фіксованої довжини (обмежені колекції), обрізаючи список до певного розміру після кожного вставки.
Про всі можливі операції зі списками див. Документи зі списками
Набори
Набори Redis - це, ну, набори.
Набір Redis містить унікальні не упорядковані рядки Redis, де кожна струна існує лише один раз у наборі. Якщо ви додасте той самий елемент десять разів до набору, він відобразиться лише один раз. Набори чудово підходять для того, щоб лінько забезпечити щось існує хоча б раз, не турбуючись про те, що копії елементів накопичуються та витрачають місце. Ви можете додавати ту саму рядок стільки разів, скільки вам потрібно, не потрібно перевіряти, чи вона вже існує.
Набори швидкі для перевірки членства, вставки та видалення членів у наборі.
Набори мають ефективні задані операції, як ви і очікували. Ви можете взяти з'єднання, перетин та різницю декількох множин одночасно. Результати можуть бути повернені абоненту або результати можуть бути збережені в новому наборі для подальшого використання.
Набори мають постійний доступ до часу для перевірки членства (на відміну від списків), а Redis навіть має зручне видалення та повернення випадкових членів ("з'являється випадковий елемент з набору") або випадковий член, що повертається без заміни ("дай мені 30 випадкових ішох унікальних користувачів ") або із заміною (" дайте мені 7 карток, але після кожного вибору поверніть картку назад, щоб вона потенційно могла повторно взяти пробу ").
Про всі можливі операції над наборами див. Документи про набори .
Відсортовані набори
Відсортовані набори Redis - це набори із впорядкованим користувачем упорядкуванням.
Для простоти відсортований набір можна думати як двійкове дерево з унікальними елементами. (Повторно відсортовані набори - це фактично пропуск списків .) Порядок сортування елементів визначається оцінкою кожного елемента.
Відсортовані набори все ще є множинами. Елементи можуть з’являтися лише один раз у наборі. Елемент, для унікальності, визначається його рядковим вмістом. Вставляючи елемент "яблуко" з оцінкою 3 сортування, потім вставляючи елемент "яблуко" з сортуванням 500 результатів в один елемент "яблуко" з сортувальним балом 500 у відсортованому наборі. Набори унікальні лише на основі даних, а не на парах (оцінка, дані).
Переконайтесь, що ваша модель даних покладається на вміст рядка, а не на бал елемента за унікальність. Оцінки можуть бути повторені (або навіть нульові), але, востаннє, елементи набору можуть існувати лише один раз у відсортованому наборі. Наприклад, якщо ви спробуєте зберегти історію входу кожного користувача як відсортований набір, зробивши показник епохою входу та значенням ідентифікатора користувача, ви в кінцевому підсумку будете зберігати лише останню епоху входу для всіх своїх користувачів. Ваш набір збільшиться до розміру вашої користувальницької бази, а не до потрібного розміру входу * *.
Елементи додаються до вашого набору з балами. Ви можете оновити бал будь-якого елемента в будь-який час, просто знову додайте елемент з новою оцінкою. Оцінки представлені парними знаками з плаваючою комою, тому за потреби можна вказати деталізацію часових позначок високої точності. Кілька елементів можуть мати однаковий бал.
Ви можете отримати елементи кількома різними способами. Оскільки все відсортовано, ви можете запитати елементи, починаючи з найнижчих балів. Ви можете запитати елементи, починаючи з найвищих балів ("у зворотному порядку"). Ви можете запитувати елементи за їх сортуванням у натуральному чи зворотному порядку.
Про всі можливі операції над відсортованими наборами дивіться документи про відсортовані набори.