首页 > 数据库 >Redis4:Redis的Java客户端

Redis4:Redis的Java客户端

时间:2024-11-06 21:19:04浏览次数:3  
标签:Java Redis4 Redis Jedis RedisTemplate jedis SpringDataRedis StringRedisTemplate 

欢迎来到“雪碧聊技术”CSDN博客!

在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。

让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!感谢您的关注与支持,期待在“雪碧聊技术”与您共同成长!

目录

一、Redis的Java客户端有哪些?

二、Jedis

1、Jedis快速入门

①新建一个maven类型的project

②引入依赖

③建立连接

④测试string

⑤ 释放资源

演示:

总结

2、Jedis连接池

三、SpringDataRedis

1、认识SpringDataRedis

①什么是SpringDataRedis?

②SpringDataRedis提供的RedisTemplate工具类

2、SpringDataRedis(RedisTemplate工具类)的快速入门

①新建一个SpringBoot项目(这一步不是关键)

②引入两个依赖

③配置文件

④注入RedisTemplate对象

⑤编写测试

⑥查看运行结果

3、StringRedisTemplate的使用

①为什么要是用StringRedisTemplate?

②解决方案:使用StringRedisTemplate,来代替RedisTemplate

③使用StringRedisTemplate向redis中,存入对象(JSON格式)

4、StringRedisTemplate操作Hash类型

结语


一、Redis的Java客户端有哪些?

其中Spring Data Redis兼容了Jedis和lettuce。

我们下面就会学习jedis和Spring Data Redis。

二、Jedis

1、Jedis快速入门

①新建一个maven类型的project

②引入依赖

③建立连接

④测试string

⑤ 释放资源

演示:

①引入jedis依赖

这里顺便引入以下junit单元测试的依赖,方便我们后面展示:

②写代码

public class JedisTest {
    private Jedis jedis;

    @BeforeEach  //在每个@Test方法前执行
    void setUp(){
        //1、建立连接
        jedis = new Jedis("192.168.6.100", 6379);
        //2、设置密码
        jedis.auth("123321");
        //3、选择库
        jedis.select(0);
    }

    @Test
    void testString(){
        //存入数据
        String result = jedis.set("name", "虎哥");
        System.out.println("result = "+result);//操作成功,则返回"OK"
        String name = jedis.get("name");
        System.out.println("name = "+name);
    }

    @Test
    void testHash(){
        //插入hash数据
        jedis.hset("user:1", "name", "Jack");
        jedis.hset("user:1", "age", "21");
        //获取数据
        Map<String, String> map = jedis.hgetAll("user:1");
        System.out.println(map);
    }

    @AfterEach  //在每个@Test方法后执行
    void tearDown(){
        if(jedis != null){
            jedis.close();
        }
    }
}

两个Test方法的执行结果如下:

总结

2、Jedis连接池

由于jedis本身是线程不安全的,并且频繁地创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式。

工具类编写:

举例:

①编写连接池工具类

新建一个utils包,创建下面的工具类

public class JedisConnectionFactory {
    private static final JedisPool jedisPool;

    static{
        //配置连接池
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(8);//该连接池最多创建8个连接
        poolConfig.setMaxIdle(8);//该连接池最多有8个空闲连接
        poolConfig.setMinIdle(0);//该连接池最少有0个空闲连接
        poolConfig.setMaxWaitMillis(1000);//当连接池中,没有连接可用,最多等待1000毫秒(1秒)
        //创建连接池对象
        jedisPool = new JedisPool(poolConfig,
                "192.168.6.100", 6379, 1000, "123321");

    }

    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

②使用连接池工具类,来获取连接

之前有的代码意义也变了:

③测试之前的代码

以上就是Jedis的全部内容。

三、SpringDataRedis

1、认识SpringDataRedis

①什么是SpringDataRedis?

②SpringDataRedis提供的RedisTemplate工具类

其中不同的API,会操作Redis不同类型的数据。

2、SpringDataRedis(RedisTemplate工具类)的快速入门

①新建一个SpringBoot项目(这一步不是关键)

②引入两个依赖

③配置文件

默认使用redis的0号库。如果你想选择其他库,请指定库:

注意:此处SpringDataRedis默认使用的是lettuce,如果你想用Jedis实现,就再需要手动导入一下Jedis的依赖。

④注入RedisTemplate对象

⑤编写测试

⑥查看运行结果

以上就是SpringDataRedis的简单使用。

3、StringRedisTemplate的使用

①为什么要是用StringRedisTemplate?

看看上面存的name-虎哥这个值,有没有问题:

为什么存入的键值对,会变成如此的样子?

答案:因为没有进行序列化,就导致原来的内容被剁碎了,于是看起来就好像乱码。

②解决方案:使用StringRedisTemplate,来代替RedisTemplate

③使用StringRedisTemplate向redis中,存入对象(JSON格式)

首先需要引入jackson依赖:

然后,新建一个ObjectMapper的对象:

最后,在业务中,对Redis进行存、取对象时,都要手动转为JSON字符串。

查看结果:

4、StringRedisTemplate操作Hash类型

运行结果:

以上就是RedisTemplate和StringRedisTemplate的全部内容。

结语

至此,Redis基础篇完成了。

下面要开始Redis实战篇了。

标签:Java,Redis4,Redis,Jedis,RedisTemplate,jedis,SpringDataRedis,StringRedisTemplate,
From: https://blog.csdn.net/qq_63981644/article/details/143576491

相关文章

