Java与Redis的集成以及Redis中的项目应用

一、Java连接Redis

Redis与MySQL都是数据库,java操作redis其实跟操作mysql的过程是一样的。

1.1 导入依赖

打开IDEA,进入Java项目,导入pom依赖,代码如下:


    redis.clients
    jedis
    2.9.0

1.2 Redis服务器准备

导入依赖后,找到redis.bat双击启动redis(时常忘记文件位置的可以新开快捷方式置于桌面),如下:

Java与Redis的集成以及Redis中的项目应用_第1张图片

1.3 建立连接

在java项目包下,新建一个名为redis的Package用来存放建立链接的java代码,如下:

Java与Redis的集成以及Redis中的项目应用_第2张图片

 在redis包下,新建java类,并添加以下代码,如下:

 public static void main(String[] args) {
//      建立链接
      Jedis jedis = new Jedis("localhost",6379);//IP地址+端口号
//      设置密码
      jedis.auth("123456");
//      测试链接是否成功
        System.out.println(jedis.ping());
    }

然后启动Demo1方法,进行测试链接是否成功,效果如下:

 Java与Redis的集成以及Redis中的项目应用_第3张图片

二、Java操作Redis的常见类型数据存储

在进行存储数据前,我们先需要将Java链接上Redis,参考第一模块,如上。

链接上Redis之后,才可进行数据存储。

2.1 String(字符串)存取值操作

2.1.1 指定存储数据的数据库与存储入库操作

代码与注释如下:

public class Demo2 {
    public static void main(String[] args) {
//      建立链接
        Jedis jedis = new Jedis("localhost",6379);//IP地址+端口号
//      设置密码
        jedis.auth("123456");

//      String的操作
        jedis.select(1);//指定数据库
        jedis.set("KISS","Kisship添加数据了");//往指定的数据库中添加数据
    }
}

效果如下: 

Java与Redis的集成以及Redis中的项目应用_第4张图片

2.1.2 存储数据的修改与查询

添加以下代码:

jedis.set("KISS","Kisship将原有数据修改了");//将原先存储的数据修改
System.out.println(jedis.get("KISS"));//查询

修改效果如下:

Java与Redis的集成以及Redis中的项目应用_第5张图片

查询效果如下:

2.1.3 数据临时存储

在Demo2中加入以下代码:

jedis.setex("time",20,"设置过期时间为20秒");//为"time"键设置过期时间
System.out.println(jedis.ttl("time"));//获取键的剩余生存时间并且打印返回

代码解释:

  • setex 是 Redis 命令的一部分,示例的方法用于设置一个键值对,并为该键设置一个过期时间。
  • ttl 是 Redis 命令的一部分,它用于获取键的剩余生存时间。

效果展示,如下:

还未过期前的效果:

Java与Redis的集成以及Redis中的项目应用_第6张图片

过期后的效果:

Java与Redis的集成以及Redis中的项目应用_第7张图片

2.2 哈希数据结构存取值操作

案例:

  • 创建一个名为 "user" 的哈希表,并向其中添加三个字段:"name"、"hobby" 和 "age",并分别设置它们的值。

2.2.1 存值(新增与修改)

1. Jedis存值

新建Demo3,并添加以下代码:

public static void main(String[] args) {
//      建立链接
      Jedis jedis = new Jedis("localhost",6379);//IP地址+端口号
//      设置密码
      jedis.auth("123456");

//      哈希数据结构的操作
//      哈希表是 Redis 中的一种数据结构,它允许你在一个键下存储多个字段和与这些字段相关联的值。
        jedis.select(1);//指定数据库
//      创建一个名为 "user" 的哈希表,并向其中添加三个字段:"name"、"hobby" 和 "age",并分别设置它们的值
        jedis.hset("user","name","Kissship");//姓名,将 "name" 字段设置为 "Kissship"
        jedis.hset("user","hobby","Play Computer games");//爱好设置
        jedis.hset("user","age","18");//年龄设置
    }

效果如下:

Java与Redis的集成以及Redis中的项目应用_第8张图片

2. 通过Map对象存值

以下是具体实现代码与逻辑详解:

Demo3:

