🍃前言
本篇文章重点是,介绍一些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操作客户端命令——列表操作与哈希操作》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下