Java客户端Jedis
1. Jedis介绍
一款java操作redis数据库的工具
2. 使用步骤
2.1 下载jedis的jar包
2.2 使用
//1. 获取连接
Jedis jedis = new Jedis("localhost",6379);
//2. 操作
jedis.set("username","zhangsan");
//3. 关闭连接
jedis.close();
2.3 实现步骤
1、把commons-pool2-2.3.jar和jedis-2.7.0.jar包导入项目
2、src下新建package:cn.itcast.jedis.test
3、test包下新建JedisTest的Java类
package cn.itcast.jedis.test;
import org.junit.Test;
import redis.clients.jedis.Jedis;
/**
* Jedis测试类
*/
public class JedisTest {
/**
* 快速入门
*/
@Test
public void test1(){
//1. 获取连接
Jedis jedis = new Jedis("localhost",6379);
//2. 操作
jedis.set("username","zhangsan");
//3. 关闭连接
jedis.close();
}
}
4、启动redis服务器及客户端:双击redis-server.exe后双击redis-cli.exe
127.0.0.1:6379> keys *
(empty list or set)
5、运行test1,运行成功后在redis客户端查询结果
127.0.0.1:6379> keys *
1) "username"
3. Jedis操作各种redis中的数据结构
3.1 字符串类型string
set key value
get key
del key
package cn.itcast.jedis.test;
import org.junit.Test;
import redis.clients.jedis.Jedis;
/**
* Jedis测试类
*/
public class JedisTest {
/**
* string 数据结构操作
*/
@Test
public void test2(){
//1. 获取连接
Jedis jedis = new Jedis(); //如果使用空参构造,默认值"localhost",6379端口
//2. 操作
//存储
jedis.set("username","zhangsan");
//获取
String username = jedis.get("username");
System.out.println(username);
//可以使用setex()方法存储可以指定过期时间的key value
jedis.setex("activecode",20,"hehe");//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对
//3. 关闭连接
jedis.close();
}
}
运行test2,检查运行结果输出:zhangsan
启动redis-server.exe、redis-cli.exe,查询所有的键发现有activecode及对应值hehe,20秒后查询无activecode键及对应值
3.2 哈希类型hash:map格式
hset key field value
hget key field
hgetAll key
hdel key field
package cn.itcast.jedis.test;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.Map;
import java.util.Set;
/**
* Jedis测试类
*/
public class JedisTest {
/**
* hash 数据结构操作
*/
@Test
public void test3(){
//1. 获取连接
Jedis jedis = new Jedis(); //如果使用空参构造,默认值"localhost",6379端口
//2. 操作
//存储
jedis.hset("user","name","lisi");
jedis.hset("user","age","23");
jedis.hset("user","gender","female");//重复赋值之前的值会被覆盖掉
//获取
String name = jedis.hget("user", "name");
System.out.println(name);
//获取hash的所有map中的数据
Map<String, String> user = jedis.hgetAll("user");
Set<String> keySet = user.keySet();
for(String key : keySet){
String value = user.get(key);
System.out.println(key+":"+value);
}
//3. 关闭连接
jedis.close();
}
}
运行test3,检查控制台输出结果
3.3 列表类型list:linkedlist格式。支持重复元素
lpush/rpush key value
lrange key start end:范围获取
lpop/rpop key
package cn.itcast.jedis.test;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Jedis测试类
*/
public class JedisTest {
/**
* list 数据结构操作
*/
@Test
public void test4(){
//1. 获取连接
Jedis jedis = new Jedis(); //如果使用空参构造,默认值"localhost",6379端口
//2. 操作
//存储
jedis.lpush("mylist","a","b","c");//从左边存
jedis.rpush("mylist","d","e","f");//从右边存
//list范围获取
List<String> mylist = jedis.lrange("mylist", 0, -1);
System.out.println(mylist);
//list弹出
String element1 = jedis.lpop("mylist");
System.out.println(element1);
String element2 = jedis.rpop("mylist");
System.out.println(element2);
//list范围获取
List<String> mylist2 = jedis.lrange("mylist", 0, -1);
System.out.println(mylist2);
//3. 关闭连接
jedis.close();
}
}
运行test4,检查控制台输出结果
3.4 集合类型set:不允许重复元素
sadd key value
smembers key:获取所有元素
srem key value:删除set集合中的某个元素
package cn.itcast.jedis.test;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Jedis测试类
*/
public class JedisTest {
/**
* set 数据结构操作
*/
@Test
public void test5(){
//1. 获取连接
Jedis jedis = new Jedis(); //如果使用空参构造,默认值"localhost",6379端口
//2. 操作
//存储
jedis.sadd("myset", "java", "php", "c++");
//获取
Set<String> myset = jedis.smembers("myset");
System.out.println(myset);
//删除
jedis.srem("myset","java","c++");
//获取
Set<String> myset2 = jedis.smembers("myset");
System.out.println(myset2);
//3. 关闭连接
jedis.close();
}
}
运行test5,检查控制台输出结果
3.5 有序集合类型sortedset:不允许重复元素,且元素有顺序
zadd key score value
zrange key start end [withscores]
zrem key value
package cn.itcast.jedis.test;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Jedis测试类
*/
public class JedisTest {
/**
* sortedset 数据结构操作
*/
@Test
public void test6(){
//1. 获取连接
Jedis jedis = new Jedis(); //如果使用空参构造,默认值"localhost",6379端口
//2. 操作
//存储
jedis.zadd("mysortedset",3,"亚瑟");
jedis.zadd("mysortedset",30,"后羿");
jedis.zadd("mysortedset",25,"孙悟空");
//获取
Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
System.out.println(mysortedset);//会按照分数从小到大排序
//删除
jedis.zrem("mysortedset", "孙悟空","亚瑟");
//获取
Set<String> mysortedset2 = jedis.zrange("mysortedset", 0, -1);
System.out.println(mysortedset2);
//3. 关闭连接
jedis.close();
}
}
运行test6,检查控制台输出结果