  • Java中数组“扩容”
    数组一旦创建是不能改变大小的!!!!!此处的数组"扩容"是看起来的像扩容的一种使用方式而已,不是真的改变数组大小.....可以实现,让数组用的时候感觉变大了....思路:其实创建了一个更大的数组,然后将之前数组元素拷贝大数组中,然后将大数组返回给你用。publicstaticvoidmai......
  • 学习java的第三天,循环语句(for-while-do while),数组,随机数
    for循环for循环是我最喜欢使用的循环语句,清晰,简洁。##for循环的格式为:for(初始化值,如inti=0;循环条件,如i<10;重新赋值,如i++){ 代码块}注:1.初始化值必须为表达式,如i=0"for(i=0;i<3;i++)"或for(inti=0;i<3;i++),但不可以是一个单独的变量如for(i;i<3;i++)这样会报错!......
  • java计算机毕业设计最优网络购票系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今信息化快速发展的时代,网络购票已经成为人们获取票务的主要方式之一。随着互联网技术的不断进步以及人们出行需求的日益增长,传统的购票方式......
  • java计算机毕业设计在线小说系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着互联网技术的飞速发展,数字阅读已经成为人们获取知识和娱乐的重要方式之一。在线小说作为数字阅读的重要组成部分,拥有庞大的用户群体。据相关......
  • java微服务的异常
    1.依赖异常须知:【如果项目的结构是单个模块的,需要给每个单个模块添加起步依赖spring-boot-starter-parent,指定版本】【如果项目的结构是子父模块的,只需要给父模块添加起步依赖spring-boot-starter-parent,指定版本,所有子模块引入父模块就行】配置文件你指定了该项目......
  • Java超类与子类
    //角色packageex1;publicclassCharacter{privatefinalStringname;//角色名字privateinthp;//角色血量publicstaticintcharactsum=0;//统计次数privatestaticStringcharmask="普通角色";//角色的职业publicCharacter......
  • Java面向对象进阶学习一
    this关键字使用this使用的变量时属性,没有使用的是形参this可以调用结构,成员变量,方法this的理解,当前对象(在方法中调用时),或当前正在创建的对象(在构造器中调用时)针对方法内的使用情况一般情况下,我们通过对想a调用方法,可以在方法内调用当前对象a的属性或其他的方法,此时,我们可......
  • 5.Java 数组(一维数组、二维数组、数组实例实操)
    一、数组1、基本介绍【数据类型】[]【数组名】=new【数据类型】[【长度】];【数据类型】[]【数组名】={【元素1】,【元素2】...};【数据类型】[]【数组名】=new【数据类型】[]{【元素1】,【元素2】...};数组中的元素可以是任何数据元素,包括基本类......
  • LeetCode100之接雨水(42)--Java
    1.问题描述        给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。        示例1输入:height=[0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1]表示的高度图,在这种情况下......
  • 【Java SE语法】抽象类(abstract class)和接口(interface)有什么异同?
    目录1.抽象类与接口的基本概念1.1 抽象类1.2接口2.抽象类与接口的异同2.1相同点2.2不同点3.拓展知识:多态与设计模式3.1多态3.2设计模式4.结论        在软件工程中,设计模式和代码结构的选择对于构建可维护、可扩展的系统至关重要。抽象类(Abstrac......