环境准备

  1. 搭建Maven项目

  2. 引入依赖

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

创建jedis对象

注意:

  1. redis服务必须关闭防火墙
  2. redis服务必须开启远程连接
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
package com.jedis;

import redis.clients.jedis.Jedis;

import java.util.Set;

/**
* 测试redis连接
*
* @author jinglv
* @date 2021/03/27
*/
public class TestRedis {
public static void main(String[] args) {
// 1. 创建jedis客户端对象
Jedis jedis = new Jedis("192.168.1.120", 6379);
// 2. 选择一个库,默认使用0号库
jedis.select(0);
// 获取redis中所有key信息
final Set<String> keys = jedis.keys("*");
keys.forEach(key-> System.out.println("key=" + key));
// 3. 释放资源
jedis.close();
}
}

执行结果

image-20210327111030471

注意:提前在redis中set一些数据

操作数据库库相关

1
2
3
4
// 清空当前库
jedis.flushDB();
// 清空所有库
jedis.flushAll();

操作Redis API相关

创建Redis基础测试类,对Redis的连接和释放

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.jedis.test;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import redis.clients.jedis.Jedis;

/**
* @author jinglv
* @date 2021/03/27
*/
public class TestBase {
Jedis jedis;

@BeforeEach
public void before() {
this.jedis = new Jedis("192.168.1.120", 6379);
}

@AfterEach
public void after() {
jedis.close();
}
}

操作Key相关API

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.jedis.test;

import org.junit.jupiter.api.Test;

import java.util.Set;

/**
* @author jinglv
* @date 2021/03/27
*/
class TestKeys extends TestBase {

@Test
void testKeys() {
// keys 查询当前Redis中的数据
final Set<String> keys = jedis.keys("*");
keys.forEach(key -> System.out.println("查询所有的key:" + key));
// del 删除一个key
jedis.del("name");
// del 删除多个key
jedis.del("name", "age");
// exists 判断一个key是否存在exits
Boolean name = jedis.exists("name");
System.out.println("判断key为name是否存在:" + name);
// expire 设置一个key超时时间 expire pexpire
Long age = jedis.expire("age", 100);
System.out.println("key为age设置超时时间:" + age);
// ttl 获取一个key超时时间 ttl
Long age1 = jedis.ttl("newage");
System.out.println("key为newage获取超时时间:" + age1);
// randomKey 随机获取一个key
String s = jedis.randomKey();
System.out.println("随机获取的key:" + s);
// rename 修改key名称
jedis.rename("age", "newage");
// type 查看可以对应值的类型
String name1 = jedis.type("name");
System.out.println("查看key为name的数据类型:" + name1);
String maps = jedis.type("maps");
System.out.println("查看key为maps的数据类型:" + maps);
}
}

操作String相关API

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
26
27
28
29
30
package com.jedis.test;

import org.junit.jupiter.api.Test;

import java.util.List;

/**
* @author jinglv
* @date 2021/03/27
*/
public class TestString extends TestBase {

@Test
void testString() {
// set 设置一个key/value
jedis.set("name", "wangxiaohua");
// get 根据key获得对应的value
String s = jedis.get("name");
System.out.println("根据key获得对应的value:" + s);
// mset 一次设置多个key value
jedis.mset("content", "GoodBoy", "address", "Beijing");
// mget 一次获得多个key的value
List<String> mget = jedis.mget("name", "content", "address");
mget.forEach(v -> System.out.println("Value:" + v));
// getSet 获得原始key的值,同时设置新值
String set = jedis.getSet("name", "xiaoming");
System.out.println("获得原始key的值,同时设置新值:" + set);
}
}

操作List相关API

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
26
27
28
29
30
package com.jedis.test;

import org.junit.jupiter.api.Test;

import java.util.List;

import static redis.clients.jedis.ListPosition.BEFORE;

/**
* @author jinglv
* @date 2021/03/27
*/
public class TestList extends TestBase {

@Test
void testList() {
// lpush 将某个值加入到一个key列表头部
jedis.lpush("names1", "zhangsan", "wangwu", "zhaoliu", "xiaohong");
// rpush 将某个值加入到一个key列表末尾
jedis.rpush("names1", "xiaomingming");
// lrange 获取某一个下标区间内的元素
List<String> names1 = jedis.lrange("names1", 0, -1);
names1.forEach(name -> System.out.println("name = " + name));
// lpop 返回和移除列表左边的第一个元素
String names11 = jedis.lpop("names1");
System.out.println(names11);
// linsert 在某一个元素之前,之后插入新元素
jedis.linsert("lists", BEFORE, "xiaohei", "xiaobai");
}
}

操作Set的相关API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.jedis.test;

import org.junit.jupiter.api.Test;

/**
* @author jinglv
* @date 2021/03/27
*/
public class TestSet extends TestBase {

@Test
void testSet() {
// sadd 为集合添加元素
jedis.sadd("names", "zhangsan", "lisi");
// smembers 显示集合中所有元素 无序
jedis.smembers("names");
// sismember 判断一个集合中是否含有这个元素
jedis.sismember("names", "xiaochen");
}
}

操作ZSet相关API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.jedis.test;

import org.junit.jupiter.api.Test;

/**
* @author jinglv
* @date 2021/03/27
*/
public class TestZSet extends TestBase {

@Test
void testZSet() {
// zadd 添加一个有序集合元素
jedis.zadd("names", 10, "张三");
// zrange 返回一个范围内的元素
jedis.zrange("names", 0, -1);
// zcard 返回集合的元素个数
jedis.zcard("names");
// zrangeByScore 按照分数查找一个范围内的元素
jedis.zrangeByScore("names", "0", "100", 0, 5);
}
}

操作Hash相关API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.jedis.test;

import org.junit.jupiter.api.Test;

/**
* @author jinglv
* @date 2021/03/27
*/
public class TestHash extends TestBase {

@Test
void testHash() {
// hset 设置一个key/value对
jedis.hset("maps", "name", "zhangsan");
// hget 获得一个key对应的value
jedis.hget("maps", "name");
// hgetall 获得所有的key/value对
jedis.hgetAll("mps");
// hkeys 获得所有的key
jedis.hkeys("maps");
// hvals 获得所有的value
jedis.hvals("maps");
}
}