spring boot redis 整合

又好久沒有更新博客了,今天再寫一點吧.spring boot 使用愈來愈多,redis 也是很普及的cache,  如今用把二者作一下整合.web

環境: spring boot 1.4.2,redis3.0.1, maven 3.3.9, jdk1.8, IDEA2016.3.3 redis

 redis佈署環境能夠參考: redis 安裝配置 spring

maven 佈署環境能夠參考: Maven 構建web工程緩存

spring boot 部署環境能夠參考:spring boot firstapp

IDEA  部署環境 ,個人博客裏暫時沒有參考.maven

step 1:  配置 pom.xml spring-boot

<modelVersion>4.0.0</modelVersion>
<groupId>spring-boottest</groupId>
<artifactId>spring-boottest</artifactId>
<version>1.0-SNAPSHOT</version>
<!--父依賴-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.2.RELEASE</version>
</parent>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-velocity</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>1.7.0.RELEASE</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-redis</artifactId>
</dependency>

倒數第三個依賴,能夠看出模板用的velocity,exclusions 由於個人項目裏其它的依賴已經用到slf4j,會提示重複的引用,因此這裏去掉。最後2個依賴是redis須要用到的,這個項目的核心.ui

setp2:spa

application.properties 配置.net

# 服務端口
server.port=8081
spring.velocity.resource-loader-path=classpath:/templates/
# REDIS (RedisProperties)
spring.redis.host=127.0.0.1
spring.redis.port=7001
spring.redis.pool.max-idle=8 
spring.redis.pool.min-idle=0  
spring.redis.pool.max-active=8  
spring.redis.pool.max-wait=-1

沒有用默認的端口,用的是7001。

step3 : 創建操做redis的service 

@Service
public class DemoService {
@Cacheable(value = "user",key = "'user_'+#user.getId()")
    public User findUserCache(User  user){
        System.out.println("findUserCache");

        return user;
    }

    @CachePut(value = "user",key = "'user_'+#user.getId()")
    public User editUserCache(User  user){
        System.out.println("editUserCache");

        return user;
    }

    @CacheEvict(value = "user",key = "'user_'+#user.getId()")
    public User deleteUserCache(User  user){
        System.out.println("deleteUserCache");

        return user;
    }
}

 

 

查詢時使用:@Cacheable

插入數據使用:@CachePut

刪除、更新時使用:@CacheEvict


 

step 4:

建controller

加入查詢,更新,刪除頁面接口,代碼以下:

@RequestMapping("/findUser")
//    @ResponseBody
    public String findUserCache( @RequestParam(value="userId",required = false) long userId,Map<String, Object> model){
        User user=new User();
        user.setId((long)userId);
      User user1=  demoService.findUserCache(user);
        System.out.println("緩存的數據(若是有Id和名字,是讀的緩存,若是沒有名字是新建的緩存)");
        System.out.println("user:"+"/"+user1.getFirstName()+"/"+user1.getLastName());

        Map<String,String> paramValues=new HashMap<String, String>();
        paramValues.put("id",String.valueOf(user1.getId()));
        paramValues.put("firstName",user1.getFirstName());
        paramValues.put("lastName",user1.getLastName());
        model.put("paramValues", paramValues);
        return  "redisList";
       // return  "userId:"+user1.getId().toString()+",userFirstName:"+user1.getFirstName()+",userLastName:"+user1.getLastName();
    }

    @RequestMapping("/editUser")
    @ResponseBody
    public String editUserCache( @RequestParam(value="userId",required = false) long userId,
                                 @RequestParam(value="firstName",required = false) String firstName,
                                 @RequestParam(value="lastName",required = false) String lastName
                                 ){
        User user=new User();
        user.setId((long)userId);
        user.setFirstName(firstName);
        user.setLastName(lastName);
        User user1=  demoService.editUserCache(user);
        return  "userId:"+user1.getId().toString()+",userFirstName:"+user1.getFirstName()+",userLastName:"+user1.getLastName();
    }

    @RequestMapping("/deleteUser")
    @ResponseBody
    public String editUserCache( @RequestParam(value="userId",required = false) long userId){
        User user=new User();
        user.setId((long)userId);
        User user1=  demoService.deleteUserCache(user);
        return  "userId:"+user1.getId().toString()+",userFirstName:"+user1.getFirstName()+",userLastName:"+user1.getLastName();
    }
}

step5  :

爲查詢controller建 顯示結果頁面src/main/resource/templates/redisList.vm,內容:

#foreach($param in ${paramValues.keySet()})
<tr>
    <th>$param:</th>
    <td>${paramValues.get($param)}</td>
    <br>
</tr>
#end

step6 :

啓動redis :start redis-server ./7001/redis.conf

打開redis client

redis-cli -h 127.0.0.1 -p 7001

step7:

run 工程 

查看結果:

看一下reids 裏user_1 裏的數據

get user_1

1.  查詢

findUser是查詢的接口,查詢出redis的數據

2. 更新

查看redis 

數據被更新

3.刪除

查看redis 

 

補充:@Cacheable 查詢時,在沒有數據時,會自動建立一條記錄.

相關文章
相關標籤/搜索