Jedis集成了Redis的相关命令操作,它是Java语言操作Redis数据库的桥梁。Jedis客户端封装了Redis数据库的大量命令,因此具有许多Redis操作API。可以阅读 《Jedis API 文档》。
在使用Jedis之前,需要下载Jedis的相关JAR包。如果项目采用的是Maven环境,则需要在pom.xml文件中引入Jedis的配置,配置如下:
redis.clients
jedis
3.3.0
【示例】使用Jedis来连接Redis数据库。
import redis.clients.jedis.Jedis;
/**
* 连接Redis服务
* @author pan_junbiao
*/
@Test
public void connectJedis()
{
//创建Jedis实例,连接本地Redis服务
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("Redis服务器连接成功!");
//查看服务是否正在运行
System.out.println("服务正在运行:" + jedis.ping());
}
执行结果:
表示使用Jedis已经成功连接了Reids数据库。
Jedis常用API的使用,比如,为Redis数据库设置密码、获取客户端信息、查看Redis信息、清空数据库、以及获取数据库中的键的数量、数据库名字、服务器时间等,代码如下:
/**
* Jeids API的操作
* @author pan_junbiao
*/
@Test
public void jedisAPITest()
{
//创建Jedis实例,连接本地Redis服务
Jedis jedis = new Jedis("127.0.0.1", 6379);
//设置Redis数据库的密码
System.out.println(jedis.auth("123456"));
//获取客户端信息
System.out.println(jedis.getClient());
//清空Redis数据库,相当于执行FLUSHALL命令
System.out.println(jedis.flushAll());
//查看Redis信息,相当于执行INFO命令
System.out.println(jedis.info());
//获取数据库中key的数量,相当于指定DBSIZE命令
System.out.println(jedis.dbSize());
//获取数据库名字
System.out.println(jedis.getDB());
//返回当前Redis服务器的时间,相当于执行TIME命令
System.out.println(jedis.time());
}
执行结果:
运行之后,部分效果如下图:
Jedis操作Redis的String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Sorted Set(有序集合)等相关命令的用法。
【示例】Redis的字符串(String)类型相关命令的用法,以及Redis键命令的用法。
/**
* 获取Reids连接
* @author pan_junbiao
*/
public Jedis getJedis()
{
//连接Redis服务器
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("Redis服务器连接成功!");
return jedis;
}
/**
* Reids的Key类型
* @author pan_junbiao
*/
@Test
public void redisKey()
{
Jedis jedis = getJedis();
jedis.set("myKey", "pan_junbiao的博客");
System.out.println("判断键为myKey的值是否存在:" + jedis.exists("myKey"));
System.out.println("获取键为myKey的值:" + jedis.get("myKey"));
System.out.println("查看键为myKey的类型:" + jedis.type("myKey"));
System.out.println("随机获取一个Key:" + jedis.randomKey());
System.out.println("将键myKey重命名为myKey1:" + jedis.rename("myKey", "myKey1"));
System.out.println("删除键为myKey1:" + jedis.del("myKey1"));
}
/**
* Reids的String类型
* @author pan_junbiao
*/
@Test
public void redisString()
{
Jedis jedis = getJedis();
System.out.println("设置userName:" + jedis.set("userName", "pan_junbiao的博客"));
System.out.println("设置blogUrl:" + jedis.set("blogUrl", "https://blog.csdn.net/pan_junbiao"));
System.out.println("设置blogRemark:" + jedis.set("blogRemark", "您好,欢迎访问 pan_junbiao的博客"));
System.out.println("用户名称:" + jedis.get("userName"));
System.out.println("博客地址:" + jedis.get("blogUrl"));
System.out.println("博客信息:" + jedis.get("blogRemark"));
System.out.println("设置userName,如果存在返回0:" + jedis.setnx("userName", "pan_junbiao的博客"));
System.out.println("设置userName2:" + jedis.set("userName2", "pan_junbiao"));
System.out.println("获取key为userName和userName2的值:"+jedis.mget("userName","userName2"));
System.out.println("自增1:" + jedis.incr("index"));
System.out.println("自增1:" + jedis.incr("index"));
System.out.println("自增2:" + jedis.incrBy("count",2));
System.out.println("自增2:" + jedis.incrBy("count",2));
System.out.println("递减1:" + jedis.decr("count"));
System.out.println("递减2:" + jedis.decrBy("count",2));
System.out.println("在userName2后面添加String:" + jedis.append("userName2","的博客"));
System.out.println("获取key为userName2的值:" + jedis.get("userName2"));
}
执行结果:
(1)Reids的Key类型的用法:
(2)Reids的String类型的用法:
【示例】Redis的列表(List)相关命令的用法。
/**
* Reids的List类型
* @author pan_junbiao
*/
@Test
public void redisList()
{
Jedis jedis = getJedis();
//在列表的尾部添加数据
jedis.rpush("userList", "pan_junbiao的博客", "https://blog.csdn.net/pan_junbiao", "pan_junbiao的博客", "深圳市");
//返回列表长度
System.out.println("列表长度:" + jedis.llen("userList"));
//移除一个元素
System.out.println("移除一个元素:" + jedis.lrem("userList", 1, "深圳市"));
//修改值
System.out.println("修改元素值:" + jedis.lset("userList", 2, "您好,欢迎访问 pan_junbiao的博客"));
//取值
List list = jedis.lrange("userList", 0, -1);
for (String str : list)
{
System.out.println(str);
}
//删除列表
System.out.println("删除列表:" + jedis.del("userList"));
}
执行结果:
【示例】Redis的集合(Set)相关命令的用法。
/**
* Reids的Set类型
* @author pan_junbiao
*/
@Test
public void redisSet()
{
Jedis jedis = getJedis();
jedis.sadd("city", "北京", "上海", "广州", "深圳", "昆明", "武汉", "大理");
System.out.println("移除并返回集合中的一个随机元素:" + jedis.spop("city"));
System.out.println("随机取出一个值:" + jedis.srandmember("city"));
//移除集合中的一个或多个成员元素
System.out.println("移除集合元素:" + jedis.srem("city", "北京"));
//返回集合中所有元素
System.out.println(jedis.smembers("city"));
//判断元素是否存在
System.out.println("判断深圳是否存在集合中:" + jedis.sismember("city","深圳"));
//返回集合中元素的数量
System.out.println("集合中元素的数量:" + jedis.scard("city"));
jedis.sadd("city2","昆明","香港","澳门","台湾","上海","北京","成都");
System.out.println("交集:" + jedis.sinter("city","city2"));
System.out.println("并集:" + jedis.sunion("city","city2"));
System.out.println("差集:" + jedis.sdiff("city","city2"));
}
执行结果:
【示例】Redis的哈希(Hash)相关命令的用法。
/**
* Reids的哈希(Hash)类型
* @author pan_junbiao
*/
@Test
public void redisMap()
{
Jedis jedis = getJedis();
Map map = new HashMap();
map.put("userName","pan_junbiao的博客");
map.put("blogUrl","https://blog.csdn.net/pan_junbiao");
map.put("blogRemark","您好,欢迎访问 pan_junbiao的博客");
map.put("city","深圳");
jedis.hmset("userInfo",map);
//删除map中的某个键值
System.out.println("删除map中的某个键值:" + jedis.hdel("userInfo","city"));
//判断指定键值是否存在
System.out.println("判断指定键是否存在:" + jedis.exists("userInfo"));
//返回map对象中的所有key
System.out.println("返回map对象中的所有key:" + jedis.hkeys("userInfo"));
//返回map对象中的所有value
List list = jedis.hvals("userInfo");
for (String str : list)
{
System.out.println(str);
}
}
执行结果:
【示例】Redis的有序集合(Sorted Set)相关命令的用法。
/**
* Reids的有序集合(Sorted Set)类型
* @author pan_junbiao
*/
@Test
public void redisSortedSet()
{
Jedis jedis = getJedis();
jedis.zadd("math-score", 100, "pan_junbiao的博客_01");
jedis.zadd("math-score", 82, "pan_junbiao的博客_02");
jedis.zadd("math-score", 80, "pan_junbiao的博客_03");
jedis.zadd("math-score", 55, "pan_junbiao的博客_04");
//为分数值加上增量
System.out.println(jedis.zincrby("math-score", 15, "pan_junbiao的博客_03"));
System.out.println(jedis.zincrby("math-score", -5, "pan_junbiao的博客_04"));
//返回有序集合中指定区间分数的成员数
System.out.println("分数在90至100的人数:" + jedis.zcount("math-score", 90, 100));
//获取在指定区间内的元素(升序)
Set ascSet = jedis.zrange("math-score",0,-1);
System.out.println("分数排名(从低到高):");
for(String str : ascSet)
{
System.out.println("用户名称:" + str + " 分数:" + jedis.zscore("math-score",str));
}
//获取在指定区间内的元素(降序)
Set descSet = jedis.zrevrange("math-score",0,-1);
System.out.println("分数排名(从高到低):");
for(String str : descSet)
{
System.out.println("用户名称:" + str + " 分数:" + jedis.zscore("math-score",str));
}
}
执行结果: