从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • JavaSE

  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

    • Redis

      • Redis系列教程介绍
      • Redis介绍
      • Redis的安装和启停
      • Redis操作数据
      • Redis客户端
      • Redis命令返回值
      • 多数据库
      • Redis中的事务
      • Redis中key的过期时间
      • Redis持久化数据
      • Redis的配置
      • Java连接Redis
        • Jedis
        • 下载依赖
        • 入门案例
        • Jedis操作Redis中的数据
        • 测试类改造
      • Redis连接池
      • Redis搭建集群
      • Redis中的哨兵
      • Redis中的安全
      • 监控Redis
      • Redis小实验
      • Redis
    • Mybatis

    • Lucene

    • Elasticsearch

    • MQ

    • MyCat

    • Lombok

    • 主流框架
  • SpringMVC

  • SpringBoot

  • Java并发

  • Java源码

  • JVM

  • 韩顺平

  • Java
  • Java
  • 主流框架
  • Redis
2023-08-18
目录

Java连接Redis

# 100.Java连接Redis

我们可以使用 Jedis ,通过Java来操作Redis。该依赖类似JDBC中的驱动类,使用它,Java就可以连接Redis并操作了   ‍

# Jedis

Jedis是一个 Java 操作 Redis 的工具。

Redis提供了几十种不同编程语言的客户端库,这些库都很好地封装了Redis的命令,使得在程序中与 Redis 进行交互变得更容易。有些库还提供了可以将编程语言中的数据类型直接以相应的形式存储到Redis中(如将数组直接以列表类型存入Redis)的简单方法,使用起来非常方便。

‍

# 下载依赖

下载 Jedis 的jar包,并导入,或者用Maven:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.7.1</version>
</dependency>
1
2
3
4
5

‍

‍

# 入门案例

操作Redis很简单:

  1. 获取Redis连接
  2. 操作Redis
  3. 关闭Redis连接

‍

package com.peterjxl;
import org.junit.Test;
import redis.clients.jedis.Jedis;


public class JedisTest {


    @Test
    public void helloJedis(){
        // 1.获取连接
        Jedis jedis = new Jedis("localhost", 6379); 

        // 2. 操作Redis
        jedis.set("username", "peterjxl");

        // 3.关闭连接
        jedis.close();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

‍

‍

在运行测试方法之前,记得先启动Redis服务端。运行户,我们可以通过Redis-cli查看,是设置成功的:

127.0.0.1:6379> get username
"peterjxl"
1
2

‍

我们获取Redis连接的时候,如果使用空参构造Jedis对象,则默认连接的是 localhost:6379​

‍

# Jedis操作Redis中的数据

接下来,我们来使用 Jedis 操作Redis的各类型数据。在 Jedis 中,操作各类数据的方法名,和Redis的命令几乎是一样的,例如Redis中操作string类型的数据,命令是get和set;Jedis中也是一样的方法名。

‍

# 测试类改造

我们可以将 Jedis 获取连接和释放连接的方法抽取出来,并用@Before 和 @After注解改造。

package com.peterjxl;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;

public class JedisTest {
    Jedis jedis;
  
    @Before
    public void init(){
        jedis = new Jedis();
    }
  
    @After
    public void destroy(){
        jedis.close();
    }

    @Test
    public void helloJedis(){
        jedis.set("username", "peterjxl");
    }
  
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

‍

‍

# 操作字符串类型 string

存取string数据:set方法、get方法

@Test
public void jedisString(){
    jedis.set("username", "peterjxl");
    String username = jedis.get("username");
    System.out.println(username);
}
1
2
3
4
5
6

‍

‍

存储带有效期的数据:setex()​ 方法,例如存储激活码、验证码

jedis.setex("activecode", 20, "hehe");    //20秒后自动删除该键值对
1

‍

‍

# 操作哈希类型 hash

Redis中,操作hash的命令主要有:hset、hget、hgetAll。在Jedis中也是一样的:

@Test
public void jedisHash(){
    // 存储数据
    jedis.hset("user", "name", "lisi");
    jedis.hset("user", "age", "23");
    jedis.hset("user", "gender", "female");

    // 获取数据
    String name = jedis.hget("user", "name");
    System.out.println("name: " + name);

    // 获取hash的所有map中的数据
    Map<String, String> user = jedis.hgetAll("user");
    Set<String> keySet = user.keySet();
    for(String key : keySet){
        String value = user.get(key);
        System.out.println(key + " : " + value);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

‍

运行结果:

name: lisi
gender : female
name : lisi
age : 23
1
2
3
4

‍

‍

‍

# 操作列表类型 list

list的主要操作有:lpush / rpush,lpop / rpop,lrange start end。Jedis中演示如下:

‍

@Test
public void jedisList(){
    // 存储数据
    jedis.lpush("myList", "a", "b", "c");   //从左开始存,结果是cba
    jedis.rpush("myList2", "a", "b", "c");   //从右开始存,结果是abc

    // 获取数据
    List<String> myList = jedis.lrange("myList", 0, -1);
    List<String> myList2 = jedis.lrange("myList2", 0, -1);
    System.out.println("myList: " + myList);
    System.out.println("myList2: " + myList2);

    // list 弹出数据
    String element1 = jedis.lpop("myList"); //c
    String element2 = jedis.rpop("myList"); //a
    System.out.println("element1: " + element1);
    System.out.println("element2: " + element2);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

‍

‍

运行结果:

myList: [c, b, a]
myList2: [a, b, c]
element1: c
element2: a
1
2
3
4

‍

‍

‍

# 操作集合类型 set

和set相关的命令有:sadd,smembers

@Test
public void jedisSet(){
    // set 存储
    jedis.sadd("mySet","java","php","c++");

    // set 获取
    Set<String> myset = jedis.smembers("mySet");
    System.out.println(myset);
}
1
2
3
4
5
6
7
8
9

‍

运行结果:

[c++, java, php]
1

‍

‍

# 操作有序集合类型 sortedset

和sortedset相关的命令有:zadd,zrange

‍

@Test
public void jedisSortedSet(){
    // sortedset 存储
    jedis.zadd("mySortedSet", 3, "雷姆");
    jedis.zadd("mySortedSet", 30, "拉姆");
    jedis.zadd("mySortedSet", 55, "艾米莉雅");
  
    // sortedset 获取
    Set<String> mysortedset = jedis.zrange("mySortedSet", 0, -1);
    System.out.println(mysortedset);
}
1
2
3
4
5
6
7
8
9
10
11

‍

运行结果:

[雷姆, 拉姆, 艾米莉雅]
1

‍

‍

在GitHub上编辑此页 (opens new window)
上次更新: 2023/8/18 22:11:52
Redis的配置
Redis连接池

← Redis的配置 Redis连接池→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式