欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

程序员文章站 2022-05-18 09:25:36
...

本文使用Jedis进行连接

需要先在Maven里添加Jedis依赖

<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>2.9.0</version>
</dependency>

对版本有要求的可以看:https://mvnrepository.com/artifact/redis.clients/jedis

首先新建一个测试类,设置全局变量

static final String redisHost = "127.0.0.1";
static final String redisPassword = "123456";
static final int redisPort = 6379;

测试是否连接成功

// ping连接测试
@Test
public void pingTest() {
    Jedis jedis = new Jedis(redisHost);
    jedis.auth(redisPassword);
    System.out.println("服务正在运行:" + jedis.ping());
    jedis.close();
}

正确执行结果:

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

1.String增加和删除

1.1增加String

// 添加String数据
@Test
public void setString() {
    Jedis jedis = new Jedis(redisHost);
    jedis.auth(redisPassword);
    String key = "Hello";
    String value = "World";
    String result = jedis.set(key, value);
    System.out.println("存储结果:" + result + ",存储的字符串为:" + jedis.get(key));
    jedis.close();
}

正确执行结果:

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

添加后的数据可以用客户端查看,更加直接。

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

1.2删除String

// 删除String数据
@Test
public void delString() {
    Jedis jedis = new Jedis(redisHost);
    jedis.auth(redisPassword);
    String key = "Hello";
    Long result = jedis.del(key);
    System.out.println("删除结果:" + result);
    jedis.close();
}

正常结果(如果大于0就说明删除成功):
Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

2.Hash增加和删除

Redis hash 是一个string类型的key和value键值对

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

2.1增加Hash

// 增加Hash
@Test
public void setHash() {
    Jedis jedis = new Jedis(redisHost);
    jedis.auth(redisPassword);
    String hash = "HASH_NAME";
    String key = "key_";
    String value = "value_";
    for (int i = 0; i < 10; i++) {
        Long result = jedis.hset(hash, key + i, value + i);
        System.out.println("执行结果:" + result);
    }
    jedis.close();
}

正确运行结果:

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

添加后的数据可以用客户端查看,更加直接。

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

2.2删除Hash

注意,如果Hash最后一条数据被删除,Hash本身也会随之被删除

// 删除Hash
@Test
public void delHash() {
    Jedis jedis = new Jedis(redisHost);
    jedis.auth(redisPassword);
    String hash = "HASH_NAME";
    String key = "key_";
    for (int i = 0; i < 10; i++) {
        Long result = jedis.hdel(hash, key + i);
        System.out.println("执行结果:" + result);
    }
    jedis.close();
}

正确运行结果:
Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

 

3.List增加和删除

注意:List无序,允许重复

3.1增加List

// 增加List
// 无序,允许重复
@Test
public void setList() {
    Jedis jedis = new Jedis(redisHost);
    jedis.auth(redisPassword);
    String key = "Company";
    jedis.lpush(key, "Google");
    jedis.lpush(key, "Google"); // List可重复
    jedis.lpush(key, "Apple");
    jedis.lpush(key, "Twitter");
    // 获取存储的数据并输出
    List<String> list = jedis.lrange(key, 0, 3);
    for (int i = 0; i < list.size(); i++) {
        System.out.println("列表项为:" + list.get(i));
    }
    jedis.close();
}

正确运行结果:

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

客户端中查看

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

3.2删除List

// 删除List
@Test
public void delList() {
    Jedis jedis = new Jedis(redisHost);
    jedis.auth(redisPassword);
    String key = "Company";
    // 第二个参数为删除的个数(有重复时),后add进去的值先被删,类似于出栈
    Long aLong = jedis.lrem(key, 2, "Google");
    System.out.println("执行结果:" + aLong);
    jedis.close();
}

正确运行结果(结果为2,说明删除了2个元素):

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

到客户端看一下,看的更直观。

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

4.Set增加和删除

注意:Set不允许重复

4.1增加Set

// 增加Set
// 无序,不允许重复
@Test
public void addSet() {
    Jedis jedis = new Jedis(redisHost);
    jedis.auth(redisPassword);
    String key = "setKeyName";
    jedis.sadd(key, "member1");
    jedis.sadd(key, "member1"); // Set不允许重复
    jedis.sadd(key, "member2");
    System.out.println("列表项为:" + jedis.smembers(key));
    jedis.close();
}

正确运行结果:

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

客户端看一下

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

4.2删除Set

// 删除Set
@Test
public void remSet() {
    Jedis jedis = new Jedis(redisHost);
    jedis.auth(redisPassword);
    String key = "setKeyName";
    jedis.srem(key,"member1"); //删除元素memeber1
    System.out.println("列表项为:" + jedis.smembers(key));
    jedis.close();
}

正确运行结果:

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

客户端看一下

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

5.SortedSet增加和删除

5.1增加SortedSet

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

// 增加Sorted Set
// 有序,不允许重复
@Test
public void addSortedSet() {
    Jedis jedis = new Jedis(redisHost);
    jedis.auth(redisPassword);
    String key = "sortedSetKeyName";
    // 第三项member不允许重复,但是第二项score允许重复
    // 第二项score为排序的依据,第三项member重复时,以最后添加score的为准
    jedis.zadd(key, 1, "C++");
    jedis.zadd(key, 3, "Java");
    jedis.zadd(key, 1, "Java");
    jedis.zadd(key, 4, "Java");
    jedis.zadd(key, 2, "Python");
    jedis.zadd(key, 2, "Go");
    Set<String> set = jedis.zrange(key, 0, 5);
    for (String x : set) {
        System.out.println(x);
    }
    jedis.close();
}

正确运行结果:

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

客户端看一下

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

5.2删除Sorted Set

// 删除Sorted Set
@Test
public void remSortedSet() {
    Jedis jedis = new Jedis(redisHost);
    jedis.auth(redisPassword);
    String key = "sortedSetKeyName";
    Long aLong = jedis.zrem(key, "C++");
    System.out.println("执行结果:" + aLong);
    jedis.close();
}

正确运行结果:

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

客户端看一下

Redis学习笔记(二):Java使用Jedis操作Redis(5种类型的增加和删除)

----------------------终于写完了,谢谢观看------------------

相关标签: Redis Jedis