Spring интегрирует Redis

Java

предисловие Интегрированная в Spring среда Redis может быть встроена во встроенную среду ssm, что удобно (лениво), удобно (людям), быстро (специализировано), быстро (полезно), первая рекомендация!

@[toc]

1. Приготовьтесь зависеть от пакета Jar

<!-- ================  spring   整合  Redis================== -->

<!-- 1、java连接Redis的jar包,也就是使用jedis -->
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.4.2</version>
    </dependency>
    
<!-- 2、spring整合Redis的jar包 -->
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-redis</artifactId>
      <version>1.4.2.RELEASE</version>
    </dependency>

1.1. Обзор джедаев

Да, выше использовался пакет Jedis jar Вот краткое введение в Jedis.

Доступ Java-клиента к Redis имеетJedis,Redisson,Jredis,JDBC-Redisд., среди которых официальная рекомендация использоватьJedisи Редиссон.Обычно используемые джедаи. Работа Jedis в основном такая же, как и при использовании нативной команды Redis. Другими словами, Jedis фактически является Java-реализацией нативной команды. Преимущество в том, что ее очень удобно использовать, и нет необходимости запоминать другие API. Недостатком является то, что он немного низкоуровневый. Некоторый контент по-прежнему необходимо упаковывать вручную. Для новичков Jedis позволяет быстрее начать работу и лучше адаптируется.

2. Конфигурация в Spring-redis.xml

Запустите следующую конфигурацию в spring xml:

2.1. Настройка информации о пуле соединений

<!-- 1、配置连接池信息 -->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <!-- 最大连接数-->
        <property name="maxTotal" value="50"></property>
        <property name="maxIdle" value="5"></property>
        <!-- 这里只是Spring整合Redis测试,配两个做个样子就得了-->
    </bean>

Конечно, для настройки также есть информация о конфигурации по умолчанию в redis.clients.jedis.JedisPoolConfig! В конце концов, демон это или фея, я просто говорю это сам.

在这里插入图片描述

2.2, настроить информацию о пуле соединений

<!--2、spring整合Jedis(Redis) 也就是配置连接工厂JedisConnectionFactory-->
    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <!--需要自定义(指定)一些工厂属性配置信息-->
        <!--        指定服务器地址-->
        <property name="hostName" value="192.168.113.231"></property>
        <!--        指定服务端口号-->
        <property name="port" value="6379"></property>
        <!--        指定密码(Redis3之前可以不指定,之后都要)-->
        <property name="password" value="yichun"></property>

        <!--   自定义连接池配置:再把第一步配置好的连接池信息通过属性注入进来  如果不自定义会采用默认的连接池配置,工厂中有属性new JedisPoolConfig-->
        <property name="poolConfig" ref="jedisPoolConfig"></property>
    </bean>

Введите информацию о пуле соединений, настроенную на первом шаге, через свойства. Если она не настроена, будет использоваться конфигурация пула соединений по умолчанию. В фабрике есть свойства.new JedisPoolConfig,следующее:

在这里插入图片描述

2.3, настройте шаблон RedisTemplate

Теперь, когда шаблон RedisTemplate настроен, давайте познакомимся с шаблоном RedisTemplate.

Обзор RedisTemplate Spring-data-redisпри условииRedisTemplateреализоватьRedisОперация доступа, которая инкапсулирует логику управления пулом соединений Redis, бизнес-коду не нужно заботиться о получении и освобождении логики соединения;spring redisтакже поддерживаетсяJedis、Jredis、rjcклиентская операция; вRedisTemplateВ методе предусмотрено использование нескольких часто используемых методов интерфейса.Методы в нем хранят строки (String), хэши (Map), списки (list), наборы (sets) и отсортированные наборы (sortedsets), которые оперируют Redis соответственно , и другие типы данных.

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

在这里插入图片描述

Настройте шаблон RedisTemplate

<!--    3、配置RedisTemplate模板   把第二步配置好的连接工厂JedisConnectionFactory通过属性注入到RedisTemplate模板中-->
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
        <property name="connectionFactory" ref="jedisConnectionFactory"></property>
 
 
    <!--如下配置是为了之后的key和value的序列化操作,暂时不配制也是OK的-->
        <property name="keySerializer">
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
        </property>
        <property name="valueSerializer">
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
        </property>
    </bean>

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

在这里插入图片描述

3. Написание сервисного кода

Сначала напишите интерфейс

package com.gx.service;

public interface RedisUserService {
    public String getString(String key);
}

Затем напишите фактический код службы

package com.gx.service.Impl;

import com.gx.service.RedisUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import java.util.concurrent.TimeUnit;

@Service
public class RedisUserServiceImpl implements RedisUserService {
    /**
     * 主要业务代码是通过某个key得到值:
     * Redis中 不存在:进数据库查询
     *         存在:进Redis中查询
     */
    @Autowired
    RedisTemplate<String,String> redisTemplate;

    @Override
    public String getString(String key) {
        ValueOperations<String,String> string=redisTemplate.opsForValue();//opsForValue是存储String数据的,opsForValue中提供了很多操作Redis的String类型的数据!!!

       // redisTemplate.opsForValue().set("cs1","cs数据1",1, TimeUnit.HOURS);  //设置存储数据并设置过期时间为1小时

        if (redisTemplate.hasKey(key)) {
            System.out.println("在Redis中取出并返回");
            return string.get(key);
        }else {
            String result="RedisTemplate的Value值";

            string.set(key,result);
            System.out.println("在数据库中取出并返回");
            return result;
        }
    }
}

4. Написание тестового кода RedisTemplateTest

package com.gx.test;

import com.gx.service.RedisUserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class RedisTemplateTest {
    public static void main(String[] args) {
    //这里之所以只加载applicationContext.xml是因为我把spring-Redis.xml的配置直接放进了applicationContext.xml,不要问我为什么,因为我骚啊。
        ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
        RedisUserService userService=ctx.getBean(RedisUserService.class);

        String key="cs2";
        String result=userService.getString(key); //这里是调用我们编写userService中的getString(key)方法
        System.out.println(result);
    }
}

==Не забудьте перед запуском открыть порты и брандмауэры, иначе в случае сбоя соединения будет сообщено об ошибке. ! !==

запустить в первый раз

在这里插入图片描述
запустить его во второй раз
在这里插入图片描述
Конечно, вы также можете обратиться к Redis, чтобы узнать, сохранены ли данные.

Хорошо, здесь Spring интегрирует Redis, и начальная интеграция завершена!

Если эта статья поможет вам немного, то, пожалуйста, поставьте лайк, ваше одобрение — моя самая большая мотивация, спасибо~

Наконец, если есть какие-либо недостатки или неточности, добро пожаловать на исправления и критику, большое спасибо! Если у вас есть какие-либо вопросы, пожалуйста, оставьте сообщение и ответьте как можно скорее!

Приглашаю всех обратить внимание на мою официальную учетную запись, там есть некоторые учебные материалы по Java и большая волна электронных книг по Java, таких как всесторонняя виртуальная машина Java г-на Чжоу Чжимина, идеи программирования Java, тома основных технологий, большой разговор о дизайне. паттерны, борьба с параллельным программированием на Java... .. Это все библия Java, не говоря уже о том, чтобы садиться в машину Tomcat, поехали! Самое главное — вместе обсуждать технологии, тосковать по технологиям, заниматься технологиями, а когда они согласованы, это друг по горшку…

在这里插入图片描述