【Redis十一】Redis的客户端
一、怎么连接redis的客户端
- 首先来看看redis是否已经启动 ps aux | grep redis ,没启动./redis-server ../redis.conf 后端启动.sh脚本nohup ./run.sh &
- 进入redis的安装目录下的src目录,找到redis-cli 文件,使用 ./redis-cli -h 指定的IP -p 指定端口号
- 如果是设置了密码则 输入auth 密码 密码验证
二、怎么通过跳板机连接redis
#首先要添加Maven依赖 <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.53</version> </dependency>
三、如何获取连接池
四、Redis的客户端解析
redisServer大致文件
struct redisServer { …… //一个链表,保存了所有客户端状态 list *clients; …… };
redis.h/redisClient结构主要内容有:
typedef struct redisClient { #客户端正在使用的套接字描述符 int fd; robj *name; #flags属性的值可以是单个标志:flags = <flag>, #也可以是多个标志的二进制:flags = <flags1> | <flags2> | …… int flags; #客户端状态的输入缓冲区用于保存客户端发送的命令请求 sds querybuf; /*在服务器将客户端发送的命令请求保存到客户端状态的querybuf属性之后, 服务器将对命令请求的内容进行分析, 并将得出的命令参数以及命令参数的个数分别保存到客户端状态的argv属性和argc属性*/ int argc; robj **argv; #当程序在命令表中成功找到argv[0]所对应的redisCommand结构体时, #它会将客户端状态的cmd指针指向这个结构体 struct redisCommand *cmd; #输出缓冲区 int bufpos;//buf是一个大小为REDIS_REPLY_CHUNK_BYTES字节的字节数组 char buf[REDIS_REPLY_CHUNK_BYTES];//bufpos属性则记录了buf数组目前已使用的字节数量 #固定缓冲区不够用,则启用可变大小缓冲区,其由reply链表和一个或多个字符串对象组成 list *reply; #用于记录客户端是否通过了身份验证 int authenticated; /* when requirepass is non-NULL */ #时间相关 time_t ctime; time_t lastinteraction; time_t obuf_soft_limit_reached_time; } redisClient;
套接字描述符fd属性:
输出缓冲buf和bufpos属性:
时间属性:
能让客户端关闭的情况:
六、redis的常见命令
下一篇:
事务的传播特性和隔离级别理解