回想redis的5种数据结构,hash,list,set ,sortedset,string.下面是jedis对这5种数据结构的简单练习。
基于maven项目:
1、在pom.xml文件中引入jar包:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
2、新建一个类:
// jedis里hash数据结构存取数据
@Test
public void testHash() {
//创立连接
Jedis jedis = new Jedis("localhost");
//操作
// 给hash集合赋全部的值
jedis.hset("myhash", "username", "lilei");
jedis.hset("myhash", "age", "18");
jedis.hset("myhash", "sex", "girl");
//取单个值
String name = jedis.hget("myhash", "username");
System.out.println(name);
Map<String, String> myhash = jedis.hgetAll("myhash");
Set<String> set = myhash.keySet();
for (String key : set) {
System.out.println(key + ":" + myhash.get(key));
}
//关闭连接
jedis.close();
}
// jedis里list数据结构存取数据,允许有重复元素
@Test
public void testList() {
//创立连接
Jedis jedis = new Jedis("localhost");
//操作
jedis.del("mylist");
//存储
jedis.lpush("mylist", "b", "b", "c", "d");
jedis.rpush("mylist", "d", "e", "f");
//范围获取
List<String> list = jedis.lrange("mylist", 0, -1);
System.out.println(list);
//弹出,从list里删除一个元素,并返回删除元素
System.out.println(jedis.lpop("mylist") + "," + jedis.rpop("mylist"));
//范围获取
list = jedis.lrange("mylist", 0, -1);
System.out.println(list);
//关闭连接
jedis.close();
}
// jedis里set数据结构存取数据,不允许有重复元素
@Test
public void testSet() {
//创立连接
Jedis jedis = new Jedis("localhost");
//操作
jedis.del("myset");
//存储
jedis.sadd("myset", "a", "b", "b", "c", "d");
//范围获取
Set<String> list = jedis.smembers("myset");
System.out.println(list);
//关闭连接
jedis.close();
}
// jedis里SortedSet数据结构存取数据,不允许有重复元素,且有序
@Test
public void testSortedSet() {
//创立连接
Jedis jedis = new Jedis("localhost");
//操作
jedis.del("mysortedSet");
jedis.del("mysortedset");
//存储
jedis.zadd("mysortedSet", 100, "wq");
jedis.zadd("mysortedSet", 99, "wjt");
jedis.zadd("mysortedSet", 88, "zst");
jedis.zadd("mysortedSet", 79, "ll");
//范围获取
Set<Tuple> list = jedis.zrangeWithScores("mysortedSet", 0, -1);
System.out.println(list.toArray());
//关闭连接
jedis.close();
}
// jedis里String数据结构存取数据
@Test
public void testString() {
//创立连接
Jedis jedis = new Jedis("localhost");
//操作
jedis.set("username", "123wq");
String username = jedis.get("username");
System.out.println(username);
//可以使用setex() 方法存储可以指定过期时间的key value
//将键值对activecode hello存入redis,并且20s后自动删除该键值对
jedis.setex("activecode", 30, "hello");
//关闭连接
jedis.close();
}
3、分别运行上面方法,比如运行testString
测试的方法前,先打开redis服务器和客户端,在redis安装目录下,分别双击redis-server.exe 和 redis-cli.exe,运行该测试方法后,在客户端输入 keys * ,然后获取代码中存储的键,得到的值和代码中给的值一样。
127.0.0.1:6379> keys *
1) "activecode"
2) "username"
127.0.0.1:6379> get activecode -- 刚开始,能够获取该值
"hello"
127.0.0.1:6379> get username
"123wq"
127.0.0.1:6379> get activecode -- 30秒后,再次获取,该值为空,代码中所写即为该含义
(nil)