一、创建SpringBoot工程

1、通过SPRING INITIALIZR来创建SpringBoot工程

  • 在Idea中,选择File->New->Project;
  • 在弹出的页面中,选择Spring Initializer,在右侧页面勾选Default:https://start.spring.io,点击next;
  • 在Group中输入com.learn,在Artifact中输入spring-boot-sample-redis,点击next;
  • 勾选Web下的web,勾选NOSQL下的Redis,点击next;
  • 点击 Finish,完成工程创建。

2、整体工程文件结构如下图

spring redis设置时间 spring使用redis_sed

3、在包com.learn下建立web文件夹

4、便于测试,引入spring-boot-sample-helloworld的HelloController及配置文件logback.xml

HelloController代码为

package com.example.web;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;


@RestController

public class HelloController {


protected static Logger logger=LoggerFactory.getLogger(HelloController.class);


@RequestMapping("/")

public String helloworld(){

logger.debug("访问hello");

return "Hello world!";

}


@RequestMapping("/hello/{name}")

public String helloName(@PathVariable String name){

logger.debug("访问helloName,Name={}",name);

return "Hello "+name;

}

}


logback.xml配置为


<configuration>

<!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, -->

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

<encoder>

<pattern>%d %p (%file:%line\)- %m%n</pattern>

<charset>GBK</charset>

</encoder>

</appender>

<appender name="baselog"

class="ch.qos.logback.core.rolling.RollingFileAppender">

<File>log/base.log</File>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<fileNamePattern>log/base.log.%d.%i</fileNamePattern>

<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

<!-- or whenever the file size reaches 64 MB -->

<maxFileSize>64 MB</maxFileSize>

</timeBasedFileNamingAndTriggeringPolicy>

</rollingPolicy>

<encoder>

<pattern>

%d %p (%file:%line\)- %m%n

</pattern>

<charset>UTF-8</charset> <!-- 此处设置字符集 -->

</encoder>

</appender>

<root level="info">

<appender-ref ref="STDOUT" />

</root>

<logger name="com.example" level="DEBUG">

<appender-ref ref="baselog" />

</logger>

</configuration>


注:logback.xml文件位于src/main/resources下()作者在<fileNamePattern>这一行是有问题,现已更正过来)


5、启动工程,通过浏览器查看正确性

http://localhost:8080/

http://localhost:8080/hello/上帝

二,使用StringRedisTemplate

1、web文件下建立class,类名为StringRedisController,编写StringRedisController为

package com.example.web;


import javax.annotation.Resource;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.StringRedisTemplate;

import org.springframework.data.redis.core.ValueOperations;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;


@RestController

public class StringRedisController {

    

    protected static Logger logger=LoggerFactory.getLogger(StringRedisController.class);

    

    @Autowired

    StringRedisTemplate stringRedisTemplate;

    
   //下面这种方式未调通
   // @Resource(name="stringRedisTemplate")
   // ValueOperations<String,String> valOpsStr;
    

    @RequestMapping("set")
    public String setKeyAndValue(String key,String value){
        logger.debug("访问set:key={},value={}",key,value);
        ValueOperations valOpsStr = stringRedisTemplate.opsForValue();
        valOpsStr.set(key,value);
        return "Set Ok";
    }
    @RequestMapping("get")
    public Object getKey(String key){
        logger.debug("访问get:key={}",key);
        ValueOperations valOpsStr = stringRedisTemplate.opsForValue();
        return valOpsStr.get(key);
    }

}

2、修改工程配置文件application.properties,增加以下内容

#redis数据库名称 从0到15,默认为db0

spring.redis.database=1

#redis服务器名称

spring.redis.host=127.0.0.1

#redis服务器连接端口号

spring.redis.port=6379

#redis连接池设置

spring.redis.jedis.pool.max-idle=8

spring.redis.jedis.pool.min-idle=0

spring.redis.jedis.pool.max-active=8

spring.redis.jedis.pool.max-wait=-1


spring.redis.timeout=60000

注:win平台,下载一个,修改密码,就可直接运行(可能版本不一样,配置需要修改)

3、运行测试

在浏览器中先输入

http://localhost:8080/set?key=lxh2&&value=1001

再输入

http://localhost:8080/get?key=lxh2

再改改value的值试试

三、使用RedisTemplate

1、在包com.example下建立文件夹domain

2、在domain中建议类person

package com.example.domain;


import java.io.Serializable;


public class Person implements Serializable {


private static final long serialVersionUID = 1L;


private String id;

private String name;

private Integer age;



public Person() {

super();

}



public Person(String id, String name, Integer age) {

super();

this.id = id;

this.name = name;

this.age = age;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}


}


注意:一定有空的和全字段的构造函数


3、在domain中建立类PersonDao

package com.example.domain;


import javax.annotation.Resource;


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.Repository;


@Repository

public class PersonDao {


 @Autowired
    RedisTemplate<Object, Object> redisTemplate;
    //下面这种方式未调通
//    @Resource(name = "redisTemplate")
//    ValueOperations<Object, Object> valOps;

    public void save(Person person) {
        ValueOperations<Object, Object> valOps = redisTemplate.opsForValue();
        valOps.set(person.getId(), person);
    }

    public Person getPerson(String id) {
        ValueOperations<Object, Object> valOps = redisTemplate.opsForValue();
        return (Person) valOps.get(id);
    }

}

4、在Web中建立类ObjectRedisController

package com.example.web;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;


import com.example.domain.Person;

import com.example.domain.PersonDao;


@RestController

public class ObjectRedisController {


protected static Logger logger=LoggerFactory.getLogger(ObjectRedisController.class);


@Autowired

PersonDao personDao;


@RequestMapping("/setPerson")

public void set(String id,String name,Integer age){

logger.debug("访问setPerson:id={},name={},age={}",id,name,age);

Person person=new Person(id,name,age);

personDao.save(person);

}


@RequestMapping("/getPerson")

public Person getPerson(String id){

return personDao.getPerson(id);

}


}

5、运行测试

http://localhost:8080/setPerson?id=2&&name=lxh2&&age=2

http://localhost:8080/getPerson?id=2