Java使用Jedis操作Redis的5种数据类型

14 篇文章 0 订阅
10 篇文章 6 订阅

1、Java使用Jedis客户端

Jedis集成了Redis的相关命令操作,它是Java语言操作Redis数据库的桥梁。Jedis客户端封装了Redis数据库的大量命令,因此具有许多Redis操作API。可以阅读 《Jedis API 文档》

1.1 Jedis的获取

在使用Jedis之前,需要下载Jedis的相关JAR包。如果项目采用的是Maven环境,则需要在pom.xml文件中引入Jedis的配置,配置如下:

<!-- Jedis客户端依赖 -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.3.0</version>
</dependency>

1.2 Jedis的使用

【示例】使用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数据库。

1.3 Jedis常用API

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());
}

执行结果:

运行之后,部分效果如下图:

 

2、Jedis操作Redis的数据类型

Jedis操作Redis的String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Sorted Set(有序集合)等相关命令的用法。

2.1 字符串(String)

【示例】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类型的用法:

 

2.2 列表(List)

【示例】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<String> list = jedis.lrange("userList", 0, -1);
    for (String str : list)
    {
        System.out.println(str);
    }
    //删除列表
    System.out.println("删除列表:" + jedis.del("userList"));
}

执行结果:

 

2.3 集合(Set)

【示例】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"));
}

执行结果:

 

2.4 哈希(Hash)

【示例】Redis的哈希(Hash)相关命令的用法。

/**
 * Reids的哈希(Hash)类型
 * @author pan_junbiao
 */
@Test
public void redisMap()
{
    Jedis jedis = getJedis();
    Map<String,String> map = new HashMap<String,String>();
    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<String> list = jedis.hvals("userInfo");
    for (String str : list)
    {
        System.out.println(str);
    }
}

执行结果:

 

2.5 有序集合(Sorted Set)

【示例】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<String> ascSet = jedis.zrange("math-score",0,-1);
    System.out.println("分数排名(从低到高):");
    for(String str : ascSet)
    {
        System.out.println("用户名称:" + str + " 分数:" + jedis.zscore("math-score",str));
    }

    //获取在指定区间内的元素(降序)
    Set<String> descSet = jedis.zrevrange("math-score",0,-1);
    System.out.println("分数排名(从高到低):");
    for(String str : descSet)
    {
        System.out.println("用户名称:" + str + " 分数:" + jedis.zscore("math-score",str));
    }
}

执行结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值