серия redis (1) — установка и запуск

Redis NoSQL

Серия статей Redis:
серия redis (1) — установка и запуск
серия redis (2) — синтаксис и команды

1. Введение в Redis

Redis — это разновидность NoSql. Прежде чем разобраться, что такое Redis, давайте сначала разберемся, что такое NoSql.

1. Что такое NoSql

NoSql, полное название: Not Only Sql, является нереляционной базой данных. Она не может заменить реляционные базы данных. Это только дополнение к реляционным базам данных. Она может решить ряд проблем, таких как высокий параллелизм, высокая доступность, высокая степень расширения и хранилище больших данных база данных решение проблемы.

NoSql имеет следующие четыре категории: база данных хранения ключей и значений, база данных хранения столбцов, база данных документов и база данных графов. И Redis относится к первому типу: база данных хранения ключей и значений.

2. Что такое Редис

Redis — это высокопроизводительная база данных типа «ключ-значение», разработанная на языке C, то есть для хранения данных через некоторые типы «ключ-значение». Типы ключ-значение, поддерживаемые Redis: тип символа String, тип хэша карты, тип списка списка, тип коллекции наборов, тип упорядоченной коллекции отсортированных наборов.

Сценарии применения Redis следующие: кеширование (запрос данных, короткое соединение, новостной контент, товарный контент и т. д.), разделение сеансов в распределенной кластерной архитектуре, онлайн-список друзей в чате, очередь задач. (Seckill, панические покупки, 12306 и т. д.), рейтинг приложений, статистика посещения веб-сайтов, обработка истечения срока действия данных (с точностью до миллисекунд). Среди них сценарий применения в качестве кэша больше всего.

Во-вторых, установка Redis

Как правило, Redis устанавливается на Linux-сервере, поэтому в этом примере описывается установка под Linux.Если ваш компьютер Windows или Mac, установите его самостоятельно.

Система Linux, используемая в этом примере, — CentOS6.7.В операционных командах операционных систем Linux, таких как Ubuntu, могут быть индивидуальные различия.Пожалуйста, изучите и поймите сами.

1. Скачать

может прибытьОфициальный сайт RedisНайдите адрес загрузки каждой версии Redis, например:скачать.Redis.IO/релизы/горячие…

2. Установка

После подключения к Linux с помощью программного обеспечения для подключения к серверному терминалу, такого как Xshell, выполните следующие операции:

1) Загрузите сжатый Redis

Скачать редис:

wget http://download.redis.io/releases/redis-3.0.0.tar.gz

Используйте команду ll для просмотра всех файлов в текущем каталоге.

Вы можете видеть, что redis-3.0.0.tar.gz — это только что загруженный сжатый пакет redis, и теперь распакуйте его:

tar -zxvf redis-3.0.0.tar.gz

Затем используйте команду ll для просмотра всех файлов в текущем каталоге.

2) Скомпилируйте и установите Redis

Введите исходный код Redis:

cd redis-3.0.0

Вы можете увидеть все файлы в исходном каталоге Redis через команду ll.Далее вам нужно скомпилировать исходный код:

make

Для использования команды make для компиляции Redis требуется языковая среда C. CentOS поставляется с языковой средой C. Если вы используете другие системы Linux без языковой среды C, вам необходимо установить ее, например, установку yum: yum install gcc-c++

После компиляции он устанавливается.Команда для установки Redis выглядит следующим образом:

make install PREFIX=/usr/local/redis

В этой команде исправлено предыдущее «make install PREFIX=", а «/usr/local/redis» — это каталог установки Redis, который обычно пишется так. Если вам нужно установить его в других местах, просто замените этот путь.

Наконец, проверьте, успешно ли установлен Redis:

cd /usr/local/redis/

Используя команду ll, вы можете увидеть папку bin, что указывает на то, что Redis успешно установлен.

3. Запуск и остановка Redis

У Redis есть два запуска: внешний запуск и внутренний запуск. Чтобы запустить Redis, вам нужно выполнить команду запуска в каталоге bin Redis, сначала посмотрите на структуру каталога bin:

1. Фронтальный запуск и остановка

1) Команда, запущенная фронтендом:

[root@localhost bin]# ./redis-server

Видно, что порт запуска Redis — 6379 (по умолчанию), а id процесса — 5979. При этом, после того, как фронтенд запустит Redis, терминал войдет в консоль Redis, и нет возможности продолжить другие команды Linux, то есть окно терминала «заброшено» Можно вводить только собственные команды Redis.

2) Команда выключения, инициированная внешним интерфейсом:

强制关闭:Ctrl+c
正常关闭:[root@localhost bin]# ./redis-cli shutdown

