Springboot整合redis

原文链接:https://blog.csdn.net/SDDDLLL/article/details/103703627

去年学习的Redis,刚刚学习完就迫不及待的在实战中用了一下,走了很多坑不过幸好都填上了,需求的不断变化发现用不上Redis,一开始去掉了,后来想想加进来比较合适。这篇文章主要讲解Springboot如何整合开发Redis实现一个基本的案例。使用的是目前Springboot2.x的Lettuce版本。希望对你有帮助。

这里因为不是专门讲解Redis的,所以假定你已经学习了Redis,只是希望在SpringBoot2.x中使用。

废话不多说,直接按照步骤开始,以下的案例均在我自己的电脑上测试成功,如有问题可以联系我。

一、开发环境

名称版本 Idea 2018专业版(已破解) Maven 4.0.0 SpringBoot 2.2.2 Redis 3.2.1 RedisDesktopManager 0.8.8 jdk 1.8

版本的话其实差不不大就没问题,最主要的就是Springboot的版本,在这里说一下Jedis和Lettuce的区别在哪?

1、Jedis 是直连模式,在多个线程间共享一个 Jedis 实例时是线程不安全的,每个线程都去拿自己的 Jedis 实例,当连接数量增多时,物理连接成本就较高了。

2、Lettuce的连接是基于Netty的,连接实例可以在多个线程间共享,如果你不知道Netty也没事,大致意思就是一个多线程的应用可以使用同一个连接实例,而不用担心并发线程的数量。通过异步的方式可以让我们更好的利用系统资源。

既然有这么大的好处,干脆就用了这个,跟上时代的变化。下面新建一个SpringBootRedis项目,开始整合。

二、整合

步骤一:添加依赖

步骤二:application.properties配置文件

Redis数据库索引(默认为0)
spring.redis.database=0
Redis服务器地址
spring.redis.host=localhost
Redis服务器连接端口
spring.redis.port=6379
Redis服务器连接密码(默认为空)
spring.redis.password=
连接池最大连接数(使用负值表示没有限制) 默认 8
spring.redis.lettuce.pool.max-active=8
连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
spring.redis.lettuce.pool.max-wait=-1
连接池中的最大空闲连接 默认 8
spring.redis.lettuce.pool.max-idle=8
连接池中的最小空闲连接 默认 0
spring.redis.lettuce.pool.min-idle=0

或者application.yml配置文件

当然如果你的属性文件是yml的,把格式调整一下就OK了。

步骤三:新建config包,创建RedisConfig类

默认情况下RedisTemplate模板只能支持字符串,我们自定义一个RedisTemplate,设置序列化器,这样我们可以很方便的操作实例对象。

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate, Serializable>
            redisTemplate(LettuceConnectionFactory connectionFactory) {
        RedisTemplate, Serializable> redisTemplate = new RedisTemplate<>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setConnectionFactory(connectionFactory);
        return redisTemplate;
    }
}

步骤四:新建bean包,创建User类

public class User implements Serializable {
    private Integer id;
    private String userName;
    private String userSex;
    public User() { }
    public User(Integer id, String userName, String userSex) {
        this.id = id;
        this.userName = userName;
        this.userSex = userSex;
    }

步骤五:测试插入一个User

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootredisApplicationTests {
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    public void testObj() throws Exception {
        User user=new User(1, "java的架构师技术栈", "man");
        ValueOperations, User> operations=redisTemplate.opsForValue();
        operations.set("fdd2", user);
        boolean exists=redisTemplate.hasKey("fdd2");
        System.out.println("redis是否存在相应的key"+exists);
        User getUser = (User)redisTemplate.opsForValue().get("fdd2");
        System.out.println("从redis数据库获取的user:"+getUser.toString());
    }
}

在上面这个例子中我们使用redisTemplate调用了opsForValue会得到一个ValueOperations操作。这个是专门操作String类型的数据,所以里面的键值对中键为String,而值是我们的User。当然redisTemplate还为我们提供了下面几个。

redisTemplate.opsForValue();

具体使用的时候,你可以根据自己的数据类型选择相应的方法即可,网上有各种RedisUtil工具类。

Original: https://www.cnblogs.com/zhuawang/p/13536597.html
Author: 上校
Title: Springboot整合redis

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/528960/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 2017年腾讯 秋招软件开发笔试编程题回忆版

