【三】Redis从入门到放弃---Jedis操作Redis

(1)Jedis是什么?

Jedis是Redsi官方首选的java客户端开发包,使用Jedis可以很方便的操作Redis,使用方法跟Redis的操作命令差不多的,例如:jedis.flushDB()清空数据,jedis.set("key1","value1")给key1设置数据,jedis.exists("key1")判断键是否存在等等。

下面简单的介绍Jedis是如果操作Redis的:

  1. pom.xml添加依赖
  2. 连接Redis: 指定Redis服务Host和port,设置密码(没有的话不需要),操作Redis,最后关闭Redis连接。

(2)Jedis的maven依赖

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>

(3)Jedis对key、String、List、Set、Hash、Zset的操作

public static void main(String[] args) {
        Jedis jedis = new Jedis("47.106.195.84", 6379);
        // 如果 Redis 服务设置了密码,需要下面这行,没有就不需要
        jedis.auth("*******");
        String pong = jedis.ping();
        System.out.println("连接成功:" + pong);
        jedis.close();
    }

控制台输出:

连接成功:PONG

操作key


    @Test
    public void demo1() throws InterruptedException {
        Jedis jedis = new Jedis("47.106.195.84", 6379);
        jedis.auth("******");

        jedis.setex("k1", 10, "v1");//设置过期时间10秒
        jedis.set("k2", "v2");
        jedis.set("k3", "v3");
        //获取所有的key
        Set<String> keys = jedis.keys("*");
        System.out.println(keys.size());
        for (String key : keys) {
            System.out.println(key);
        }

        TimeUnit.MILLISECONDS.sleep(5000);//睡眠5秒钟
        System.out.println(jedis.exists("k1"));//k1是否存在
        System.out.println(jedis.ttl("k1"));//k1剩余有效时间
        System.out.println(jedis.get("k2"));//获取k1的值
        jedis.close();
    }

控制台输出:

对String类型的操作

@Test
public void demo2() {
Jedis jedis = new Jedis("47.106.195.84", 6379);
jedis.auth("******");

jedis.set("str0","v0");//单个设置值
jedis.mset("str1", "v1", "str2", "v2", "str3", "v3");//批量设置值
jedis.setex("str4",10,"v4");//设置有效时间10秒

jedis.append("str0","20210731");//在某个key后追加数据

System.out.println(jedis.substr("str0",0,-1));//截取某个key的值,从0到-1是截取所有

System.out.println(jedis.get("str4"));//获取单个key的值
System.out.println(jedis.mget("str1", "str2", "str3"));//获取多个key的值
}

控制台输出:

对List类型的操作

@Test
    public void demo3() {
        Jedis jedis = new Jedis("47.106.195.84", 6379);
        jedis.auth("*****");

        jedis.lpush("listKey","1","2","3");//从左边添加多个数据
        jedis.rpush("listKey","5","6","7");//从右边添加多个数据
        System.out.println(jedis.lrange("listKey", 0, -1));//获取该key所有值

        jedis.lpop("listKey");//从左边吐出一个
        jedis.rpop("listKey");//从右边吐出一个
        System.out.println(jedis.lrange("listKey", 0, -1));//获取该key所有值

        System.out.println(jedis.llen("listKey"));//获取key对应list长度

        jedis.lset("listKey",1,"8");//修改key对应list下标n对应的元素
        System.out.println(jedis.lrange("listKey", 0, -1));//获取该key所有值

        System.out.println(jedis.lindex("listKey",3));//获取key对应list下标3对应元素
        System.out.println(jedis.sort("listKey"));//key对应list的元素从小到大排序

    }

控制台输出:

对Set类型的操作

    @Test
    public void demo4() {
        Jedis jedis = new Jedis("47.106.195.84", 6379);
        jedis.auth("*****");

        jedis.sadd("k1", "v1");
        jedis.sadd("k1", "v2");
        jedis.sadd("k1", "v3");
        jedis.sadd("k1", "v4");
        Set<String> smembers = jedis.smembers("k1");//获取该集合的所有值
        for (String k : smembers) {
            System.out.println(k);
        }
        //判断是否含有该value
        System.out.println(jedis.sismember("k1", "v2"));
        jedis.srem("k1", "v2");//删除集合中的某个元素
        System.out.println(jedis.smembers("k1"));

        jedis.sadd("k2","v1","v2","v3","v4");
        System.out.println(jedis.scard("k2"));//获取set里元素个数


        System.out.println(jedis.sinter("k1","k2"));//获取k1和k2下对应元素的交集
        System.out.println(jedis.sunion("k1","k2"));//获取k1和k2下对应元素的并集
        System.out.println(jedis.sdiff("k1","k2"));//获取k1和k2下对应元素的差集
    }

控制台输出:

对Hash类型的操作

@Test
    public void demo5() {
        Jedis jedis = new Jedis("47.106.195.84", 6379);
        jedis.auth("******");

        jedis.hset("hash1", "userName", "妖妖灵");
        System.out.println(jedis.hget("hash1", "userName"));

        Map<String, String> map = new HashMap<String, String>();
        map.put("age", "18");
        map.put("telphone", "1333333333");
        map.put("address", "guangzhou");
        map.put("email", "yaoyaoling@163.com");
        jedis.hmset("hash2", map);
        System.out.println(jedis.hgetAll("hash2"));//获取hashMap下所有key-value元素
        System.out.println(jedis.exists("hash2","age"));//判断key里面是否有age这个field
        System.out.println(jedis.hvals("hash2"));//获取hashMap下的所有value
        System.out.println(jedis.hmget("hash2", "telphone", "email"));
        System.out.println(jedis.hlen("hash2"));//获取key下的元素个数

    }

控制台输出

对Zset类型的操作

@Test
    public void demo6() {
        Jedis jedis = new Jedis("47.106.195.84", 6379);
        jedis.auth("******");

        jedis.zadd("zset01", 100d, "z1");
        jedis.zadd("zset01", 90d, "z2");
        jedis.zadd("zset01", 80d, "z3");
        jedis.zadd("zset01", 70d, "z4");

        //返回有序集合:从最低分到最高分的方式排序集合
        Set<String> zrange = jedis.zrange("zset01", 0, -1);
        System.out.println(zrange);

    }

控制台输出

原文地址:https://www.cnblogs.com/yaoyaoling/p/15085379.html