开源框架-SpringBoot系列

springboot2.x整合Redis简单入门

2019-10-17  本文已影响0人  会上树的程序猿

Redis是一款开源的基于内存存储key-value的高性能数据库,且如今作为很多公司的缓存组件之一.

Redis的优点

因为Redis是基于内存存储的key-value数据库,所以性能非常出色,每秒能处理10w次的读写操作.

支持 String ,List,Set,SortedSet,Hash这五种基本数据结构.同时还支持 BitmapHyperLogLogGEO 等高级的数据结构.

订阅发布 Pub / Sub 功能
Key 过期策略
事务
支持多个DB
计数
.......

Redis提供了RDB和AOF两种持久化方案,其目的是为了解决Redis集群过程的数据同步和以防宕机操作等.

内置 Redis Cluster ,提供集群方案,实现基于槽的分片方案,从而支持更大的 Redis 规模.

关于Redis多余的不说了,接下来我们来看整合的过程

整合过程

首先我们需要创建一个springboot的项目,我这里还是整合consul来作为服务的注册和发现.

首先我们需要引入Redis的依赖,代码如下:

   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

接着我们来看Redis的配置文件,代码如下:

spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.timeout=2000

接着我们来看Redis的javaConfig代码:

package com.cacmp.starter.redis;

import com.cacmp.starter.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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;

/**
 * @author cb
 */

@Configuration
public class RedisConfig {

@Autowired
private RedisConnectionFactory redisConnectionFactory;
@Bean
public RedisTemplate<String, User> redisTemplate(){
    RedisTemplate<String, User> template = new RedisTemplate<>();
    //value采用Jackson2JsonRedisSerializer的序列化方式
    Jackson2JsonRedisSerializer<User> redisSerializer = new Jackson2JsonRedisSerializer<User>(User.class);
    template.setValueSerializer(redisSerializer);
    template.setHashValueSerializer(redisSerializer);
    //key采用StringRedisSerializer的方式
    template.setKeySerializer(new StringRedisSerializer());
    template.setHashKeySerializer(new StringRedisSerializer());
    //设置连接
    template.setConnectionFactory(redisConnectionFactory);
    return template;
}

该配置主要的目的是配置Redis的key和value序列化的方式,这里key采用的是StringRedisSerializer方式,value采用的是Jackson2JsonRedisSerializer方式.我们这里再来创建一个实体User,代码如下:

package com.cacmp.starter.entity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
public class User {
private String userName;
private String password;
}

创建一个接口,代码如下:

''''
package com.cacmp.starter.controller;
import com.cacmp.starter.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @author cb
 */
@RestController
public class RedisController {

@Autowired
private RedisTemplate redisTemplate;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@RequestMapping("user")
public User addUserInfo(){
    User user = new User();
    user.setUserName("小明");
    user.setPassword("admin");

    redisTemplate.opsForValue().set("user",user);

    Object test = redisTemplate.opsForValue().get("user");
    String s = stringRedisTemplate.opsForValue().get("test");
    System.out.println(s);

    System.out.println(test.toString());

    return user;
}

启动Redis服务器,访问http://localhost:8080/user,打开Redis客户端我们会发现数据库中多了一组user的key-value数据,截图如下:

微信截图_20191017221036.png

当我们访问接口时,会在控制台得到如下的结果:

微信截图_20191017185241.png 微信截图_20191017185141.png

以上就是springboot2.x整合Redis的简单使用

上一篇下一篇

猜你喜欢

热点阅读