Home  >  Article  >  Backend Development  >  Start with Redis cache from scratch

Start with Redis cache from scratch

不言
不言Original
2018-06-04 09:48:581709browse

This article mainly introduces how to start Redis cache from scratch. It has certain reference value. Now I share it with you. Friends in need can refer to it

  1. Redis introduction

Redis is an open source language using ANSI C #Write, support network, log-type, memory-based and persistent, Key-Valuedatabase, and provide multiple languagesAPI. From 2010#315,## The development of #Redis is hosted by VMware. Starting from 5 in #2013, Redis has been developed by PivotalSponsored. redis is a key-value

storage system. Similar to Memcached, it supports storing relatively more value types, including string( String)list(Linked list)set(SET)zset(sorted set --ordered set) and hash (hash type). These data types support push/pop, add/remove and fetch Intersection, union and difference and richer operations, and these operations are all atomic. On this basis, redis supports various sorting methods. Like memcached, in order to ensure efficiency, data is cached in memory. The difference is that redis will periodically write updated data to disk or write modification operations to additional record files, and on this basis, master-slave(Master-slave) Synchronization.

Redis — это высокопроизводительная база данных ключ-значение. Появление redis во многом компенсировало memcached этого типаkey/valueНедостаточное хранилище может сыграть очень хорошую дополнительную роль для реляционной базы данных в некоторых ситуациях. Он предоставляет Java, C/C , C#, PHP,JavaScript,Perl,Object-C , Python, Ruby, Erlang и другие клиенты, используйте очень удобный. [1]

##Redis поддерживает синхронизацию master-slave. Данные могут быть синхронизированы с главного сервера на любое количество подчиненных серверов, а подчиненный сервер может быть главным сервером, связанным с другими подчиненными серверами. Это позволяет Redis выполнять одноуровневую репликацию дерева. Сохранение может записывать данные намеренно или непреднамеренно. Поскольку механизм подписки на публикацию / полностью реализован, когда подчиненная база данных синхронизирует дерево где угодно, она может подписаться на канал и получить полную запись публикации сообщения главного сервера. Синхронизация полезна для масштабируемости и избыточности данных операций чтения. Адрес официального сайта

redis очень легко запомнить: это redis.io. (Я специально проверил и обнаружил, что суффикс доменного имени io принадлежит национальному доменному имени, которое британская территория в Индийском океане, то есть Британская территория в Индийском океане)

В настоящее время Vmware финансирует разработку и поддержание проект redis.

2. Установка Redis

Извлечение установочного файла

#После распаковки

Выполните команду make для компиляции

Компилируйте OK,

Введите каталог src


Работа терминала Redis-cli

Файл Redis-сервера для запуска службы Redis

Тестовый файл давления Redis-benchmark

Redis-check-xx Сценарий резервного файла проверки автомобиля

Создайте рабочий каталог Redis и скопируйте два запущенных файла в прошлое

Копируем файл конфигурации в прошлое

#3. Запускаем сервис Redis

Признаки успешного фронтенда запуск службы redis

./redis-server

В настоящее время возникла проблема. Текущую службу невозможно отключить. После выключения она исчезнет, ​​поэтому ее необходимо изменить.

Остановить службу Ctrl z

Сначала остановите службу redis

Используйте фон для запуска службы redis

vim redis.conf

Измените значение на «Да», чтобы сохранить и установить Запустить Redis в фоновом режиме

Начать снова

Я обнаружил, что он все еще запускается в интерфейс

#Включите его при запуске. Запустите файл конфигурации вместе

Проверьте процесс redis

Обнаружено, что Redis запущен

4. Простое использование

Три переменные установлены, и эти три переменные хранятся в памяти.

Как читать?

Получать!

5. Конкретные операции

1. Операция с ключами

В redis нельзя использовать «\n» и пробелы как дополнительно к содержимому компонента имени, другой контент может использоваться как часть имени ключа. Длина имени не требуется

Другими словами, это имя переменнойКодФункция##Вернуть количество ключей в текущая база данныхСрок действия ключа в секундахУкажите срок действия ключа Ttl key#Возвращает время действия ключа в секундах##Select db- indexПереместить ключ db-indexFlushdbFlushall

##Существует ключ

Существует ли он

Del key1 key2….

Удалить указанный ключ

Тип ключа

#Возвращает тип значения данного ключа

Шаблон ключа

Вернуть все ключи, соответствующие указанному шаблону

##Переименовать старый ключ newkey

Изменить имя

#Dbsize

Выбрать базу данных

Переместить ключ из текущей базы данных в указанную базу данных

#Удалить все ключи в текущей базе данных

Удалить все ключи во всех базах данных


Вот пример использования

2. Операция строкового типа

Строка — самый простой тип redis

Строка Redis может содержать любые данные, включая изображения jpg или сериализованные объекты

Максимальный предел одного значения — 1 Гбайт

##Установить значение ключаMset key1 value1…keyN valueNMget key1 key2 … keyNТо же, что и выше – операцияТо же, что и incr плюс указанное значение#То же, что и decr минус указанное значениеДобавить значение к строке указанного ключа##Substr key start endВозвращает строковое значение перехваченного ключа
Code

Функция

##Установить значение, соответствующее ключ к значению строкового типа

##Задайте значения нескольких ключей в Once

##Получение значений нескольких ключей одновременно

Incr key
Операция над значением ключа

## Ключ Decr

##Incrby целое число ключа