    2017 年腾讯 秋招软件开发笔试编程题回忆版 (所有题目大致描述如下,并非完整的题目回忆,但意思大致一样) 1、又一个魔法城市,城市里面有n个魔法城堡,序号为0,1,2。。。n-…

    Linux 2023年6月6日
    099
  • Vue3

    setup 函数时,它将接受两个参数:(props、context(包含attrs、slots、emit)) setup函数是处于 生命周期函数 beforeCreate 和 Cr…

    Linux 2023年6月13日
    089
  • [20210930]bbed读取数据块7 fffext.sh.txt

    [20210930]bbed读取数据块7 fffext.sh.txt –//一般bash shell脚本很少考虑执行效率,仅仅考虑利用它快速解决工作中遇到的问题. &#…

    Linux 2023年6月13日
    089
  • 软件工程 结构法方法 第2篇随笔

    建立系统的功能模型图 首先:建立系统环境图,确定系统边界 其中: 数据流为:销售的商品,日销售额等;三个输入流,三个输出流 ​ 数据源为:营业员,经理,收款员 ​ 数据潭为:经理,…

    Linux 2023年6月7日
    0106
  • LVS负载均衡

    LVS负载均衡 LVS负载均衡 一、LVS是什么 二、LVS的作用 三、lvs的三种工作模式 1.基于NAT的LVS模式负载均衡 2.基于TUN模式的LVS负载均衡 3.LVS(D…

    Linux 2023年6月6日
    098
  • linux系统(centos)下kvm虚拟化用命令行给虚拟机添加硬盘

    linux系统(centos)下kvm虚拟化用命令行给虚拟机添加硬盘 背景 公司有用单台服务器使用kvm装虚拟机,利用webvirtmgr进行界面管理。当虚拟机创建时固定硬盘后,不…

    Linux 2023年6月8日
    0111
  • nodejs调用jar

    目前nodejs调用jar主要有两种方式: 通过创建子进程运行java -jar命令调用包含main方法的jar 使用node-java通过c++桥接调用jar 方法一(子进程运行…

    Linux 2023年6月14日
    095
  • MySQL——索引结构

    索引:用于快速查找数据。 索引是将数据的一些关键信息通过特定的数据结构存储到一片新的空间中,这样在文件查找的时候能快速找到。 mysql索引类型: B+TREE、HASH、R-TR…

    Linux 2023年6月7日
    0113
  • Python中使用%s占位符生成sql与literal转义防止sql注入攻击原理浅析

    问题背景 在后端服务中经常需要通过传入参数动态生成sql查询mysql,如查询用户信息、资产信息等,一条常见的sql如下: SELECT vip, coin FROM user_a…

    Linux 2023年6月6日
    0139
  • MySQL实现 group_concat 排序

    MySQL支持实现group_concat() 内部自定义排序: 实例: 新建一张表 reward,表中数据如下: SQL: SELECT uid, GROUP_CONCAT(mo…

    Linux 2023年6月13日
    0120
  • docker安装zabbix

    Zabbix 为每个组件都提供了 Docker 镜像 ,作为弹性和自给自足的容器,促使加快部署和更新过程。Zabbix 组件支持 MySQL 和 PostgreSQL 数据库、Ap…

    Linux 2023年6月6日
    092
  • Web前端基础精品入门(HTML+CSS+JavaScript+JS)[爱前端]听课笔记3:三角形的制作

    菜单中有的项目有夏季菜单,需要添加一个三角形,这个三角形是利用两个边框不同颜色产生的楔形制作的 设置盒子的高度和宽度均为0,边框合适的大小,透明颜色,对应边设置高度、颜色 几个变形…

    Linux 2023年6月14日
    0109
  • 辗转相除法:(求最大公约数)

    辗转相除法:(最大公约数)又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除…

    Linux 2023年6月7日
    0120
  • 网络设备配置–7、配置单臂路由实现跨vlan通信

    一、前言 同系列前几篇:网络设备配置–1、配置交换机enable、console、telnet密码网络设备配置–2、通过交换机划分vlan网络设备配置&#8…

    Linux 2023年6月8日
    0114
  • Linux入门命令

    命令入门 命令提示符详解 find cut sort wc sed aws [root@localhost ~]# # /root [lilei@node1 ~]$ #/home/…

    Linux 2023年6月11日
    092
  • Redis

    Redis原创笑笑师弟 最后发布于2018-12-21 14:17:59 阅读数 1780 收藏展开目录 redis简介 redis功能 redis学习步骤 windows系统下的…

    Linux 2023年5月28日
    0107
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球