Redis——SringBoot集成Redis

这篇具有很好参考价值的文章主要介绍了Redis——SringBoot集成Redis。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

创建项目

导入如下依赖

Redis——SringBoot集成Redis,Redis,redis,数据库,缓存

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

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

源码分析

#springboot 所有配置类都有一个自动配置类 RedisAutoConfiguration

# 自动配置类都会绑定一个properties配置文件 RedisProperties

在这个自动配置类里面有一个RedisTemplate这一个模板。

类比jdbc和rabbitmq都会有JdbcTemplate和RabbitTemplate等模板。只要操作这些个模板就可以直接使用。

里面有一个注解    @ConditionalOnMissingBean(name = {"redisTemplate"})

如果不存在这个Bean时该类生效,所以可以自定义一个redisTemplate类顶替默认的。

        //默认的redistemplate没有过多设置,但是redis对象都是需要序列化!

        //两个泛型都是Object,后面使用需要强制转换。

@AutoConfiguration
@ConditionalOnClass({RedisOperations.class})
@EnableConfigurationProperties({RedisProperties.class})
@Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
public class RedisAutoConfiguration {
    public RedisAutoConfiguration() {
    }

    @Bean
    @ConditionalOnMissingBean(name = {"redisTemplate"})
    @ConditionalOnSingleCandidate(RedisConnectionFactory.class)
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<Object, Object> template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }

    @Bean
    @ConditionalOnMissingBean //string类型是最常使用的类型,因此单独提供了一个String的Template
    @ConditionalOnSingleCandidate(RedisConnectionFactory.class)
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
        return new StringRedisTemplate(redisConnectionFactory);
    }
}

 配置属性类

redis可以配置的东西都在这个专属的配置类里面,开头是Spring.redis 

Redis——SringBoot集成Redis,Redis,redis,数据库,缓存

使用.yml格式的配置文件有自动提示,比较好写。这里底层连接池用的是lettuce,也可以配置连接池的参数,用jredis时需要导入jredis的包并配置连接参数,格式和lettuce一样。

Redis——SringBoot集成Redis,Redis,redis,数据库,缓存

测试类中

Redis——SringBoot集成Redis,Redis,redis,数据库,缓存

opsFor有不同的方法可以操作不同的类型。

基本的事务操作和crud都可以用redisTemplate操作。

@SpringBootTest
class RedisSbApplicationTests {

    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    void contextLoads() {
        //获取redis的连接对象
//        RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
//        connection.flushDb();
//        connection.flushAll();
        redisTemplate.opsForValue().set("mykey","yanghuiyu");
        System.out.println(redisTemplate.opsForValue().get("mykey"));
    }
}

可以看见因为没有在RedisTemplate设置序列化,key有问题 

Redis——SringBoot集成Redis,Redis,redis,数据库,缓存

自定义RedisTemplate

修改序列化都在这里面相关部分。

Redis——redis的java客户端+(Jedis和SpringDataRedis)_北岭山脚鼠鼠的博客-CSDN博客

真实开发会封装RedsiUtil工具类,简化开发代码。 文章来源地址https://www.toymoban.com/news/detail-648245.html

到了这里,关于Redis——SringBoot集成Redis的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1 - 搭建Redis数据库服务器|LNP+Redis

    数据库服务软件分为2类: 关系型数据库服务软件 简称 RDBMS 按照预先设置的组织结构 将数据存储在物理介质上 数据之间可以做关联操作 非关系型数据库服务软件 简称 NoSQL 不仅仅是SQL 不需要预先定义数据存储结构 每条记录可以有不同的数据类型和字段个数 只需要 key valu

    2024年01月25日
    浏览(28)
  • 126、高频Redis面试题:如何保证Redis和数据库数据一致性

    问题:如果数据库中的某条数据放入缓存后,又马上被更新了,那我们应该如何更新缓存 缺点: 如果先更新缓存成功,在更新数据库的时候失败,这时候会导致数据不一致;缓存的作用是不是临时将我们数据保存在内存,便于提高查询速度;但是如果某条数据在数据库中都

    2024年02月13日
    浏览(24)
  • Redis 数据库 NoSQL

    目录 一、NoSQL 二、为什么会出现NoSQL技术 三、NoSQL的类别 键值(Key-Value)存储数据库 列存储数据库 文档型数据库 图形(Graph)数据库 四、NoSQL适应场景 五、在分布式数据库中CAP原理 1、CAP 2、BASE NoSQL(Not Only SQL)即不仅仅是SQL,泛指非关系型的数据库,它可以作为关系型数

    2024年02月12日
    浏览(18)
  • Redis 数据库高可用

    (1)在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 (2)在Redis中,保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安全不会丢失等。 实现高可用的技

    2024年02月15日
    浏览(19)
  • Redis缓存数据库(四)

    目录 一、概述 1、Redis Sentinel 1.1、docker配置Redis Sentinel环境 2、Redis存储方案 2.1、哈希链 2.2、哈希环 3、Redis分区(Partitioning)  4、Redis面试题 Redis Sentinel为Redis提供了 高可用解决方案 。实际上这意味着使用Sentinel可以部署一套Redis, 在没有人为干预的情况下去应付各种各样的失

    2024年02月05日
    浏览(29)
  • 【后端面经-数据库】Redis详解——Redis基本概念和特点

    目录 1. Redis基本概念 2. Redis特点 2.1 优点 2.2 缺点 3. Redis的应用场景 面试模拟 参考资料 声明:Redis的相关知识是面试的一大热门知识点,同时也是一个庞大的体系,所涉及的知识点非常多,如果用一篇文章罗列,往往会陷入知识海洋中无法感知其全貌,因此,这段时间我会试

    2024年02月13日
    浏览(21)
  • redis数据库和MongoDB数据库基本操作

    (1) 设置键值 (2) 读取键值 (3) 数值类型自增1 (4) 数值类型自减1 (5) 查看值的长度 (1)对列表city插入元素:Shanghai Suzhou Hangzhou (2)将列表city里的头部的元素移除 (3) 对一个已存在的列表插入新元素 (4)查看list的值长度 (1) 设置一个hash表,order表里包括的

    2024年02月16日
    浏览(31)
  • redis的缓存更新策略以及如何保证redis与数据库的数据一致性

    redis的缓存更新策略有这么几种: 1、由应用直接和redis以及数据库相连接:         查询数据时,应用去redis中查询,查不到的话再由应用去数据库中查询,并将查询结果放在redis;         更新数据时,由应用去触发redis数据的删除以及数据库的update。 2、应用只跟redi

    2024年02月13日
    浏览(27)
  • 数据库攻防学习之Redis

    0x01 redis学习 在渗透测试面试或者网络安全面试中可能会常问redis未授权等一些知识,那么什么是redis?redis就是个数据库,常见端口为6379,常见漏洞为未授权访问。 0x02 环境搭建 这里可以自己搭建一个redis环境,也可以用vulfocus搭建一个环境,可以两个都搭建,因为一些攻击

    2024年02月03日
    浏览(19)
  • Redis多机数据库实现

    为《Redis设计与实现》笔记 客户端可以使用 SLAVEOF 命令将指定服务器设置为该服务器的主服务器 127.0.0.1:6379 将被设置为 127.0.0.1:123456 的主服务器 旧版复制功能的实现 Redis的复制功能分为同步(sync)和命令传播(command propagate)两个阶段 同步:将从服务器的数据库状态更新至

    2024年02月09日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包