Spring整合Redis

Posted halulu.me

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring整合Redis相关的知识,希望对你有一定的参考价值。

Spring整合reids

解决当String类型的值是对象时候无法储存的问题

maven

  <!-- ================  spring   整合  Redis================== -->
        <!-- 1、java连接Redis的jar包,也就是使用jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.3</version>
        </dependency>

        <!-- 2、spring整合Redis的jar包,注意版本的对应关系 -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>

        <!--jackson-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9</version>
        </dependency>
        <!-- 日志记录 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.21</version>
        </dependency>

需加入slf4j日志包,否则会报错

在这里插入图片描述

reids的端口号是6379

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

void set(K key, V value, long timeout, TimeUnit unit)
long timeout 指存活时间
TimeUnit unit 指时间单位

使用步骤
1、创建redis的配置文件
2、创建redis的连接工厂
3、创建redisTemolate对象
3.1 指定连接工厂
3.2 键的序列化策略
3.3 值得序列策略

applicationContext.xml

    <!-- 1. redis独立的配置对象-->
    <bean class="org.springframework.data.redis.connection.RedisStandaloneConfiguration" id="standaloneConfiguration">
        <!-- 主机名 -->
        <property name="hostName" value="localhost"/>
        <!-- 端口号 -->
        <property name="port" value="6379"/>
    </bean>

    <!-- 2. 创建jedis连接工厂,通过构造器注入上面的对象 -->
    <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
          id="connectionFactory">
        <constructor-arg ref="standaloneConfiguration"/>
    </bean>

    <!-- 3. 创建redisTemplate对象 -->
    <bean class="org.springframework.data.redis.core.RedisTemplate" id="redisTemplate">
        <!-- 指定连接工厂 -->
        <property name="connectionFactory" ref="connectionFactory"/>
        <!-- 键:String的序列化策略,对字符串类型 -->
        <property name="keySerializer">
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
        </property>
        <!-- 值:采用的是JSON的序列化策略 -->
        <property name="valueSerializer">
            <bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"/>
        </property>
    </bean>

测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class AppTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void test() throws InterruptedException {

        ValueOperations operations = redisTemplate.opsForValue();

        operations.set("username1","狗娃",10, TimeUnit.SECONDS);

        Thread.sleep(10000);
        String username = (String) operations.get("username1");


        System.out.println(username);
    }

    @Test
    public void test2(){
        ValueOperations ops = redisTemplate.opsForValue();
        ops.set("user",new User("小一","20"));

        User user = (User) ops.get("user");

        System.out.println(user);
    }
}

以上是关于Spring整合Redis的主要内容,如果未能解决你的问题,请参考以下文章

3分钟搞定springboot整合redis

spring 整合 redis的配置

redis spring怎么整合

Spring Boot 整合Redis 实现缓存

spring整合redis后怎么更改db

Spring整合redis,通过sentinel进行主从切换