Map map = new HashMap();//创建一个名为map的HashMap对象,用于存储键值对数据
map.put("name","鸭翅牙齿");//名字
map.put("hobby","look girls");//爱好
map.put("age","17");//年龄
RedisUtils.setHashMap(jedis,"user",map);//调用自定义的工具类方法setHashMap,并传递三个参数

RedisUtils:

public class RedisUtils {
    //通过Java中的Map对象进行数据存储
    public static void setHashMap(Jedis jedis, String Key, Map map) {
        //空值检查
        //首先检查传入的map对象是否为非空且包含至少一个键值对。如果map为空或不包含键值对,方法不会执行任何操作,直接返回。
        if (map != null && map.size() > 0) {
            //遍历Map并存储数据
            Set keys = map.keySet();//如果map不为空且包含键值对,方法会通过map.keySet()获取所有的键(字段名)。
            for (String k : keys) {//在循环中,对于每个键k,map.get(k)获取到对应的值(字段值)。
                jedis.hset(Key,k,map.get(k));//将当前键值对存储到Redis
            }
        }
    }
}

运行后的效果如下:

Java与Redis的集成以及Redis中的项目应用_第9张图片

2.2.2 取值(查询)

1. 获取哈希表中特定字段的值(单个查询)
System.out.println(jedis.hget("user", "hobby"));//从名为"user"的哈希表中获取键为"hobby"的字段的值,并将其打印到控制台
2. 获取整个哈希表的内容(查询所有)
System.out.println(jedis.hgetAll("user"));//获取名为"user"的哈希表中的所有字段和它们的值,然后将它们打印到控制台

代码执行效果如下:

Java与Redis的集成以及Redis中的项目应用_第10张图片

2.2.3 删除

1. 删除特定字段(单个属性删除)
Long hdel = jedis.hdel("user","age");//删除名为"user"的哈希表中的特定字段"age"及其中的值

单个删除代码执行效果如下:

Java与Redis的集成以及Redis中的项目应用_第11张图片

2. 删除哈希表(删除所有)
jedis.del("user");//删除名为"user"的键以及与之相关的哈希表

删除所有代码执行效果如下:

Java与Redis的集成以及Redis中的项目应用_第12张图片

2.3 列表存取值操作

在Java中操作Redis列表(list)进行取值时,通常会使用Redis的lindexlrange命令,这两个命令有不同的逻辑:

  1. 使用lindex命令

    • lindex命令用于获取列表中指定索引位置的元素。索引从0开始,表示列表的第一个元素。
    • 例如,jedis.lindex("mylist", 1)将返回"mylist"列表中索引为1的元素。
    • 如果索引超出了列表的范围(即索引小于0或大于等于列表的长度),lindex会返回null。
  2. 使用lrange命令

    • lrange命令用于获取列表中指定范围的元素。
    • 你可以指定起始索引和结束索引,从而获取这个范围内的元素,包括起始索引和结束索引。
    • 例如,jedis.lrange("mylist", 0, 2)将返回"mylist"列表中的前3个元素,因为索引0表示第一个元素,索引2表示第三个元素。
    • 如果你希望获取整个列表,可以使用jedis.lrange("mylist", 0, -1),其中-1表示列表的最后一个元素。

2.3.1 存值

//将七首音乐歌曲的名称依次添加到名为"music"的列表的左侧,即列表的开头。如果"music"列表之前不存在,它会被创建,然后这些值会被添加到列表中,形成一个包含这些音乐歌曲名称的有序列表。
        jedis.lpush("music","《可爱女人》","《晴天》","《稻香》","《夜曲》","《东风破》","《红尘客栈》","《黑色毛衣》");

运行代码结果如下:

Java与Redis的集成以及Redis中的项目应用_第13张图片

2.3.2 取值

 //从"music"列表中获取索引为1的元素,并将其打印到控制台
        System.out.println(jedis.lindex("music", 1));
 //从名为"music"的列表中获取索引范围从0到5的所有元素
        System.out.println(jedis.lrange("music", 0, 5));

运行代码结果如下:

Java与Redis的集成以及Redis中的项目应用_第14张图片

三、Redis中的项目应用


最后Java与Redis的集成以及Redis中的项目应用就到这里,祝大家在敲代码的路上一路通畅!

感谢大家的观看 !

Java与Redis的集成以及Redis中的项目应用_第15张图片

你可能感兴趣的:(java,redis,开发语言,后端,intellij-idea)