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

本文使用Jedis进行连接

需要先在Maven里添加Jedis依赖


   redis.clients
   jedis
   2.9.0

对版本有要求的可以看: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();
}

正确执行结果:

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种类型的增加和删除)_第1张图片

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就说明删除成功):

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种类型的增加和删除)_第2张图片

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

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

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种类型的增加和删除)_第4张图片

 

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 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种类型的增加和删除)_第5张图片

客户端中查看

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

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种类型的增加和删除)_第7张图片

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种类型的增加和删除)_第8张图片

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种类型的增加和删除)_第9张图片

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 set = jedis.zrange(key, 0, 5);
    for (String x : set) {
        System.out.println(x);
    }
    jedis.close();
}

正确运行结果:

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

客户端看一下

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

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种类型的增加和删除)_第12张图片

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

你可能感兴趣的:(Redis)