Jedis连接实例、源码分析
Jedis是Redis的java版本的客户端实现
即为: 服务端:Redis C语言
客户端:Jedis java 语言
1.搭建maven项目,引入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
2.启动redis服务:redis-server.exe redis.windows.conf
3.编写测试类
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.204.49", 6379);
jedis.set("zhaojie", "zhaojieaaaa");
log.info("输出结果:"+jedis.get("zhaojie"));
System.out.println("输出结果:"+new Jedis("192.168.204.49",6379).ping());
}
遇到问题:
1.java.net.ConnectException: Connection refused: connect
解决:打开redis.windows.conf文件,将127.0.0.1改为本机的ip
2.Invalid argument during startup: unknown conf file parameter : bind
原因:是去掉#注释的时候没有把空格一并去掉
解决:bind 192.168.204.49之前不能有空格
常见问题:
1.查看防火墙是否关闭
2.redis 服务是否启动
源码分析
构造方法调用过程:(只是赋值)
redis.clients.jedis.Jedis#Jedis(java.lang.String, int)
redis.clients.jedis.BinaryJedis#BinaryJedis(java.lang.String, int)
redis.clients.jedis.Client#Client(java.lang.String, int)
redis.clients.jedis.BinaryClient#BinaryClient(java.lang.String, int)
redis.clients.jedis.Connection#Connection(java.lang.String, int)
set方法调用过程:
redis.clients.jedis.Jedis#set(java.lang.String, java.lang.String)
redis.clients.jedis.BinaryJedis#checkIsInMultiOrPipeline(check检查)
redis.clients.jedis.Client#set(java.lang.String, java.lang.String)
redis.clients.jedis.Connection#sendCommand(redis.clients.jedis.commands.ProtocolCommand, byte[]…)(发送命令,如果有socket就会有io host port服务端 客户端)
redis.clients.jedis.Connection#outputStream
redis.clients.jedis.Connection#inputStream
redis.clients.jedis.Protocol#sendCommand(redis.clients.jedis.util.RedisOutputStream, byte[], byte[]…)