1、什么是jedis?
简单来说,jedis是官方推荐的java客户端开发包。
大白话的话参看https://blog.csdn.net/Jamie_Jiang/article/details/112909913
2、如何简单实用jedis
2.1、项目搭建
我是用的springboot项目,简单的创建。
新建项目springboot项目,应该都会。
添加依赖,看右侧selected dependencies,我选了这些。
然后next、finish,之后添加jedis的依赖,jedis依赖可以去maven仓库搜索jedis,挑一个你喜欢的版本。
之后打开test文件夹下的测试类,进行测试使用,pingpong。
恭喜!
2.2、jedis的API
jedis的API和redis一致,只要会了redis的命令,那么jedis就依次jedis.编译器idea就会提示我们啦~
具体的简单使用,可以看官方教程。我就不复述了。
https://www.redis.net.cn/tutorial/3525.html
完整的API文档如下
https://tool.oschina.net/apidocs/apidoc?api=jedis-2.1.0
3、jedis的问题
如果你追一下new Jedis(ip,port)这个构造的源码,那么就会发现,Jedis本质是一个Connection,所以new一个jedis就是建立连接,你之后使用jedis.ping()就是要做的事情了。
我们继续追踪ping方法,发现了有一步判断,是否已经建立了连接,如果没有那么就创建一个新的socket。
注意,就是这一步,如果多个线程同时操作的时候,是很容易蒙混过关的,假如一个线程1在判断的时候,已经确定没有连接了,所以当前线程1进入了创建socket的过程中,但是还没开始创建,这个时候又来一个线程2,他也来判断,也是确定没有连接,所以他也会自己创建socket,这样他俩不一定谁就把谁覆盖了,因为socket是Connect的属性,故线程就不安全了。RedisOutputStream和RedisInputStream同理,也都是可能会导致线程不安全的点,然后就会抛出异常,socket没有正常关闭。