Java教程

spring boot——集成redis——示例参考——stringRedisTemplate与redisTemplate

本文主要是介绍spring boot——集成redis——示例参考——stringRedisTemplate与redisTemplate,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

POM文件:

 

<?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 https://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.8.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.ch</groupId>
	<artifactId>ch6_9</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>ch6_9</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>11</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.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>

  

 

 

 

 

 

 

 

 

 

 

 

springboot的应用中,默认配置了数据库名为db0,服务器地址为localhost、端口号为6379的redis;

 

只要引入了   spring-boot-starter-data-redis  依赖就可以使用默认配置;

 

所以在  application.properties  中可以省略不写;

 

 

 

 

 

 




repository包

 

StudentRepository.java

 

package com.ch.ch6_9.repository;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Repository;
import com.ch.ch6_9.entity.Student;
@Repository
public class StudentRepository
{
    @SuppressWarnings("unused")
    @Autowired
    private StringRedisTemplate stringRedisTemplate;



    @SuppressWarnings("unused")
    @Autowired
    private RedisTemplate<Object, Object> redisTemplate;


    /**
     * 使用@Resource注解指定stringRedisTemplate,可注入基于字符串的简单属性操作方法
     * ValueOperations<String, String> valueOpsStr = stringRedisTemplate.opsForValue();
     */
    @Resource(name="stringRedisTemplate")
    ValueOperations<String, String> valueOpsStr;




    /**
     * 使用@Resource注解指定redisTemplate,可注入基于对象的简单属性操作方法
     * ValueOperations<Object, Object> valueOpsObject = redisTemplate.opsForValue();
     */
    @Resource(name="redisTemplate")
    ValueOperations<Object, Object> valueOpsObject;




    /**
     * 保存字符串到redis
     */
    public void saveString(String key, String value)
    {
        valueOpsStr.set(key, value);
    }




    /**
     * 保存对象到redis
     */
    public void saveStudent(Student stu)
    {
        valueOpsObject.set(stu.getSno(), stu);
    }




    /**
     * 保存List数据到redis
     */
    public void saveMultiStudents(Object key, List<Student> stus)
    {
        valueOpsObject.set(key, stus);
    }




    /**
     * 从redis中获得字符串数据
     */
    public String getString(String key)
    {
        return valueOpsStr.get(key);
    }




    /**
     * 从redis中获得对象数据
     */
    public Object getObject(Object key)
    {
        return valueOpsObject.get(key);
    }



}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

entity包


Student.java

package com.ch.ch6_9.entity;
import java.io.Serializable;
public class Student implements Serializable
{
	private static final long serialVersionUID = 1L;
	private String sno;
	private String sname;
	private Integer sage;

	public Student()
	{
		super();
	}
	public Student(String sno, String sname, Integer sage)
	{
		super();
		this.sno = sno;
		this.sname = sname;
		this.sage = sage;
	}

	public String getSno()
	{
		return sno;
	}

	public void setSno(String sno)
	{
		this.sno = sno;
	}

	public String getSname()
	{
		return sname;
	}

	public void setSname(String sname)
	{
		this.sname = sname;
	}

	public Integer getSage()
	{
		return sage;
	}

	public void setSage(Integer sage)
	{
		this.sage = sage;
	}
}

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

controller包

 

TestRedisController.java

 

package com.ch.ch6_9.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ch.ch6_9.entity.Student;
import com.ch.ch6_9.repository.StudentRepository;
@RestController
public class TestRedisController
{
    @Autowired
    private StudentRepository studentRepository;

    @RequestMapping("/save")
    public void save()
    {
        studentRepository.saveString("uname", "陈恒");
        Student s1 = new Student("111","陈恒1",77);
        studentRepository.saveStudent(s1);
        Student s2 = new Student("222","陈恒2",88);
        Student s3 = new Student("333","陈恒3",99);
        List<Student>  stus = new ArrayList<Student>();
        stus.add(s2);
        stus.add(s3);
        studentRepository.saveMultiStudents("mutilStus",stus);
    }

    @RequestMapping("/getUname")
    @Cacheable(value = "myuname")
    public String getUname(String key)
    {
        System.out.println("测试缓存");
        return studentRepository.getString(key);
    }


    @RequestMapping("/getStudent")
    public Student getStudent(String key)
    {
        return (Student)studentRepository.getObject(key);
    }


    @SuppressWarnings("unchecked")
    @RequestMapping("/getMultiStus")
    public List<Student> getMultiStus(String key)
    {
        return (List<Student>)studentRepository.getObject(key);
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ch69Application.java

package com.ch.ch6_9;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
@EnableCaching
@SpringBootApplication
public class Ch69Application
{
    public static void main(String[] args)
    {
        SpringApplication.run(Ch69Application.class, args);
    }

    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
    {
        RedisTemplate<Object, Object> rTemplate = new RedisTemplate<Object, Object>();
        rTemplate.setConnectionFactory(redisConnectionFactory);

        @SuppressWarnings({ "unchecked", "rawtypes" })
        Jackson2JsonRedisSerializer<Object>  jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);

        //设置值的序列化采用Jackson2JsonRedisSerializer
        rTemplate.setValueSerializer(jackson2JsonRedisSerializer);

        //设置键的序列化采用StringRedisSerializer
        rTemplate.setKeySerializer(new StringRedisSerializer());
        return rTemplate;
    }
}

 

这篇关于spring boot——集成redis——示例参考——stringRedisTemplate与redisTemplate的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!