redis常用功能介绍、基于java介绍redis客户端(二)

一、redis功能介绍

1、慢查询分析:只记录命令执行时间,并不记录命令排队与网络传输时间。

1、redis.conf文件配置

slowlog-log-slower-than 10000 单位是微秒

slowlog-max-len 128 指定列表中最大保存慢查询条数。

2、pipeLine流水线概念

redis获取数据步骤:1发送命令 2命令排队 3命令执行 4返回结果。当机房与用户端距离太远,真正耗时则为数据往返时间PTT。

pipeLine机制将一组redis命令组装,通过一次RTT传输给redis服务,并顺序返回数据,节约n-1次RTT时间。

pipeLine组装redis是非原子性操作,而redis原生的mget mset等批量操作指令为原子性。

3、redis支持简单事物

mulit开启事物,exec事物提交,discard事物不提交,但是无法支持事物回滚。

但是lua脚本可以完美的支持redis事物,lua脚本为c语言。

4、redis对lua脚本支持

redis执行lua脚本的两种方式:eval与evalsha,如果lua脚本过大,可以执行redis-cli --eval。

lua脚本原子性,多个redis命令封装传送,减少网络传输耗时。

5、GEO对经纬度支持:GEO数据结构底层为zset

添加:geoadd key 经度 维度 成员 geoadd city:location 116 39 beijing

查询:geopos key 成员

用途:查询两个地里位置间距离,获取某经纬度范围内的城市列表。


二、redis客户端

1、协议

几乎所有主流编程语言java、Python、php等都是redis服务的客户端。

客户端与redis通讯协议TCP、redis制定了RESP协议(redis序列化协议)实现数据交互,这种协议简单高效。

2、java客户端

1、首先引入redis依赖,直连获取Jedis对象。

缺点:每次操作客户端都要通过TCP建立与redis服务连接。

2、使用优秀的redis连接池操作Jedis对象

3、java对Pipeline对象整合

4、java对lua脚本支持

注:script:lua脚本内容 keyCount:键个数 params:相关参数keys和argv

3、客户端管理

client list:列出与redis服务相连的所有客户端连接信息

info clients :获取最大输入、输出缓冲区。

client setname getname :设置、获取当前客户端名称

client kill ip:port 关闭客户端进程

monitor:监控操作该redis服务的client

4、java客户端常见异常

1、无法从连接池获取连接

原因:连接池最大连接数不够、连接没有正常释放、存在慢查询导致连接占满、在redis服务端导致命令阻塞。

2、客户端读写超时

原因:读写超时时间设置过段、命令执行过慢、客户端与服务端网络异常、redis自身阻塞

3、客户端连接超时

原因:连接超时时间设置过段、客户端与服务端网络异常、redis自身阻塞

4、客户端缓冲区异常

原因:输出缓冲区满普通客户端输出缓冲区设置1G、不正常并发读写Jedis对象被多个线程并发操作

5、lua脚本正在执行,超过lua-time-limit

6、redis正在加载持久化文件

7、redis使用内存超过maxmemory

8、客户端连接数过大超过maxclients


展开阅读全文

页面更新:2024-04-01

标签:客户端   缓冲区   脚本   事物   异常   命令   对象   协议   常用   操作   功能   时间

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top