一份不用注释都能看懂的jedis使用速成教程

前驱知识

本机装了redis并开启服务
自行导入相关jar包依赖

秘籍如下

public class JedisTest {
    
    private JedisPool pool;

    public static void print(int index, Object obj) {
        System.out.println(String.format("%d, %s", index, obj.toString()));
    }

    public static void main(String[] argv) {
        Jedis jedis = new Jedis("redis://localhost:6379/1");
        jedis.flushDB();

        // get set
        jedis.set("hello", "world");
        print(1, jedis.get("hello"));
        jedis.rename("hello", "newhello");
        print(1, jedis.get("newhello"));
        jedis.setex("hello2", 1800, "world");

        //
        jedis.set("pv", "100");
        jedis.incr("pv");//值++
        jedis.incrBy("pv", 5);//值+5
        print(2, jedis.get("pv"));
        jedis.decrBy("pv", 2);//值-2
        print(2, jedis.get("pv"));

        print(3, jedis.keys("*"));//得到所有的key

        String listName = "list";
        jedis.del(listName);
        for (int i = 0; i < 10; ++i) {
            jedis.lpush(listName, "a" + String.valueOf(i));
        }
        print(4, jedis.lrange(listName, 0, 12));//下标0-12的双闭区间,下标越界不报错
        print(4, jedis.lrange(listName, 0, 3));
        print(5, jedis.llen(listName));//获取成都
        print(6, jedis.lpop(listName));//出栈
        print(7, jedis.llen(listName));
        print(8, jedis.lrange(listName, 2, 6));
        print(9, jedis.lindex(listName, 3));//获取下标为3的
//        print(10, jedis.linsert(listName, BinaryClient.LIST_POSITION.AFTER, "a4", "xx"));//值a4后面+新值xx
//        print(10, jedis.linsert(listName, BinaryClient.LIST_POSITION.BEFORE, "a4", "bb"));//值a4前面+新值bb
        print(11, jedis.lrange(listName, 0 ,12));

        // hash
        String userKey = "userxx";
        jedis.hset(userKey, "name", "jim");
        jedis.hset(userKey, "age", "12");
        jedis.hset(userKey, "phone", "18618181818");
        print(12, jedis.hget(userKey, "name"));//获取name的值
        print(13, jedis.hgetAll(userKey));//获取所有的属性和值
        jedis.hdel(userKey, "phone");//根据键删除键值对
        print(14, jedis.hgetAll(userKey));
        print(15, jedis.hexists(userKey, "email"));//是否存在email键
        print(16, jedis.hexists(userKey, "age"));
        print(17, jedis.hkeys(userKey));//获取所有的键
        print(18, jedis.hvals(userKey));//获取所有的值
        jedis.hsetnx(userKey, "school", "zju");//添加新键值对,未存在创建,键已存在不会改变
        jedis.hsetnx(userKey, "name", "yxy");//已有的不会被改变
        print(19, jedis.hgetAll(userKey));

        // set
        String likeKey1 = "commentLike1";
        String likeKey2 = "commentLike2";
        for (int i = 0; i < 10; ++i) {
            jedis.sadd(likeKey1, String.valueOf(i));
            jedis.sadd(likeKey2, String.valueOf(i*i));
        }
        print(20, jedis.smembers(likeKey1));//获取所有元素
        print(21, jedis.smembers(likeKey2));
        print(22, jedis.sunion(likeKey1, likeKey2));//并集
        print(23, jedis.sdiff(likeKey1, likeKey2));//差集 1有2没有
        print(24, jedis.sinter(likeKey1, likeKey2));//交集
        print(25, jedis.sismember(likeKey1, "12"));//是否存在该元素
        print(26, jedis.sismember(likeKey2, "16"));
        jedis.srem(likeKey1, "5");//移除元素
        print(27, jedis.smembers(likeKey1));
        jedis.smove(likeKey2, likeKey1, "25");//把25从set2移动到set1
        print(28, jedis.smembers(likeKey1));
        print(29, jedis.scard(likeKey1));//set1长度
        //set强大的功能就此开始
        String rankKey = "rankKey";
        jedis.zadd(rankKey, 15, "jim");
        jedis.zadd(rankKey, 60, "Ben");
        jedis.zadd(rankKey, 90, "Lee");
        jedis.zadd(rankKey, 75, "Lucy");
        jedis.zadd(rankKey, 80, "Mei");
        print(30, jedis.zcard(rankKey));//rankKey长度
        print(31, jedis.zcount(rankKey, 61, 100));//61~100分的,左右闭区间
        print(32, jedis.zscore(rankKey, "Lucy"));//Lucy的成绩
        jedis.zincrby(rankKey, 2, "Lucy");//Lucy的成绩+2
        print(33, jedis.zscore(rankKey, "Lucy"));
        jedis.zincrby(rankKey, 2, "Luc");//键值不存在就新建,然后在0的基础上+2
        print(34, jedis.zscore(rankKey, "Luc"));
        print(35, jedis.zrange(rankKey, 0, 100));//0——100分的
        print(36, jedis.zrange(rankKey, 0, 10));//下标0-10双闭区间 越界报错
        print(36, jedis.zrange(rankKey, 1, 3));
        print(36, jedis.zrevrange(rankKey, 1, 3));//反转获取(很好用)
        for (Tuple tuple : jedis.zrangeByScoreWithScores(rankKey, "60", "100")) {//60——100分的答应键值对
            print(37, tuple.getElement() + ":" + String.valueOf(tuple.getScore()));
        }

        print(38, jedis.zrank(rankKey, "Ben"));//排名
        print(39, jedis.zrevrank(rankKey, "Ben"));//反向排名

        String setKey = "zset";//zset叫做有序集合,而set是无序的
        //添加五条zset集合
        jedis.zadd(setKey, 1, "a");
        jedis.zadd(setKey, 1, "b");
        jedis.zadd(setKey, 1, "c");
        jedis.zadd(setKey, 1, "d");
        jedis.zadd(setKey, 1, "e");
        print(40, jedis.zcard(setKey));//查看集合个数
        print(40, jedis.zlexcount(setKey, "-", "+"));
        print(41, jedis.zlexcount(setKey, "(b", "[d"));//从b开始到d结束左闭右开区间元素个数
        print(42, jedis.zlexcount(setKey, "[b", "[d"));
        jedis.zrem(setKey, "b");//删除b元素
        print(43, jedis.zrange(setKey, 0, 10));
        jedis.zremrangeByLex(setKey, "(c", "+");//移除c以后不包括c的元素 //返回值 被成功溢出元素的数量
        print(44, jedis.zrange(setKey, 0 ,2));
    }
 
}

你可能感兴趣的:(redis)