文章目录
- 🍃前言
- 🌴列表操作
- 🚩lpush 和 lpop
- 🚩rpush 和 rpop
- 🚩lrange
- 🚩bloop
- 🚩brpop
- 🚩lindex
- 🚩linsert
- 🚩llen
- 🎋哈希操作
- 🚩hset 和 hget
- 🚩hexists 和 hdel
- 🚩hkeys 和 hvals
- 🚩hmget
- 🚩hlen
- 🚩hincrby 和 hincrbyfloat
- ⭕总结
🍃前言
本篇文章重点是,介绍一些Java 操作 Redis 的常见命令的使用。
总体分为以下6个部分进行介绍:
- 基础操作
- 字符串操作
- 列表操作
- 哈希表操作
- 集合操作
- 有序集合操作
本篇演示以下两种用法:
- 列表操作
- 哈希表操作
🌴列表操作
准备工作代码如下:
public class ListDemo {public static void main(String[] args) {JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");try (Jedis jedis = jedisPool.getResource()){//清空redis数据库jedis.flushAll();//testLpushAndLpop(jedis);//testRpushAndRpop(jedis);//testLrange(jedis);//testBLpop(jedis);//testBRpop(jedis);//testLindex(jedis);//testLlen(jedis);}}
}
这里博主只展示如何使用 Java 操作完成这些命令操作,如果有小伙伴对这部分命令作用不了解,可以参考博主写的【Redis】 关于Redis列表类型
🚩lpush 和 lpop
- lpush:将⼀个或者多个元素从左侧放⼊(头插)到 list 中。
- lpoop:从 list 左侧取出元素(即头删)
测试代码如下:
public static void testLpushAndLpop(Jedis jedis) {System.out.println("测试 lpush 和 lpop");long n = jedis.lpush("key", "1", "2", "3", "4");System.out.println(n);String value = jedis.lpop("key");System.out.println(value);value = jedis.lpop("key");System.out.println(value);value = jedis.lpop("key");System.out.println(value);value = jedis.lpop("key");System.out.println(value);value = jedis.lpop("key");System.out.println(value);
}
执行结果如下:
🚩rpush 和 rpop
- rpush:将⼀个或者多个元素从右侧放⼊(尾插)到 list 中
- rpop:从 list 右侧取出元素(即尾删)
测试代码如下:
private static void testRpushAndRpop(Jedis jedis) {System.out.println("测试 rpush 与 rpop");long n = jedis.rpush("key", "1", "2", "3", "4");System.out.println(n);String value = jedis.rpop("key");System.out.println(value);value = jedis.rpop("key");System.out.println(value);value = jedis.rpop("key");System.out.println(value);value = jedis.rpop("key");System.out.println(value);value = jedis.rpop("key");System.out.println(value);
}
执行结果如下:
🚩lrange
- lrange:获取从 start 到 end 区间的所有元素,左闭右闭。
测试代码如下:
private static void testLrange(Jedis jedis) {jedis.rpush("key", "1", "2", "3", "4");List<String> values = jedis.lrange("key", 1, 3);System.out.println(values);
}
执行结果如下:
🚩bloop
- bloop:lpoop的阻塞版本,返回值 List 是个⼆元组.。[0] 表⽰ key, [1] 表⽰ value
超时时间设为 0 表⽰死等,在执⾏同时,起⼀个 redis-cli,插⼊数据,即可看到 blpop的返回结果
测试代码如下:
private static void testBLpop(Jedis jedis) {System.out.println("测试 bloop");while (true) {List<String> values = jedis.blpop(0, "key");System.out.println(values);}
}
另起一个客户端插入数据
执行结果如下:
🚩brpop
使用方式与bloop类似
测试代码如下:
private static void testBRpop(Jedis jedis) {System.out.println("开始调⽤ brpop");while (true) {List<String> values = jedis.brpop(0, "key");System.out.println(values);}
}
调用Redis客户端
执行结果如下:
🚩lindex
- lindex:获取从左数第 index 位置的元素
测试代码如下:
private static void testLindex(Jedis jedis) {System.out.println("测试 lindex");jedis.rpush("key", "1", "2", "3", "4");String value = jedis.lindex("key", 2);System.out.println(value);
}
执行结果
🚩linsert
- linsert:通过 ListPosition.BEFORE 和 ListPosition.AFTER 标识插⼊位置
测试代码如下:
private static void testLinsert(Jedis jedis) {jedis.rpush("key", "a", "b", "c", "d");jedis.linsert("key", ListPosition.BEFORE, "c", "100");List<String> values = jedis.lrange("key", 0, -1);System.out.println(values);
}
执行结果如下:
🚩llen
- llen:获取 list 的长度
测试代码如下:
private static void testLlen(Jedis jedis) {jedis.rpush("key", "a", "b", "c", "d");long n = jedis.llen("key");System.out.println(n);
}
执行结果如下:
🎋哈希操作
准备工作代码如下:
public class HashDemo {public static void main(String[] args) {JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");try (Jedis jedis = jedisPool.getResource()) {//清空redis数据库jedis.flushAll();//以下为测试方法//testHsetAndHget(jedis);//testHexistsAndHdel(jedis);//testHkeysAndHvalues(jedis);//testHmget(jedis);//testHIncrByAndHincrByFloat(jedis);}}
}
这里博主只展示如何使用 Java 操作完成这些命令操作,如果有小伙伴对这部分命令作用不了解,可以参考博主写的【Redis】 关于 Redis 哈希类型
🚩hset 和 hget
- hset:设置 hash 中指定的字段(field)的值(value)。
- hget:获取hash中指定字段的值
测试代码如下:
private static void testHsetAndHget(Jedis jedis) {System.out.println("测试 hset and hget");jedis.hset("key", "name", "zhangsan");jedis.hset("key", "age", "20");String name = jedis.hget("key", "name");System.out.println(name);String age = jedis.hget("key", "age");System.out.println(age);
}
执行结果如下:
🚩hexists 和 hdel
- hexists:判断 hash 中是否有指定的字段。
- hdel:删除 hash 中指定的字段
测试代码如下:
private static void testHexistsAndHdel(Jedis jedis) {System.out.println("测试hexists 和 hdel");jedis.hset("key", "name", "zhangsan");boolean ok = jedis.hexists("key", "name");System.out.println(ok);jedis.hdel("key", "name");ok = jedis.hexists("key", "name");System.out.println(ok);
}
执行结果如下:
🚩hkeys 和 hvals
- hkeys:获取 hash 所有字段
- hvals:获取 hash 中的所有的值
测试代码如下:
private static void testHkeysAndHvalues(Jedis jedis) {System.out.println("测试 hkeys 和 hvalues");jedis.hset("key", "name", "zhangsan");jedis.hset("key", "age", "20");Set<String> keys = jedis.hkeys("key");System.out.println(keys);List<String> values = jedis.hvals("key");System.out.println(values);
}
执行结果如下:
🚩hmget
- hmget:⼀次获取 hash 中多个字段的值
测试代码:
private static void testHmget(Jedis jedis) {System.out.println("测试 hmget");jedis.hset("key", "name", "zhangsan");jedis.hset("key", "age", "20");List<String> values = jedis.hmget("key", "name", "age");System.out.println(values);
}
执行结果如下:
🚩hlen
- hlen:获取 hash 中的所有字段的个数。
测试代码如下:
private static void testHlen(Jedis jedis) {System.out.println("测试 hlen");jedis.hset("key", "name", "zhangsan");jedis.hset("key", "age", "20");long n = jedis.hlen("key");System.out.println(n);
}
执行结果如下:
🚩hincrby 和 hincrbyfloat
- hincrby:将 hash 中字段对应的数值添加指定的值
- hincrbyfloat:hincrby的浮点数版本
测试代码如下:
private static void testHIncrByAndHincrByFloat(Jedis jedis) {System.out.println("测试 hincrby 与 hincrbyfloat");jedis.hset("key", "age", "20");long n = jedis.hincrBy("key", "age", 10);System.out.println(n);String value = jedis.hget("key", "age");System.out.println(value);double dn = jedis.hincrByFloat("key", "age", 0.5);System.out.println(dn);value = jedis.hget("key", "age");System.out.println(value);
}
执行结果如下:
⭕总结
关于《【Redis】 Java操作客户端命令——列表操作与哈希操作》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下