目录
Jedis
1.jedis是什么
2.jedis的安装配置
3.jedis的基础命令操作展示
1.set和get操作:
2.exists和del操作:
3.keys和type操作:
4. expire和ttl:
Jedis
<!-- 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服务器的连接,如下所示
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操作:
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操作:
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操作:
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:
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);
}
执行上述代码操作:
❤️😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍
🍔我是小皮侠,谢谢大家都能看到这里!!
🦚主页已更新Java基础内容,数据结构基础,数据库,算法
🚕未来会更新Java项目,SpringBoot,Redis以及各种Java路线会用到的技术。
🎃求点赞!求收藏!求评论!求关注!
🤷♀️谢谢大家!!!!!!!