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();
}
正确执行结果:
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();
}
正确执行结果:
添加后的数据可以用客户端查看,更加直接。
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();
}
正确运行结果:
添加后的数据可以用客户端查看,更加直接。
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();
}
正确运行结果:
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();
}
正确运行结果:
客户端中查看
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个元素):
到客户端看一下,看的更直观。
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();
}
正确运行结果:
客户端看一下
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();
}
正确运行结果:
客户端看一下
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();
}
正确运行结果:
客户端看一下
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();
}
正确运行结果:
客户端看一下
----------------------终于写完了,谢谢观看------------------