spring-boot整合redis

redis是一個nosql(非關係型數據庫) , 能夠用做數據庫,緩存,消息中間件java

 

鏈接redis須要注意的幾點:
在redis.conf裏設置 :
1.把daemonize 設置爲yes, 這個屬性不影響鏈接, 這只是把redis啓動設置爲後臺啓動
2.找到pretected-mode把他放開,而且設置爲no   ; 這是把安全模式關掉
3.把bind 127.0.0.1 : : 1這行註釋掉  ,這樣才能用別的ip地址仍是什麼去了
4. redis 版本在五點幾以後,就須要給redis設置密碼了 :  requirepass   xxxweb

 

建立spring-boot工程,在建立的時候選web裏的web和nosql裏的redis ,這裏用的是spring data redisredis

 

建立好了工程後 , 再添加一pool2依賴spring

總體依賴以下sql

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.liy</groupId>
    <artifactId>redis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>redis</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <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>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 

添加完依賴後就是配置文件了  application.properties數據庫

spring.redis.database=0
spring.redis.host=192.168.72.114
spring.redis.password=liy
spring.redis.port=6379
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

默認的鏈接池是lettuce ,若是要用其餘的鏈接池,須要在依賴裏去排除lettuce的依賴 , 再導入你要用的鏈接池的依賴apache

 

整合redis很是的簡單 , 主要是靠兩個類 , 一個是RedisTemplate,一個是StringRedisTemplate緩存

就寫個service類測試下吧安全

@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);
    }

    @Autowired
    StringRedisTemplate stringRedisTemplate;

    public void hello2(){
        ValueOperations ops = stringRedisTemplate.opsForValue();
        ops.set("k1","v1");

        Object k1 = ops.get("k1");
        System.out.println(k1);
    }
}

 

用spring-boot的測試列測試app

package com.liy;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.stereotype.Service;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisApplicationTests {

    @Autowired
    HelloService hs;


    @Test
    public void contextLoads() {
       hs.hello();
       // hs.hello2();
    }

}

兩個類的的區別是,傳送的數據類型不一樣

RedisTemplate裏傳送的數據key和value都是object類型的

StringRedisTemplate裏傳送的數據都是String類型的

而若是用的是RedisTemplate,那麼redis這個非關係型數據庫就會以object的格式去序列化數據化

而後會以下圖

 

而用若是用的是StringRedisTemplate傳的數據,那麼就會安裝string類型來序列化 , string類型的數據序列話後 , 好像並無變化

 

若是你只是value是object , 那麼用RedisTemplate 的時候,能夠用 

redisTemplate.setKeySerializer(new StringRedisSerializer());

來設置key的序列化的方式 , 換成string類型的序列化

相關文章
相關標籤/搜索