Jedis 原生之道:Redis 命令 Java 实现指南(二)
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~
🌱🌱个人主页:奋斗的明志
🌱🌱所属专栏:Redis
📚本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为展示我的学习过程及理解。文笔、排版拙劣,望见谅。
Redis
- 基础操作(通用命令)
- 一、set 和 get
- 二、exists 和 del(判断是否存在和删除)
- 三、keys
- 四、expire 和 ttl (设置时间和查看时间)
- 五、type(查看类型)
- 字符串操作
- 一、mset 和 mget(批量操作的)
- 二、getrange 和 setrange(闭区间)
- 三、append
- 四、incr 和 decr(自增和自减)
- 列表操作
- 一、lpush 和 lrange
- 二、rpush(尾插)
- 三、lpop(头删)
- 四、rpop(尾删)
- 五、blpop (带有阻塞时间等待的删除)
- 六、llen
- 集合操作
- 一、sadd 和 smembers
- 二、srem 和 sismember
- 三、scard
- 四、spop
- 五、sinter
- 六、sinterstore
- 哈希表操作
- 一、hset 和 hget
- 二、hexists
- 三、hdel
- 四、hkeys 和 hvals
- 五、hmget 和 hmset
- 有序集合操作
- 一、zadd 和 zrange
- 二、zcard
- 三、zrem
- 四、zscore
- 五、zrank
基础操作(通用命令)
一、set 和 get
public static void testGetSet(Jedis jedis) {System.out.println("set 和 get 的使用:");//先清空数据库//要避免上一组测试的残留数据影响到下一组测试的结果//清空当前数据库jedis.flushDB();//清空所有数据库jedis.flushAll();jedis.set("key","111");jedis.set("key2","222");//用于构建 Redis 的 SET 命令参数SetParams params = new SetParams();//设置超时时间params.ex(10);//仅在键不存在时操作//params.nx();//xx():仅在键已存在时操作params.xx();jedis.set("key","333",params);String value = jedis.get("key");System.out.println("value = " + value);
}
二、exists 和 del(判断是否存在和删除)
public static void test2(Jedis jedis){System.out.println("existe 和 del 的使用");jedis.flushAll();jedis.set("key","111");jedis.set("key2","222");jedis.set("key3","222");boolean result = jedis.exists("key");System.out.println("result = " + result);long result2 = jedis.del("key");System.out.println("result2 = " + result2);result = jedis.exists("key");System.out.println("result = " + result);result2 = jedis.del("key", "key2", "key3");System.out.println("result2 = " + result2);
}
三、keys
public static void test3(Jedis jedis){System.out.println("keys 的使用");jedis.flushAll();jedis.set("key","111");jedis.set("key2","222");jedis.set("key3","333");jedis.set("key4","444");//redis 中的 key 不能重复,不用在意顺序,用set来接收Set<String> keys = jedis.keys("*");System.out.println(keys);
}
四、expire 和 ttl (设置时间和查看时间)
public static void test4(Jedis jedis){System.out.println("expire 和 ttl 的使用");jedis.flushAll();jedis.set("key","111");jedis.expire("key",10);try {Thread.sleep(3000);} catch (InterruptedException e) {throw new RuntimeException(e);}long time = jedis.ttl("key");System.out.println("time = " + time);
}
五、type(查看类型)
public static void test5(Jedis jedis){System.out.println("type 的使用");jedis.flushAll();jedis.set("key","111");String type = jedis.type("key");System.out.println("type = " + type);jedis.lpush("key2","222");type = jedis.type("key2");System.out.println("type = " + type);jedis.hset("key3","f1","111");type = jedis.type("key3");System.out.println("type = " + type);jedis.sadd("key4","111","222","333");type = jedis.type("key4");System.out.println("type = " + type);jedis.zadd("key5",10,"zhangsan");type = jedis.type("key5");System.out.println("type = " + type);
}
字符串操作
一、mset 和 mget(批量操作的)
public static void test1(Jedis jedis) {System.out.println("mset 和 mget");//MGET 和 MSET 是用于批量操作键值对的命令,能够有效提升操作效率jedis.flushAll();jedis.mset("key1","111","key2","222","key3","333");//value 值可以重复,用list进行存储 List<String> values = jedis.mget("key1", "key2", "key3");System.out.println("values = " + values);
}
二、getrange 和 setrange(闭区间)
public static void test2(Jedis jedis) {System.out.println("getrange 和 setrange");jedis.flushAll();jedis.set("key","zxcvbnm");String result = jedis.getrange("key", 0, 1);System.out.println("result = " + result);jedis.setrange("key", 0, "ab");String value = jedis.get("key");System.out.println("value = " + value);
}
三、append
public static void test3(Jedis jedis) {System.out.println("append");jedis.flushAll();jedis.set("key","zxcvbnm");jedis.append("key","asdfghjk");String value = jedis.get("key");System.out.println("value = " + value);
}
四、incr 和 decr(自增和自减)
public static void test4(Jedis jedis) {System.out.println("incr 和 decr");jedis.flushAll();jedis.set("key","100");long result = jedis.incr("key");System.out.println("result = " + result);String value = jedis.get("key");System.out.println("value = " + value);result = jedis.decr("key");System.out.println("result = " + result);value = jedis.get("key");System.out.println("value = " + value);
}
列表操作
一、lpush 和 lrange
public static void test01(Jedis jedis) {System.out.println("lpush 和 lrange");jedis.flushAll();//头插jedis.lpush("key", "111", "222", "333");//可以支持负数List<String> result = jedis.lrange("key", 0, -1);System.out.println("result = " + result);
}
二、rpush(尾插)
public static void test02(Jedis jedis) {System.out.println("rpush 尾插");jedis.flushAll();jedis.rpush("key", "111", "222", "333");List<String> result = jedis.lrange("key", 0, -1);System.out.println("result = " + result);
}
三、lpop(头删)
public static void test03(Jedis jedis) {System.out.println("lpop");jedis.flushAll();jedis.rpush("key", "111", "222", "333");String result = jedis.lpop("key");System.out.println("result = " + result);result = jedis.lpop("key");System.out.println("result = " + result);result = jedis.lpop("key");System.out.println("result = " + result);result = jedis.lpop("key");System.out.println("result = " + result);
}
四、rpop(尾删)
public static void test04(Jedis jedis){System.out.println("rpop");jedis.flushAll();jedis.rpush("key", "111", "222", "333");String result = jedis.rpop("key");System.out.println("result = " + result);result = jedis.rpop("key");System.out.println("result = " + result);result = jedis.rpop("key");System.out.println("result = " + result);result = jedis.rpop("key");System.out.println("result = " + result);
}
五、blpop (带有阻塞时间等待的删除)
public static void test05(Jedis jedis){System.out.println("blpop");jedis.flushAll();jedis.lpush("key","111","222","333");List<String> results = jedis.blpop(100, "key");System.out.println("key:" + results.get(0));System.out.println("value:" + results.get(1));
}
六、llen
public static void test06(Jedis jedis){System.out.println("llen");jedis.flushAll();jedis.lpush("key","111","222","333");long result = jedis.llen("key");System.out.println("result = " + result);
}
集合操作
一、sadd 和 smembers
public static void test01(Jedis jedis) {System.out.println("sadd 和 smembers");jedis.flushAll();jedis.sadd("key", "111", "222", "333");Set<String> result = jedis.smembers("key");System.out.println("result: " + result);
}
二、srem 和 sismember
public static void test02(Jedis jedis) {System.out.println("srem 和 sismember");jedis.flushAll();jedis.sadd("key", "111", "222", "333");boolean result = jedis.sismember("key", "111");System.out.println("result: " + result);long key = jedis.srem("key", "111", "222");System.out.println("key:" + key);result = jedis.sismember("key", "222");System.out.println("result: " + result);
}
三、scard
public static void test03(Jedis jedis) {System.out.println("里面有几个元素 (scard)");jedis.flushAll();jedis.sadd("key", "111", "222", "333", "444", "555");long result = jedis.scard("key");System.out.println("result: " + result);
}
四、spop
public static void test04(Jedis jedis) {System.out.println("随机删除一个元素 (spop)");jedis.flushAll();jedis.sadd("key", "111", "222", "333", "444", "555");String result = jedis.spop("key");System.out.println("result: " + result);
}
五、sinter
public static void test05(Jedis jedis) {System.out.println("求交集 (sinter)");jedis.flushAll();jedis.sadd("key", "111", "222", "333");jedis.sadd("key2", "111", "222", "444");Set<String> result = jedis.sinter("key", "key2");System.out.println("result: " + result);
}
六、sinterstore
public static void test06(Jedis jedis) {System.out.println("求交集合并到一个新的键里面 (sinterstore)");jedis.flushAll();jedis.sadd("key", "111", "222", "333");jedis.sadd("key2", "111", "222", "444");long len = jedis.sinterstore("key3", "key", "key2");System.out.println("len:" + len);Set<String> result = jedis.smembers("key3");System.out.println("result: " + result);
}
哈希表操作
一、hset 和 hget
public static void test01(Jedis jedis) {System.out.println("hset 和 hget");jedis.flushAll();jedis.hset("key", "f1", "111");Map<String, String> map = new HashMap<>();map.put("f2", "222");map.put("f3", "333");jedis.hset("key", map);String result = jedis.hget("key", "f1");System.out.println("result:" + result);result = jedis.hget("key", "f2");System.out.println("result:" + result);result = jedis.hget("key", "f100");System.out.println("result:" + result);
}
二、hexists
public static void test02(Jedis jedis) {System.out.println("判断是否存在 hexists");jedis.flushAll();jedis.hset("key", "f1", "111");jedis.hset("key", "f2", "111");jedis.hset("key", "f3", "111");boolean result = jedis.hexists("key", "f1");System.out.println("result:" + result);result = jedis.hexists("key", "f100");System.out.println("result:" + result);
}
三、hdel
public static void test03(Jedis jedis) {System.out.println("删除操作 hdel");jedis.flushAll();jedis.hset("key", "f1", "111");jedis.hset("key", "f2", "111");jedis.hset("key", "f3", "111");long result = jedis.hdel("key", "f1", "f2");System.out.println("result:" + result);boolean hexists = jedis.hexists("key", "f1");System.out.println("hexists:" + hexists);hexists = jedis.hexists("key", "f2");System.out.println("hexists:" + hexists);hexists = jedis.hexists("key", "f3");System.out.println("hexists:" + hexists);
}
四、hkeys 和 hvals
public static void test04(Jedis jedis) {System.out.println("hkeys 和 hvals");jedis.flushAll();jedis.hset("key", "f1", "111");jedis.hset("key", "f2", "111");jedis.hset("key", "f3", "111");Set<String> hkeys = jedis.hkeys("key");List<String> hvals = jedis.hvals("key");System.out.println("hvals:" + hkeys);System.out.println("hvals:" + hvals);
}
五、hmget 和 hmset
public static void test05(Jedis jedis) {System.out.println("hmget 和 hmset");jedis.flushAll();Map<String,String> map = new HashMap<>();map.put("f1","111");map.put("f2","222");map.put("f3","333");jedis.hmset("key",map);List<String> hmget = jedis.hmget("key", "f1", "f2", "f3");System.out.println("hmget:" + hmget);
}
有序集合操作
一、zadd 和 zrange
public static void test01(Jedis jedis) {System.out.println("zadd 和 zrange");jedis.flushAll();jedis.zadd("key", 10, "zhangsan");Map<String, Double> map = new HashMap<>();map.put("lisi", 20.0);map.put("wangwu", 30.0);jedis.zadd("key", map);List<String> members = jedis.zrange("key", 0, -1);System.out.println("members:" + members);List<Tuple> zrangedWithScores = jedis.zrangeWithScores("key", 0, -1);System.out.println("zrangedWithScores = " + zrangedWithScores);String element = zrangedWithScores.get(0).getElement();double score = zrangedWithScores.get(0).getScore();System.out.println("element:" + element + ", score:" + score);
}
二、zcard
public static void test02(Jedis jedis) {System.out.println("zcard");jedis.flushAll();jedis.zadd("key", 10, "zhangsan");jedis.zadd("key", 20, "lisi");jedis.zadd("key", 30, "wangwu");long len = jedis.zcard("key");System.out.println("len:" + len);
}
三、zrem
public static void test03(Jedis jedis) {System.out.println("zrem");jedis.flushAll();jedis.zadd("key", 10, "zhangsan");jedis.zadd("key", 20, "lisi");jedis.zadd("key", 30, "wangwu");long n = jedis.zrem("key", "zhangsan");System.out.println("n:" + n);List<String> result = jedis.zrange("key", 0, -1);System.out.println("result:" + result);
}
四、zscore
public static void test04(Jedis jedis) {System.out.println("zscore");jedis.flushAll();jedis.zadd("key", 10, "zhangsan");jedis.zadd("key", 20, "lisi");jedis.zadd("key", 30, "wangwu");Double zscore = jedis.zscore("key", "zhangsan");System.out.println("zscore:" + zscore);
}
五、zrank
public static void test05(Jedis jedis) {System.out.println("获取下标(排名) zrank");jedis.flushAll();jedis.zadd("key", 10, "zhangsan");jedis.zadd("key", 20, "lisi");jedis.zadd("key", 30, "wangwu");Long zrank = jedis.zrank("key", "zhangsan");System.out.println("zrank:" + zrank);
}