redis-3-redis客户端
2018-07-31 11:07:15 14 举报
AI智能生成
根据redis开发与运维一书,整理的知识点,分章节总结,有兴趣的可以查看下,这是第三章节
作者其他创作
大纲/内容
jedis
maven获取jedis
jedis使用方法:
1:生成一个jedis对象
Jedis jedis = new Jedis("127.0.0.1",6379);
Jedis jedis = new Jedis("127.0.0.1",6379);
2:执行set
jedis.set("hello","world");
jedis.set("hello","world");
3:执行get
String value = jedis.get("hello");
String value = jedis.get("hello");
4:finally中关闭jedis
jedis.close
jedis.close
其他命令使用类似
jedis没有提供序列化工具,可以使用第三方的,如protobuf,thrift
Jedis连接池使用方法
1:无需每次连接都生产jedis对象,降低消耗
2:使用连接池保护和控制资源使用
1:GenericObjectPoolConfig config = new GenericObjectPoolConfig();
2:JedisPool pool = new JedisPool(config,"127.0.0.1",6379);
3:Jedis jedis = pool.getResouce();
4:直接使用jedis
5:jedis.close();
客户端管理
客户端通信协议
协议
client和server之间的协议是在TCP上构建的
redis制定了RESP协议实现CS之间交互,简单高效,易于机器和人类解析
发送命令
*参数数量 CRLF
$参数1的字节数 CRLF
参数1 CRLF
$参数N的字节数 CRLF
参数N CRLF
$参数1的字节数 CRLF
参数1 CRLF
$参数N的字节数 CRLF
参数N CRLF
eg:set hello world
$3
SET
$5
hello
$5
world
$3
SET
$5
hello
$5
world
返回结果
状态回复:在RESP中的第一个字符为:+
错误回复:
整数回复
字符串回复
多条字符串回复
利用命令查看原始回复
查看方式:nc,telnet,socket原生
nc 127.0.0.1 6379
set hello world
+OK
+OK
sethx
-ERR unknown comman 'sethx'
-ERR unknown comman 'sethx'
incr counter
:1
:1
get hello
$5
world
$5
world
mget java jedis python redis-py
+OK
mget java python
*2
$5
jedis
$8
redis-py
+OK
mget java python
*2
$5
jedis
$8
redis-py
包含nil
eg:对不存在的键执行get,返回$-1
eg:
mget hello not_exists_key java
*3
$5
world
$-1
$5
jedis
mget hello not_exists_key java
*3
$5
world
$-1
$5
jedis
客户端常见异常
1:无法从连接池中获取连接
2:客户端读写超时
3:客户端连接超时
4:客户端缓存区异常
5:lua脚本正在执行
6:redis正在加载持久化文件
7:redis使用的内存超过maxmemory限制
8:客户端连接过大
案例分析
1:redis内存陡增
2:客户端周期性超时
0 条评论
下一页