Redis(十四):Jedis

2022-12-01 08:46:01 浏览数 (1)

Jedis是Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis中间件,必须对Jedis熟悉才能写成漂亮的代码!

1、新建Maven工程,导入对应依赖

代码语言:javascript复制
<dependencies>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
        </dependency>

    </dependencies>

2、编码测试

  • 连接数据库
  • 操作命令
  • 断开连接
代码语言:javascript复制
package com.lizh.test;

import redis.clients.jedis.Jedis;

public class TestPing {
    public static void main(String[] args) {
        //1、 new 一个 Jedis 对象
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //2、输入密码
        jedis.auth("123456");
        //3、测试连接
        System.out.println(jedis.ping());
        //4、关闭连接
        jedis.close();
    }
}

输出 : PONG

3、对Key操作的命令

代码语言:javascript复制
package com.lizh.test;

import redis.clients.jedis.Jedis;

    @Test public void testKey() throws InterruptedException
    {
        System.out.println("清空数据:" jedis.flushDB());
        System.out.println("判断某个键是否存在:" jedis.exists("username"));
        System.out.println("新增<'username','zzh'>的键值对:" jedis.set("username", "zzh"));
        System.out.println(jedis.exists("name"));
        System.out.println("新增<'password','password'>的键值对:" jedis.set("password", "password"));
        System.out.print("系统中所有的键如下:");
        Set<String> keys = jedis.keys("*");
        System.out.println(keys);
        System.out.println("删除键password:" jedis.del("password"));
        System.out.println("判断键password是否存在:" jedis.exists("password"));
        System.out.println("设置键username的过期时间为5s:" jedis.expire("username", 5));
        TimeUnit.SECONDS.sleep(2);
        System.out.println("查看键username的剩余生存时间:" jedis.ttl("username"));
        System.out.println("移除键username的生存时间:" jedis.persist("username"));
        System.out.println("查看键username的剩余生存时间:" jedis.ttl("username"));
        System.out.println("查看键username所存储的值的类型:" jedis.type("username"));
    }

输出结果

代码语言:javascript复制
清空数据:OK
判断某个键是否存在:false
新增<'username','zzh'>的键值对:OK
false
新增<'password','password'>的键值对:OK
系统中所有的键如下:[username, password]
删除键password:1
判断键password是否存在:false
设置键username的过期时间为5s:1
查看键username的剩余生存时间:3
移除键username的生存时间:1
查看键username的剩余生存时间:-1
查看键username所存储的值的类型:string

4、通过Jedis理解Redis事务

代码语言:javascript复制
package com.lizh.test;

import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;

public class TestPing {
    public static void main(String[] args) {
        //1、 new 一个 Jedis 对象
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //2、输入密码
        jedis.auth("123456");

        //3、开启事务
        Transaction multi = jedis.multi();

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("k1","v1");
        jsonObject.put("k2","v2");
        String result = jsonObject.toJSONString();
        multi.set("k1",result);

        try {
            multi.set("s1","v1");
            multi.set("s2","v2");
            int i = 1/0;    //代码执行异常,事务抛出失败
            multi.exec();   //执行事务
        } catch (Exception e){
            multi.discard();   //移除事务
            e.printStackTrace();
        }finally {
            System.out.println(jedis.get("s1"));
            System.out.println(jedis.get("s2"));
            jedis.close();  //关闭连接
        }
    }

}

5、小结

Jedis中jedis对象的方法是与Redis的命令一一对应的。

0 人点赞