本文使用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();
}
正确执行结果:
// 添加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();
}
正确执行结果:
添加后的数据可以用客户端查看,更加直接。
// 删除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();
}
Redis hash 是一个string类型的key和value键值对
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
// 增加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();
}
正确运行结果:
添加后的数据可以用客户端查看,更加直接。
注意,如果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();
}
注意: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();
}
正确运行结果:
客户端中查看
// 删除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个元素):
到客户端看一下,看的更直观。
注意: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();
}
正确运行结果:
客户端看一下
// 删除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 有序集合和集合一样也是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();
}
正确运行结果:
客户端看一下
// 删除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();
}
正确运行结果:
客户端看一下
----------------------终于写完了,谢谢观看------------------