redis-3-redis客户端
2018-07-31 11:07:15 14 举报
AI智能生成
根据redis开发与运维一书,整理的知识点,分章节总结,有兴趣的可以查看下,这是第三章节
作者其他创作
大纲/内容
jedis
maven获取jedis
jedis使用方法:
1:生成一个jedis对象<br>Jedis jedis = new Jedis("127.0.0.1",6379);
2:执行set<br>jedis.set("hello","world");
3:执行get<br>String value = jedis.get("hello");
4:finally中关闭jedis<br>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<br>$参数1的字节数 CRLF<br>参数1 CRLF<br>$参数N的字节数 CRLF<br>参数N CRLF
eg:set hello world<br>$3<br>SET<br>$5<br>hello<br>$5<br>world
返回结果
状态回复:在RESP中的第一个字符为:+
错误回复:
整数回复
字符串回复
多条字符串回复
利用命令查看原始回复
查看方式:nc,telnet,socket原生
nc 127.0.0.1 6379
set hello world<br>+OK
sethx<br>-ERR unknown comman 'sethx'
incr counter<br>:1
get hello<br>$5<br>world
mget java jedis python redis-py<br>+OK<br>mget java python<br>*2<br>$5<br>jedis<br>$8<br>redis-py
包含nil
eg:对不存在的键执行get,返回$-1
eg:<br>mget hello not_exists_key java<br>*3<br>$5<br>world<br>$-1<br>$5<br>jedis
客户端常见异常
1:无法从连接池中获取连接
2:客户端读写超时
3:客户端连接超时
4:客户端缓存区异常
5:lua脚本正在执行
6:redis正在加载持久化文件
7:redis使用的内存超过maxmemory限制
8:客户端连接过大
案例分析
1:redis内存陡增
2:客户端周期性超时
0 条评论
下一页