Jedis 所有 API 使用教程

JAVA herman 1013浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

Jedis 这个类封装了很多 API,这些 API 平时不使用的话非常容易忘记,今天还和一个同事争论一个 api 的用法。结果我记错了,所以就顺手把各个 api 都给敲了一下。发出来,下次再忘记了就拿出来看一看!

public class ZSetTest {
    public static void main(String[] args) {
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxIdle(30);
        config.setMaxTotal(10);
        //  在获取连接的时候检查有效性, 默认false
        config.setTestOnBorrow(true);
        //  在空闲时检查有效性, 默认false
        config.setTestOnReturn(true);
        JedisPool pool = new JedisPool(config, "127.0.0.1", 6379, 30000, "xttblog");
        Jedis jedis = pool.getResource();
        //testKey(jedis);
        //testString(jedis);
        //testNumber(jedis);
        //testList(jedis);
        //testSet(jedis);
        //testHash(jedis);
        testSortSet(jedis);
    }
    public static void testKey(Jedis jedis) {
        System.out.println("====key功能展示====");
        try {
            jedis.select(0);
            System.out.println("清除数据:" + jedis.flushDB());
            System.out.println("判断某个键是否存在:" + jedis.exists("1"));
            System.out.println("新增{1,a}键值对:" + jedis.set("1", "a"));
            System.out.println(jedis.exists("1"));
            System.out.println("新增{2,b}键值对:" + jedis.set("2", "b"));
            System.out.println("系统中所有的键如下:" + jedis.keys("*").toString());
            System.out.println("删除键 1:" + jedis.del("1"));
            System.out.println("判断键 1是否存在:" + jedis.exists("1"));
            System.out.println("设置键 2的过期时间为5s:" + jedis.expire("2", 5));
            TimeUnit.SECONDS.sleep(2);
            System.out.println("查看键 2的剩余生存时间:" + jedis.ttl("2"));
            System.out.println("移除键 2的生存时间:" + jedis.persist("2"));
            System.out.println("查看键 2的剩余生存时间:" + jedis.ttl("2"));
            System.out.println("查看键 2所存储的值的类型:" + jedis.type("2"));
            System.out.println("查看键 2的值:" + jedis.get("2"));

            System.out.println("");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void testString(Jedis jedis) {
        try {
            jedis.select(1);
            jedis.flushDB();
            System.out.println("====字符串功能展示====");
            System.out.println("增:");
            System.out.println(jedis.set("a", "1"));
            System.out.println(jedis.set("b", "2"));
            System.out.println(jedis.set("c", "3"));
            System.out.println("删除键 a:" + jedis.del("a"));
            System.out.println("获取键 a:" + jedis.get("a"));
            System.out.println("修改键 b:" + jedis.set("b", "bChanged"));
            System.out.println("获取键 b 的值:" + jedis.get("b"));
            System.out.println("在键 c后面加入值:" + jedis.append("c", "End"));
            System.out.println("获取键 c的值:" + jedis.get("c"));
            System.out.println("增加多个键值对:" + jedis.mset("key01", "value01", "key02", "value02", "key03", "value03"));
            System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03"));
            System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03", "key04"));
            System.out.println("删除多个键值对:" + jedis.del(new String[]{"key01", "key02"}));
            System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03"));
            jedis.flushDB();
            System.out.println("新增键值对防止覆盖原先值:");
            System.out.println(jedis.setnx("key001", "value001"));
            System.out.println(jedis.setnx("key002", "value002"));
            System.out.println(jedis.setnx("key002", "value002-new"));
            System.out.println("获取键key001的值:" + jedis.get("key001"));
            System.out.println("获取键key002的值:" + jedis.get("key002"));
            System.out.println("新增键值对并设置有效时间:");
            System.out.println(jedis.setex("key003", 2, "value003"));
            System.out.println("获取键key003的值:" + jedis.get("key003"));
            TimeUnit.SECONDS.sleep(3);
            System.out.println("获取键key003的值:" + jedis.get("key003"));
            System.out.println("获取原值,更新为新值:");
            System.out.println(jedis.getSet("key002", "key2GetSet"));
            System.out.println("获取键key002的值:" + jedis.get("key002"));
            System.out.println("截取key002的值的字符串:" + jedis.getrange("key002", 2, 5));
            System.out.println("");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void testNumber(Jedis jedis) {
        try {
            jedis.select(2);
            jedis.flushDB();
            System.out.println("====整数和浮点数功能展示====");
            jedis.set("key001", "1");
            jedis.set("key002", "2");
            jedis.set("key003", "3.3");
            System.out.println("获取键key001的值:" + jedis.get("key001"));
            System.out.println("获取键key002的值:" + jedis.get("key002"));
            System.out.println("将键key001的值+1:" + jedis.incr("key001"));
            System.out.println("获取键key001的值:" + jedis.get("key001"));
            System.out.println("将键key002的值-1:" + jedis.decr("key002"));
            System.out.println("获取键key002的值:" + jedis.get("key002"));
            System.out.println("将key001的值加上整数5:" + jedis.incrBy("key001", 5));
            System.out.println("获取key001的值:" + jedis.get("key001"));
            System.out.println("将key002的值减去整数5:" + jedis.decrBy("key002", 5));
            System.out.println("获取key002的值:" + jedis.get("key002"));
            System.out.println("");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void testList(Jedis jedis) {
        jedis.select(3);
        jedis.flushDB();
        System.out.println("====列表list功能展示====");
        jedis.lpush("collections", "ArrayList", "LinkedList", "Vector", "Stack", "queue");
        jedis.lpush("collections", "HashMap");
        jedis.lpush("collections", "HashMap");
        jedis.lpush("collections", "HashMap");
        jedis.lpush("collections", "HashMap");
        jedis.lpush("number", "1");
        jedis.lpush("number", "2");
        jedis.lpush("number", "3");
        // -1 代表倒数第一个
        System.out.println("collections 的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("collections区间0-2内容:" + jedis.lrange("collections", 0, 2));
        System.out.println("=================");
        // 删除列表指定的值 ,第二个参数为删除的个数(有重复时),后add进去的值先被删,类似于出栈
        System.out.println("删除指定元素个数:" + jedis.lrem("collections", 2, "HashMap"));
        System.out.println("collections 的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("删除区间0-4以外的数据:" + jedis.ltrim("collections", 0, 4));
        System.out.println("collections 的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("collections列表出栈(左端):" + jedis.lpop("collections"));
        System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("collections添加元素,从列表右端,与lpush相对应:" + jedis.rpush("collections", "EnumMap"));
        System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("collections列表出栈(右端):" + jedis.rpop("collections"));
        System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("修改collections指定下标1的内容:" + jedis.lset("collections", 1, "LinkedArrayList"));
        System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("=================");
        System.out.println("collections的长度:" + jedis.llen("collections"));
        System.out.println("获取collections下标为2的元素:" + jedis.lindex("collections", 2));
        System.out.println("=================");
        jedis.lpush("sortedList", "3", "6", "2", "0", "7", "4");
        System.out.println("sortedList排序前:" + jedis.lrange("sortedList", 0, -1));
        System.out.println(jedis.sort("sortedList"));
        System.out.println("sortedList排序后:" + jedis.lrange("sortedList", 0, -1));
        System.out.println("");
    }
    public static void testSet(Jedis jedis) {
        try {
            jedis.select(4);
            jedis.flushDB();
            System.out.println("========测试集合(set)=========");
            System.out.println("集合set添加数据:" + jedis.sadd("setElement", "e1", "e7", "e3", "e6", "e0", "e4"));
            System.out.println(jedis.sadd("setElement", "e6"));
            System.out.println("setElement的所有元素:" + jedis.smembers("setElement"));
            System.out.println("删除元素e0:" + jedis.srem("setElement", "e0"));
            System.out.println("setElement的所有元素:" + jedis.smembers("setElement"));
            System.out.println("删除两个元素e7和e6:" + jedis.srem("setElement", "e7", "e6"));
            System.out.println("setElement的所有元素为:" + jedis.smembers("setElement"));
            System.out.println("随机的移除集合中的一个元素:" + jedis.spop("setElement"));
            System.out.println("随机的移除集合中的一个元素:" + jedis.spop("setElement"));
            System.out.println("setElement的所有元素为:" + jedis.smembers("setElement"));
            System.out.println("setElement中包含元素的个数:" + jedis.scard("setElement"));
            System.out.println("e3是否在setElement中:" + jedis.sismember("setElement", "e3"));
            System.out.println("e1是否在setElement中:" + jedis.sismember("setElement", "e1"));
            System.out.println("=================");
            System.out.println(jedis.sadd("setElement1", "e1", "e2", "e4", "e3", "e0", "e8", "e7", "e5"));
            System.out.println(jedis.sadd("setElement2", "e1", "e2", "e4", "e3", "e0", "e8"));
            System.out.println("将setElement1中删除e1并存入setElement3中:" + jedis.smove("setElement1", "setElement3", "e1"));
            System.out.println("将setElement1中删除e2并存入setElement3中:" + jedis.smove("setElement1", "setElement3", "e2"));
            System.out.println("setElement1中的元素:" + jedis.smembers("setElement1"));
            System.out.println("setElement3中的元素:" + jedis.smembers("setElement3"));
            System.out.println("集合运算:");
            System.out.println("setElement1中的元素:" + jedis.smembers("setElement1"));
            System.out.println("setElement2中的元素:" + jedis.smembers("setElement2"));
            System.out.println("setElement1和setElement2的交集:" + jedis.sinter("setElement1", "setElement2"));
            System.out.println("setElement1和setElement2的并集:" + jedis.sunion("setElement1", "setElement2"));
            // setElement1中有,setElement2中没有
            System.out.println("setElement1和setElement2的差集:" + jedis.sdiff("setElement1", "setElement2"));
            System.out.println("");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void testHash(Jedis jedis) {
        try {
            System.out.println("=======集合(Set)=======");
            jedis.select(5);
            jedis.flushDB();
            Map<String, String> map = new HashMap<String, String>();
            map.put("key001", "value001");
            map.put("key002", "value002");
            map.put("key003", "value003");
            jedis.hmset("hash", map);
            jedis.hset("hash", "key004", "value004");
            // return Map<String,String>
            System.out.println("散列hash的所有键值对为:" + jedis.hgetAll("hash"));
            // return Set<String>
            System.out.println("散列hash的所有键为:" + jedis.hkeys("hash"));
            // return List<String>
            System.out.println("散列hash的所有值为:" + jedis.hvals("hash"));
            System.out.println("将key006保存的值加上一个整数,如果key006不存在则添加key006:" + jedis.hincrBy("hash", "key006", 6));
            System.out.println("散列hash的所有键值对为:" + jedis.hgetAll("hash"));
            System.out.println("将key006保存的值加上一个整数,如果key006不存在则添加key006:" + jedis.hincrBy("hash", "key006", 3));
            System.out.println("散列hash的所有键值对为:" + jedis.hgetAll("hash"));
            System.out.println("删除一个或者多个键值对:" + jedis.hdel("hash", "key002"));
            System.out.println("散列hash的所有键值对为:" + jedis.hgetAll("hash"));
            System.out.println("散列hash中键值对的个数:" + jedis.hlen("hash"));
            System.out.println("判断hash中是否存在key002:" + jedis.hexists("hash", "key002"));
            System.out.println("判断hash中是否存在key003:" + jedis.hexists("hash", "key003"));
            System.out.println("获取hash中的值:" + jedis.hmget("hash", "key003"));
            System.out.println("获取hash中的值:" + jedis.hmget("hash", "key003", "key004"));
            System.out.println("");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void testSortSet(Jedis jedis) {
        try {
            System.out.println("=======有序集合=======");
            jedis.select(6);
            jedis.flushDB();
            Map<String, Double> map = new HashMap<String, Double>();
            map.put("key2", 1.2);
            map.put("key3", 4.0);
            map.put("key4", 5.0);
            map.put("key5", 0.2);
            System.out.println(jedis.zadd("zset", 3, "key1"));
            System.out.println(jedis.zadd("zset", map));
            System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1));
            System.out.println("zset中的所有元素:" + jedis.zrangeWithScores("zset", 0, -1));
            System.out.println("zset中的所有元素:" + jedis.zrangeByScore("zset", 0, 100));
            System.out.println("zset中的所有元素:" + jedis.zrangeByScoreWithScores("zset", 0, 100));
            System.out.println("zset中key2的分值:" + jedis.zscore("zset", "key2"));
            System.out.println("zset中key2的排名:" + jedis.zrank("zset", "key2"));
            System.out.println("删除zset中的元素key3:" + jedis.zrem("zset", "key3"));
            System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1));
            System.out.println("zset中元素的个数:" + jedis.zcard("zset"));
            System.out.println("zset中分值在1-4之间的元素的个数:" + jedis.zcount("zset", 1, 4));
            System.out.println("key2的分值加上5:" + jedis.zincrby("zset", 5, "key2"));
            System.out.println("key3的分值加上4:" + jedis.zincrby("zset", 4, "key3"));
            System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1));
            System.out.println("");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

直接贴代码了,就不解释了。自己运行一遍结果都出来了。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » Jedis 所有 API 使用教程