До появления Redis наши фреймворки кеширования были разными.С Redis схемы кеширования были в основном унифицированы.Что касается Redis, у Song Ge уже была серия туториалов.Те, кто не знает Redis, могут обратиться к этому туториалу:
Существует множество решений для использования Java для работы с Redis. В настоящее время популярным решением является Jedis.Помимо Jedis, существует множество других решений, а именно:
В дополнение к этим решениям есть еще одно решение, которое довольно часто используется, — Spring Data Redis.
В традиционном SSM необходимо развивать себя, чтобы настроить Spring Data Redis, эта конфигурация более сложная, настроить три основных вещей: пул соединения, информация о подключении и схеме сериала.
В Spring Boot интегрированным Redis по умолчанию является Spring Data Redis. По умолчанию базовый пул соединений использует салат. Разработчики могут изменить его на свои знакомые, такие как Jedis.
Spring Data Redis предоставляет очень удобный рабочий шаблон RedisTemplate для Redis. Это то, в чем хорош Spring Data, поэтому давайте посмотрим на конкретное использование Spring Data Redis в Spring Boot.
Вариант 1: Spring Data Redis
Создать проект
Создайте проект и введите зависимости Redis:
После того, как создание успешно, вам также необходимо вручную вводить зависимости Commos-Pool2, поэтому окончательные полные зависимости POM.xml следующие:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
Главное здесь состоит в том, чтобы ввести пружинные данные Redis + бассейн соединения.
Настройка информации Redis
Далее настройте информацию о REDIS, информация содержит два аспекта, с одной стороны, основная информация о Redis, с другой стороны, информация об пунте соединения:
spring.redis.database=0
spring.redis.password=123
spring.redis.port=6379
spring.redis.host=192.168.66.128
spring.redis.lettuce.pool.min-idle=5
spring.redis.lettuce.pool.max-idle=10
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=1ms
spring.redis.lettuce.shutdown-timeout=100ms
Автоматическая конфигурация
Когда разработчик введет Spring Data Redis в проект и настроит базовую информацию Redis, автоматическая настройка вступит в силу.
Мы можем увидеть подсказку из класса автоматической настройки Redis в Spring Boot:
@Configuration
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
public class RedisAutoConfiguration {
@Bean
@ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate<Object, Object> redisTemplate(
RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
@ConditionalOnMissingBean
public StringRedisTemplate stringRedisTemplate(
RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
Этот класс автоматической конфигурации хорошо изучен:
- Во-первых, это отмеченная конфигурация класса, в то время как конфигурация вступает в силу в присутствии редизопаций (т. Е. Проект был введен в весенние данные Redis)
- Затем импортируйте свойства, настроенные в application.properties.
- Затем импортируйте информацию о пуле соединений (если она существует)
- Наконец, придаются две бобы, перераспределение и stringredistemplate. Stringredistemplate - это подкласс перераспределения. Способы двух в основном одинаковы. Разница в основном отражается в различных типах операций. Два общих типа в перераспределении являются объектами. Это означает, что сохраненный ключ и значение могут быть объектом, а два общих типа Stringredistemplate являются строкой, что означает, что как ключ, и значение Stringredistemplate могут быть только строками. Если разработчик не предоставляет соответствующую фасоль, эти две конфигурации вступят в силу, в противном случае он не вступит в силу.
использовать
Затем вы можете напрямую внедрить StringRedisTemplate или RedisTemplate в Service для использования:
@Service
public class HelloService {
@Autowired
RedisTemplate redisTemplate;
public void hello() {
ValueOperations ops = redisTemplate.opsForValue();
ops.set("k1", "v1");
Object k1 = ops.get("k1");
System.out.println(k1);
}
}
В целом операции с данными в Redis можно разделить на два типа:
- Для ключевых операций соответствующие методы находятся в RedisTemplate.
- Для работы с определенным типом данных соответствующий метод должен сначала получить соответствующий тип данных, а метод операции для получения соответствующего типа данных — opsForXXX.
Вызовите этот метод для хранения данных в Redis следующим образом:
Символы перед k1 вызваны использованием RedisTemplate, который является результатом сериализации ключа RedisTemplate.
В RedisTemplate схема сериализации по умолчанию для ключа — JdkSerializationRedisSerializer .
В StringRedisTemplate схема сериализации по умолчанию для ключа — StringRedisSerializer, поэтому, если используется StringRedisTemplate, по умолчанию перед ключом не будет префикса.
Однако разработчики также могут самостоятельно изменить схему сериализации в RedisTemplate следующим образом:
@Service
public class HelloService {
@Autowired
RedisTemplate redisTemplate;
public void hello() {
redisTemplate.setKeySerializer(new StringRedisSerializer());
ValueOperations ops = redisTemplate.opsForValue();
ops.set("k1", "v1");
Object k1 = ops.get("k1");
System.out.println(k1);
}
}
Конечно, вы также можете напрямую использовать StringRedisTemplate:
@Service
public class HelloService {
@Autowired
StringRedisTemplate stringRedisTemplate;
public void hello2() {
ValueOperations ops = stringRedisTemplate.opsForValue();
ops.set("k2", "v2");
Object k1 = ops.get("k2");
System.out.println(k1);
}
}
Кроме того, следует отметить, что автоматическая настройка Spring Boot позволяет настроить Redis только на одной машине. Если это кластер Redis, все нужно настроить вручную самостоятельно. О том, как работать с кластером Redis, расскажет Songge. с вами позже.
Вариант два: весенний кеш
Управляйте Redis в виде Spring Cache. Spring Cache объединяет внешний вид кэширования рек и озер. Это решение Сун Гэ ранее представила в специальной статье, и друзья могут перейти сюда:В Spring Boot кеш Redis все еще можно использовать таким образом!.
Вариант 3: вернуться в первобытную эпоху
Третье решение - напрямую использовать Jedis или другие клиентские инструменты для работы с Redis. Это решение также поддерживается в Spring Boot. Хотя операция вызывает затруднения, она поддерживается. Эта операция также была представлена Song Ge ранее, поэтому здесь я выиграл не вдаваясь в подробности, вы можете обратиться кДжедаи используют.
Суммировать
В Spring Boot операция Redis, здесь Songge резюмирует три решения.На самом деле широко распространены первые два, а прямое использование Jedis пока относительно невелико.В принципе, непосредственно в Spring Boot этого никто не видел.
Ну вот и все в этой статье.Если у вас есть какие-либо вопросы, пожалуйста, оставьте сообщение для обсуждения.
Обратите внимание на общедоступный номер [Jiangnan Little Rain], сосредоточьтесь на Spring Boot + Microservices и прежней технологии разделения и других технологиях полного стека, регулярно обменивайтесь видеоуроками, обратите внимание на Java, получите подготовленные для вас галантереи Java!