Вот сравнение двух команд:

  • Принудительное отключение можно выполнить прямо в консоли Redis (redis может потерять часть данных).
  • Обычное завершение работы требует запуска другого окна терминала (рекомендуется, что redis не потеряет данные).

Следует отметить, что после выполнения команды завершения работы, инициированной внешним интерфейсом, консоль Redis будет закрыта, и служба Redis также будет остановлена.

2. Внутренний запуск и остановка

Внутренний запуск — это то, как мы обязательно будем использовать его в разработке, но после использования команды внутреннего запуска нам необходимо выполнить следующие шаги:

1) Конфигурация запуска бэкенда:

Первый шаг — скопировать файл redis.conf из исходного каталога Redis в каталог bin в каталоге установки Redis.

Второй шаг — изменить файл redis.conf, изменить значение daemonize на yes и сохранить его.

[root@localhost bin]# vim redis.conf 

Пожалуйста, изучите команды редактора vim для Linux самостоятельно.Вот некоторые из наиболее часто используемых команд в vim:

i: войти в режим редактирования.

esc: выйти из режима редактирования и войти в режим просмотра (войдите в редактор vim, по умолчанию используется режим просмотра).

:wq: Сохраните изменения и выйдите из редактора vim.

После вышеуказанных шагов настройки нет необходимости настраивать его в будущем, и для запуска фона Redis можно использовать следующую команду.

2) Команда, запущенная бэкендом:

[root@localhost bin]# ./redis-server redis.conf

Можно обнаружить, что внутренняя команда запуска — это просто больше «redis.conf», чем внешняя команда запуска. Смысл очень ясен, то есть позволить Redis работать в соответствии с конфигурацией этого файла конфигурации. В то же время вы также можете видеть, что после запуска фона Redis терминал не войдет в консоль Redis, которая должна запускать Redis в фоновом режиме. Теперь мы можем проверить, есть ли в системе процесс Redis:

[root@localhost bin]# ps -aux | grep redis

Вы можете видеть, что работает Redis, порт 6379 и идентификатор процесса 6087.

3) Команда выключения, инициированная бэкендом:

强制关闭:[root@localhost bin]# kill -9 进程id
正常关闭:[root@localhost bin]# ./redis-cli shutdown

Поскольку бэкэнд запускает Redis, нет возможности напрямую нажать Ctrl+C, чтобы принудительно завершить работу Redis, как при запуске Redis во внешнем интерфейсе.Если вам нужно принудительно завершить работу, вы можете остановить Redis, только уничтожив процесс. Команда для нормального закрытия Redis такая же, как и для завершения работы внешнего интерфейса, поэтому я не буду говорить здесь ерунду.

В проектах рекомендуется использовать изящное завершение работы. Поскольку Redis используется в качестве кеша, данные хранятся в памяти.Если он нормально закрыт, данные памяти будут сохранены в локальном хранилище, а затем закрыты. Если его принудительно закрыть, операция сохранения не будет выполнена, что может привести к некоторой потере данных.

4. Клиент Redis

1. Redis поставляется с клиентом

Когда ранее была введена структура каталога bin в каталоге установки redis, клиент redis был помечен как redis-cli. Этот клиент имеет две часто используемые функции:

  • Используется для нормального отключения службы Redis.
  • Пусть терминал войдет в консоль Redis (используется в сценарии запуска Redis в фоновом режиме).

1) начать

Запустите клиентскую команду:

[root@localhost bin]# ./redis-cli -h 127.0.0.1 -p 6379
  • -h: указывает IP-адрес сервера Redis, к которому нужно получить доступ.
  • -p: указывает порт порта сервера Redis для доступа

Если используются IP-адрес и порт по умолчанию, указанную выше команду можно записать так:

[root@localhost bin]# ./redis-cli

Используйте конфигурацию по умолчанию: IP-адрес по умолчанию [127.0.0.1], порт по умолчанию [6379].

2) закрыть

ctrl+c
127.0.0.1:6379> quit

Чтобы закрыть клиент, можно использовать любую из двух приведенных выше команд, и это не повлияет на сохранение данных Redis.

2. Клиент с графическим интерфейсом

Для Redis существует клиентское программное обеспечение с графическим интерфейсом, которое называется redis-destop-manager.Вот страница загрузки программного обеспечения, поддержка Windows, Mac OS X, Linux, пожалуйста, выберите загрузку в соответствии с вашей компьютерной системой, здесь возьмите Windows в качестве примера, кратко опишите использование этого программного обеспечения, установка очень проста, вплоть до следующего шага, открыть приложение после установки.

1) Откройте конфигурацию подключения к серверу Redis.

2) Добавьте соединение с сервером Redis и проверьте, успешно ли установлено соединение.

3) Просмотреть все базы данных на сервере Redis

4) Просмотр данных пары ключ-значение в отдельных базах данных

3. Клиент управления кодом

  redis может работать не только с командами, но в основном основные языки имеют клиентскую поддержку, например: java, C, C#, C++, php, Node.js, Go и т. д.

  На официальном сайте есть некоторые Java-клиенты, такие как: Jedis, Redisson, Jredis, JDBC-Redis и др. Среди них официально рекомендуются Jedis и Redisson. Наиболее используемым на предприятии является Jedis.
Jedis размещен на github, нажмите, чтобы открыть.

1) Простое использование Redis

Шаг 1. Импортируйте следующие 2 пакета jar.

  • jedis-2.7.0.jar
  • commons-pool2-2.3.jar

Шаг 2. Создайте соединение Jedis с помощью сервера Redis.

@Test
public void jedisClient() {
    // 创建Jedis
    Jedis jedis = new Jedis("192.168.128.128", 6379);
    // 通过Jedis赋值
    jedis.set("s2", "222");
    // 通过Jedis取值
    String s2 = jedis.get("s2");
    System.out.println(s2);
    // 关闭Jedis
    jedis.close();
}

Шаг 3. Используйте пул соединений Jedis для получения Jedis

@Test
public void jedisPool() {
    // JedisPool
    JedisPool jedisPool = new JedisPool("192.168.128.128", 6379);
    // 通过连接池获取jedis对象
    Jedis jedis = jedisPool.getResource();
    String s2 = jedis.get("s2");
    System.out.println(s2);
    // 关闭jedis客户端
    jedis.close();
    // 关闭连接池
    jedisPool.close();
}

2) Spring интегрирует jedisPool

первый шаг:

  • Добавить пакет пружинной банки
  • Настройте файл конфигурации spring applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-3.2.xsd 
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">

        <!-- 连接池配置 -->
        <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
            <!-- 最大连接数 -->
            <property name="maxTotal" value="30" />
            <!-- 最大空闲连接数 -->
            <property name="maxIdle" value="10" />
            <!-- 每次释放连接的最大数目 -->
            <property name="numTestsPerEvictionRun" value="1024" />
            <!-- 释放连接的扫描间隔(毫秒) -->
            <property name="timeBetweenEvictionRunsMillis" value="30000" />
            <!-- 连接最小空闲时间 -->
            <property name="minEvictableIdleTimeMillis" value="1800000" />
            <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
            <property name="softMinEvictableIdleTimeMillis" value="10000" />
            <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
            <property name="maxWaitMillis" value="1500" />
            <!-- 在获取连接的时候检查有效性, 默认false -->
            <property name="testOnBorrow" value="false" />
            <!-- 在空闲时检查有效性, 默认false -->
            <property name="testWhileIdle" value="true" />
            <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
            <property name="blockWhenExhausted" value="false" />
        </bean>

        <!-- redis单机 通过连接池 -->
        <bean id="jedisPool" class="redis.clients.jedis.JedisPool"
            destroy-method="close">
            <constructor-arg name="poolConfig" ref="jedisPoolConfig" />
            <constructor-arg name="host" value="192.168.128.128" />
            <constructor-arg name="port" value="6379" />
        </bean>
    </beans>

Шаг 2. Протестируйте код

@Test
public void testJedisPool() {
    JedisPool pool = (JedisPool) applicationContext.getBean("jedisPool");
    Jedis jedis = null;
    try {
        jedis = pool.getResource();

        jedis.set("name", "lisi");
        String name = jedis.get("name");
        System.out.println(name);
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        if (jedis != null) {
            // 关闭连接
            jedis.close();
        }
    }
}

5. Другие

1. Настройте количество баз данных Redis

По умолчанию Redis создает базы данных 16. Если вам нужно изменить количество создаваемых баз данных, вы можете изменить значение баз данных в файле конфигурации redis.conf.

2. Выбор базы данных Redis

Redis по умолчанию использует базу данных с индексом 0. Если вам нужно переключить базу данных, вы можете использовать «выбрать индекс», чтобы выбрать базу данных в консоли Redis.

127.0.0.1:6379> select 15

3. Проблемы

Если вы не можете подключиться к серверу с помощью терминального программного обеспечения, такого как Xshell, проверьте, открыт ли в системе Linux порт 22. Вы можете открыть порт 22, изменив правило перехвата iptable.Если вы используете сервер Alibaba Cloud, вам необходимо изменить безопасность групповые правила В сети много конкретных шагов, ищите и изучайте сами.