美文网首页开源框架-SpringBoot系列
springboot2.x整合Redis简单入门

springboot2.x整合Redis简单入门

作者: 会上树的程序猿 | 来源:发表于2019-10-17 22:16 被阅读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的简单使用

    相关文章

      网友评论

        本文标题:springboot2.x整合Redis简单入门

        本文链接:https://www.haomeiwen.com/subject/xeqpmctx.html