Decrby ключевое целое число

Добавить значение ключа

##

3.Введение и использование типа связанного списка «Список»

Тип списка на самом деле представляет собой двусвязный список

If вы хотите запросить 10 последних последних пользователей,

необходимо проверять по одному, что требует слишком много ресурсов

Пример списка связанных списков:

Сквозной список В связанном списке хранится информация о 5 последних пользователях, вошедших в систему

Новые пользователи приходят, а старые удаляются

Как работать со связанным список?

#Добавьте строковый элемент в начало списка, соответствующий ключуУдаляет элемент из конца списка и возвращает удаленный элемент. Если значение ключа не соответствует не существует, возвращается 0. Если соответствующий тип ключа отсутствует в списке, возвращается ошибка #Rpush key string в конце ##Lpop key##Ltrim key start end

#Код

#Функция

Lpush key string

Rpop key

Ключ Lien возвращает длину списка, соответствующего ключу

То же, что и выше, добавьте

Удаляет элемент из головы списка и возвращает удаленный элемент

Перехватить список и сохранить элементы в указанном диапазоне


4.Установить тип коллекции

Redis 'set представляет собой неупорядоченную коллекцию строкового типа.

Элементы набора могут содержать до (2 в 32-й степени -1) элементов

Каждый элемент в каждом наборе не может повторяться

Код

Функция

Добавить ключевой элемент

#Добавить строковый элемент в коллекцию set, соответствующую ключу, и вернуть успех 1

Srem keymember

Удаляет заданный элемент из соответствующего набора ключей и успешно возвращает 1

Переместить элемент p1 p2

Удалить элемент из соответствующего набора p1 и добавить его в соответствующий набор p2

Scard key

#Возвращает количество элементов в наборе

Ключевой элемент Sismember

Определите, существует ли элемент в наборе

Синтер шпонка1 шпонка2.. . .

Возвращает пересечение всех заданных ключей

Sunion key1 key2

Возвращает объединение всех заданных ключей

Sdiff key1 key2.

Возвращает набор различий всех заданных ключей

Smembers key

Возвращает все элементы набора, соответствующие ключу, результат неупорядочен
###


Есть ключ с пятью элементами

Затем добавьте ссылку

5.SortSet операция типа сортированного набора

Как и набор, отсортированный набор также представляет собой набор строковых элементов

Разница в том, что каждому элементу присвоен вес

Элементы в наборе можно получить по порядку по значению веса

Случай:

Используйте набор сортировки, чтобы получить 5 самых популярных постов для обучения

Каждый элемент в отсортированном наборе представляет собой комбинацию значения и веса

Удалить указанный элемент, 1 успешно, 0 не существует#Zincrby key incrmember ##Zrank keymemberZrange key start endZrevrange key start end


6. Сохранение снимка

#Для сохранения одного изменения ключа (снимка)

Для сохранения одного изменения ключа требуется 300 секунд. десять изменений ключей, которые необходимо сохранить (снимок) Сохранить

Десять тысяч изменений ключей в минуту (снимок) Сохранить

Преимущества такого контроля:

Частота изменения данных очень высока, и частота резервного копирования также высока,

Частота изменения данных низкая, и частота резервного копирования также низкая.

Имя сохраняемого снимка



##Вручную инициировать сохранение моментальных снимков

Если для этого компьютера:

7.Постоянство AOF

Essence : Резервное копирование каждой команды «записи» (добавление, удаление, изменение), выполняемой пользователем, в файл и выполнение конкретной команды «записи» при восстановлении

Включение сохранения AOF очистит внутреннюю часть данных redis.

Включить сохранение AOF

Файл конфигурации изменен и перезапустите службу

Просмотрите процесс redis

: Ps – A | grep redis

##-9Принудительно завершить процесс

Запустить новый процесс

Aof добавляет частоту постоянного резервного копирования

Всегда принудительно запись на диск сразу после получения команды записи.Это очень медленно, но может поддерживать полную устойчивость.

Everysec принудительно записывает на диск один раз в секунду.Он проделал хорошую работу с точки зрения производительности и устойчивости. Компромисс, рекомендуется

Нет, максимальная производительность полностью зависит от ОС, но постоянство не гарантируется

#8. Режим Master-Slave

Чтобы снизить нагрузку каждого сервера Redis можно установить Несколько, и в режиме master-slave

Один сервер загрузка «пишет»

Другой сервер загружается «чтение»

Мастер-сервер будет автоматическая синхронизация с подчиненным сервером


Изменить IP-адрес и номер порта

Код

Функция

#Zadd ключевой элемент оценки

Добавьте элементы в коллекцию и обновите соответствующую оценку, если элемент существует в коллекции

##Zrem keymember

Увеличьте значение оценки соответствующего элемента в соответствии с диапазоном увеличения и верните значение оценки

Возвращает ранг (индекс) указанного элемента в наборе.Элементы в наборе сортируются от меньшего к большему по баллу

##Аналогично операции Irange, элементы в указанном диапазоне указаны из коллекции, и возвращаются упорядоченные результаты

То же, что и выше, возврат осуществляется в обратном порядке

##Zcard key

Возвращает количество элементов в коллекции

Zscore key elemet

Возвращает оценку соответствующий данному элементу

#Zremrangebyrank key min max

#Удалить элементы в набор, которые ранжированы в заданном интервале баллов

The above is the detailed content of Start with Redis cache from scratch. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn