您当前的位置: 首页 >  redis

恐龙弟旺仔

暂无认证

  • 4浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Redis客户端应用

恐龙弟旺仔 发布时间:2018-02-02 16:36:04 ,浏览量:4

三:客户端应用
    1.client list
        列出与服务端连接的所有客户端信息,命令如下
127.0.0.1:6379> client list 
id=4 addr=127.0.0.1:59278 fd=5 name= age=1004 idle=970 flags=O db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=monitor
id=6 addr=127.0.0.1:59280 fd=6 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
        有多少客户端连接,就会有多少行信息展示
        1)主要属性信息:
        * id:客户端唯一标识,自增
        * addr:客户端的IP:port
        * fd:socket的文件描述符
        * name:客户端名称
        * age:生存时长(以秒为单位)
        * idle:空闲时长 (以秒为单位)
        * qbuf:客户端输入缓冲区总容量(以字节为单位,0表示没有分配缓冲区)
        * qbuf-free:客户端输入缓冲区剩余容量(以字节为单位)
        * obl:输出缓冲区的大小(字节为单位,0表示没有分配)  
        * oll:输出列表中包含的对象数量(当输出缓冲区没有剩余空间时,命令回复会以字符串对象的形式被入队到这个队列里)
        * omem:输出缓冲区和输出列表占用的内存总量
        其余字段信息可参考: http://www.runoob.com/redis/server-client-list.html 
        2)输入缓冲区
             redis为每个客户端分配了输入缓冲区,作用是将客户端发送的命令临时保存,redis从这个临时保存区拉取命令并执行。
            缓冲区使用不当产生的问题:
            * 某个客户端的输入缓冲区超过1G,会被关闭
            * 输入缓冲区过大,会造成数据丢失、键值淘汰等问题
            缓冲区过大的原因?
            * redis的处理速度跟不上缓冲区的输入速度
            * 每次进入缓冲区的命令包含大量bigkey
            如何监控缓冲区?
            * 定期执行client list,收集qbuf 、qbuf-free找到异常的连接记录并分析
            * 通过 info clients找到最大的输入缓冲区
127.0.0.1:6379> info clients
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
        3)输出缓冲区
            redis为每个客户端分配输出缓存区,作用是保存命令执行的结果返回给客户端。
            设置输出缓冲区参数:
            可通过设置redis.conf文件中的
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
            参数配置为
# client-output-buffer-limit    
class:客户端类型(normal-普通客户端 slave-slave客户端,用于复制 pubsub-发布订阅客户端)
hard limit:如果客户端的输出缓冲区大于hard limit,则客户端立即被关闭
soft limit和 soft seconds:如果客户端使用的输出缓冲区超过soft limit并且持续了soft seconds秒,客户端被关闭
    2.client setName、client getName
        用于给客户端设置名称
    3.client kill
        client kill IP:port 用于kill掉指定地址和端口号的客户端
    4.client pause
        client pause timeout(毫秒),用于阻塞客户端timeout毫秒
    5.monitor
        用于监控redis正在执行的命令
127.0.0.1:6379> monitor
OK
1516516485.623800 [0 127.0.0.1:59285] "get" "name"
    6.info memory
        展示内存使用情况
        * used_memory_human 可读格式返回redis内部存储的所有数据内存占用量
        * used_memory_peak_human 内存使用的最大值
        * used_memory_rss redis进程占用的物理内存总量
        * mem_fragmentation_ratio 内存碎片率 used_memory_rss/used_memory
关注
打赏
1655041699
查看更多评论
立即登录/注册

微信扫码登录

0.0668s