前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Redis入门到精通五】Java如何像使用MySQL一样使用Redis(jedis安装及使用)

【Redis入门到精通五】Java如何像使用MySQL一样使用Redis(jedis安装及使用)

作者头像
小皮侠
发布2024-09-25 09:15:07
580
发布2024-09-25 09:15:07
举报
文章被收录于专栏:Java学习从基础到就业

Jedis

Java 操作 redis 的客⼾端有很多,其中最知名的是 jedis。把下面代码拷贝到Maven项目的pom.xml文件中就可以引入jedis的依赖了。

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
 <groupId>redis.clients</groupId>
 <artifactId>jedis</artifactId>
 <version>4.3.2</version>
</dependency>

1.jedis是什么

Java操作MySQL的方式我们经常使用JDBC或者Mybatis,同样redis除了命令行操作的方式之外也提供了一组api,可以供我们实现定制化的redis客户端程序,进一步操作redis服务器。jedis就是大佬们基于这套api写出来的供Java操作redis服务器的一个开源库,我们可以使用这个库中封装好的方法来在IDEA中实现对redis服务器的操作。

为什么Redis我们可以定制化实现客户端程序,像我们经常使用的QQ,王者荣耀之类的程序不能定制化客户端呢? 这是因为redis是一种客户端-服务器结构的程序,客户端和服务器之间的访问是通过网络通信,网络通信的过程中,会用到很多的协议,这些协议可以分为应用层,传输层,网络层,数据链路层,物理层五种,靠下层的四种协议一般都是在系统内核或者驱动程序中实现的,我们在设计应用的过程中只能选择不能修改,但是像应用层的协议,更多的时候,程序的设计者们会自定义协议的内容,Redis此处就是使用自定义的应用层协议,传输层选择的TCP协议。之所以客户端和服务器之间能够使用网络通信,是因为开发客户端的人和开发服务器的人都知道协议的细节,能够很好的实现对通信内容的包装和解析。Redis自定义的应用层协议叫做RESP,可以在Redis官方文档查询到,正是因为Redis把自定义的应用层协议公开了出来,我们才能实现自定义的实现与服务器通信的Redis客户端。

2.jedis的安装配置

0.准备工作,启动云服务器上的redis程序,并利用ssh端口转发将端口映射到主机。在xshell中右键会话属性,选择SSH中的隧道功能,如下图所示:当ssh与服务器连接生效时。本机的8888端口便可以生效了。

可以在本地主机上敲以下命令观察是否生效。

tips:如果大家购买的带有公网ip的云服务器,尽量不要尝试将防火墙关闭把redis的端口对外开放,因为redis自带的防入侵的安全功能很少,极易被黑客入侵。

1.第一步首先创建一个Maven项目,直接把文章开篇的依赖复制进入pom.xml文件中,并点击右上方的刷新按钮,idea就会自动从Maven的中央仓库拉取jedis的相关代码到本地仓库。

2.第二步建立与Redis服务器的连接,如下所示

代码语言:javascript
复制
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;


public class RedisDemo {
    public static void main(String[] args) {
        JedisPool jedisPool=new JedisPool("tcp://127.0.0.1:8888");
        try(Jedis jedis=jedisPool.getResource()){//从redis连接池中取出一个连接,并自动释放。
              //此时便可以使用jedis对象中的方法来操作redis服务器了。
            String pong=jedis.ping();
            System.out.println(pong);
        }
    }
}

然后便可以验证程序了。

3.jedis的基础命令操作展示

1.set和get操作:
代码语言:javascript
复制
        JedisPool jedisPool=new JedisPool("tcp://127.0.0.1:8888");
        try(Jedis jedis=jedisPool.getResource()){//从redis连接池中取出一个连接,并自动释放。
              //此时便可以使用jedis对象中的方法来操作redis服务器了。
//            String pong=jedis.ping();
//            System.out.println(pong);
              testGetSet(jedis);
        }
    }
    private static void testGetSet(Jedis jedis){
        jedis.flushDB();//清库操作

        jedis.set("key1","value1");
        jedis.set("key2","value2");

        String value1 =jedis.get("key1");
        System.out.println(value1);

        String value2=jedis.get("key2");
        System.out.println(value2);

        String value3=jedis.get("key3");
        System.out.println(value3);
    }

执行上述代码,便可以得到下面结果。

2.exists和del操作:
代码语言:javascript
复制
    private static  void testExistsAndDel(Jedis jedis){
        jedis.flushDB();
        jedis.set("key1","value");
        jedis.set("key2","value");
        jedis.set("key3","value");
        boolean ret = jedis.exists("key1");
        System.out.println(ret);
        long n=jedis.del("key1");
        System.out.println(n);
        ret=jedis.exists("key1");
        System.out.println(ret);
        n=jedis.del("key2","key3");
        System.out.println(n);
        ret=jedis.exists("key2");
        System.out.println(ret);
    }

执行上述代码的运行结果:

3.keys和type操作:
代码语言:javascript
复制
    private static void keysAndType(Jedis jedis){
        jedis.flushDB();
        jedis.set("key1", "value");
        System.out.println(jedis.type("key1"));
        jedis.lpush("key2", "a", "b", "c");
        System.out.println(jedis.type("key2"));
        jedis.hset("key3", "name", "zhangsan");
        System.out.println(jedis.type("key3"));
        jedis.sadd("key4", "111", "222", "333");
        System.out.println(jedis.type("key4"));
        jedis.zadd("key5", 1, "aaa");
        System.out.println(jedis.type("key5"));
        Set<String> keys = jedis.keys("*");
        System.out.println(keys);
        keys = jedis.keys("key?");
        System.out.println(keys);
    }

执行上述代码:

4. expire和ttl:
代码语言:javascript
复制
    private static void expireAndTTL(Jedis jedis) throws InterruptedException {
        jedis.setex("key",60,"value");
        long ttl=jedis.ttl("key");
        System.out.println(ttl);
        Thread.sleep(3000);
        ttl=jedis.ttl("key");
        System.out.println(ttl);
    }

执行上述代码操作:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Jedis
    • 1.jedis是什么
      • 2.jedis的安装配置
        • 3.jedis的基础命令操作展示
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档