SpringBoot 使用redis实例

本文介绍了如何在SpringBoot工程中集成并使用Redis,包括创建SpringBoot项目、使用StringRedisTemplate进行字符串操作以及利用RedisTemplate处理复杂数据类型的存取。详细步骤从工程创建到测试,覆盖了Redis的基本用法。
摘要由CSDN通过智能技术生成

一、创建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、整体工程文件结构如下图

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

参考:https://blog.csdn.net/lxhjh/article/details/51753852?utm_source=copy

下面是一个简单的Spring Boot整合Redis的示例,你可以参考: 1. 添加Redis依赖 在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 2. 配置Redis连接信息 在 `application.properties` 文件中添加以下配置: ```properties # Redis服务器地址 spring.redis.host=127.0.0.1 # Redis服务器连接端口 spring.redis.port=6379 # Redis服务器连接密码(默认为空) spring.redis.password= # Redis连接超时时间(单位:毫秒) spring.redis.timeout=3000 # Redis连接池最大连接数(使用负数表示没有限制) spring.redis.jedis.pool.max-active=8 # Redis连接池最大阻塞等待时间(单位:毫秒,使用负数表示没有限制) spring.redis.jedis.pool.max-wait=-1 # Redis连接池最大空闲连接数 spring.redis.jedis.pool.max-idle=8 # Redis连接池最小空闲连接数 spring.redis.jedis.pool.min-idle=0 ``` 3. 创建RedisTemplate Bean 在Spring Boot中创建RedisTemplate Bean是很简单的,只需要添加以下代码: ```java @Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(factory); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; } } ``` 4. 使用RedisTemplate进行数据操作 通过上面的配置,我们已经可以使用RedisTemplate进行数据操作了。下面是一些简单的使用示例: ```java @Autowired private RedisTemplate<String, Object> redisTemplate; public void set(String key, Object value) { redisTemplate.opsForValue().set(key, value); } public Object get(String key) { return redisTemplate.opsForValue().get(key); } public void delete(String key) { redisTemplate.delete(key); } ``` 以上就是Spring Boot整合Redis的简单示例。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值