资讯专栏INFORMATION COLUMN

SpringBoot集成Redis

kuangcaibao / 2364人阅读

摘要:集成文章目录集成概述测试自定义概述是什么,即远程字典服务。是一个开源的使用语言编写支持网络可基于内存亦可持久化的日志型数据库,并提供多种语言的。与一样,为了保证效率,数据都是缓存在内存中。

SpringBoot集成Redis

1、概述

Redis是什么?

Redis(Remote Dictionary Server ),即远程字典服务。

是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis能该干什么?

  1. 内存存储、持久化,内存是断电即失的,所以需要持久化(RDB、AOF)
  2. 高效率、用于高速缓冲
  3. 发布订阅系统
  4. 地图信息分析
  5. 计时器、计数器(eg:浏览量)
  6. … …

特性

  1. 多样的数据类型

  2. 持久化

  3. 集群

  4. 事务


2、测试Redis

SpringBoot操作数据,Spring-Data、 jbdc、redis… …

SpringData与SpringBoot齐名的项目!

说明:在SpringBoot2.x之后,原来使用的jedis被替换为lettuce

jedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,需使用jedis pool连接池!像BIO模式

lettuce:采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据,更像NIO模式

新建一个项目

注意:

查看底层

源码分析:

@Bean@ConditionalOnMissingBean(  //如果未注入组件条件,我们自己可以定义一个redisTemplate来替换这个默认的    name = {"redisTemplate"})public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {    //默认的 RedisTemplate 没有过多的设置 redis 都是需要序列化的  !    //两个泛型都是 Object  Object的类型,我们往后使用需要强制转换    RedisTemplate<Object, Object> template = new RedisTemplate();    template.setConnectionFactory(redisConnectionFactory);    return template;}@Bean@ConditionalOnMissingBean  //由于String 是redis 中最常用的类型  所有说多带带提出来一个bean!public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {    StringRedisTemplate template = new StringRedisTemplate();    template.setConnectionFactory(redisConnectionFactory);    return template;}

1、导入依赖

2、配置连接

# SpringBoot 所有的配置类 都有一个自动配置类  RedisAutoConfiguration# 自动配置类都会绑定一个 properties 配置文件  RedisProperties#配置 redisspring.redis.host=127.0.0.1spring.redis.port=6379spring.redis

3、测试!

package com.kk;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.connection.RedisConnection;import org.springframework.data.redis.core.RedisTemplate;@SpringBootTestclass Redis01SpringbootApplicationTests {    @Autowired    private RedisTemplate redisTemplate;    @Test    void contextLoads() {        /*        redisTemplate        opsForValue  操作字符串的  类似String        opsForList  操作List  类似List        opsForSet        opsForHash        opsForZSet        opsForGeo        opsForHyperLogLog        除了基本的操作 ,我们常用的方法都可以直接通过redisTemplate 比如事务和基本的CRUD         */        //获取redis的连接对象//        RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();//        connection.flushDb();//        connection.flushAll();        redisTemplate.opsForValue().set("kk1","kk2");        System.out.println(redisTemplate.opsForValue().get("kk1"));    }}

3、自定义redisTemplate

首先先建一个实体类,测试

User类

package com.kk.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import org.springframework.stereotype.Component;import java.io.Serializable;@Component@Data@AllArgsConstructor@NoArgsConstructor//在企业中,我们所有的pojo都会序列化public class User implements Serializable {    private String name;    private int age;}

测试:

@Testpublic void test() throws JsonProcessingException {    //真实的开发一般都使用json来传递对象    User user = new User("kk", 17);    String jsonUser = new ObjectMapper().writeValueAsString(user);//这样就变成了一个json对象了    redisTemplate.opsForValue().set("user",jsonUser);    System.out.println(redisTemplate.opsForValue().get("user"));}

r = new ObjectMapper().writeValueAsString(user);//这样就变成了一个json对象了
redisTemplate.opsForValue().set(“user”,jsonUser);
System.out.println(redisTemplate.opsForValue().get(“user”));
}

==注意:如果不在User类中实现序列化,它会报错==

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/122427.html

相关文章

  • 市长信箱邮件查询服务: SpringBoot集成Docker上Redis服务

    摘要:集成上服务在我的应用中希望能使用一些的特性比如这样的数据结构如果能方便的在开发环境中使用起来就好了如何集成呢这里依然使用和来帮忙通过使用我们就能快速的部署好服务而通过使用我们能快速的把集成进我们的服务并能使用提供的模板方法方便的调用的使用快 SpringBoot集成Docker上Redis服务 在我的应用中, 希望能使用一些redis的特性:比如zset这样的数据结构,如果能方便的在开...

    lanffy 评论0 收藏0
  • 关于springboot集成redis及关于redis的Key 乱码问题

    摘要:一在文件中引入二配置地址等配置数据库索引默认为服务器地址服务器连接端口服务器连接密码默认为空连接池最大连接数使用负值表示没有限制连接池最大阻塞等待时间使用负值表示没有限制连接池中的最大空闲连接连接池中的最小空闲连接连接超时时 一、在pom文件中引入redis org.springframework.boot spring-boot-starter-redis ...

    RancherLabs 评论0 收藏0

发表评论

0条评论

kuangcaibao

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<