redis特殊功能

慢查询

  • 生命周期

    发送命令,

    排队,

    执行命令,

    返回结果

慢查询发生在第三阶段
客户端超时不一定慢查询,但查询慢是客户端超时的一种可能

  • 两个配置

队列长度 slowlog-max-len

1.先进先出

2.固定长度

3.保存在内存中   

慢查询阈值 slowlog-log-slower-than

1.(单位:微妙)

2.slowlog-log-slower-than= 0:记录所有命令

3.slowlog-log-slower-than<0:不记录所有命令

默认值

config get slow-max-len=128
config get slow-log-slower-than=10000

修改

config set slow-max-len=256
config set slow-log-slower-than=10001
  • 三个命令

    1.slowlog get[n]:获取慢查询队列

    2.slowlog len :获取慢查询队列长度

    3.slowlog reset :清空慢查询

pipeline 流水线功能

  • 什么流水

redis 1次请求时间=1次网络时间+1次计算时间

流水线就是将一批命令打包发送给服务端,服务端一次执行,这样

redis 1次请求时间=1次网络时间+n次计算时间

这样可以大大减少网络的开销,这就是流水线 redis的计算时间是微妙级别,因此redis大部分时间是花在网络时间上

  • 客户端实现

没有pipleline的情况下

Jedis jedis=new Jedis("localhost",6379);
for(int i=0;i<10000;i++){
    jedis.hset("hashkey:"+i,"field"+i,"value"+i);
}
#需要50s

使用pipeline

Jedis jedis=new Jedis("localhost",6379)
for(int i=0;i<100;i++){
    Pipeline pipeline=jedis.piplined();
    for(int j=i*100;j<(i+1)*100;j++){
        pipeline.hset("hashkey:"+j,"field"+j,"value"+j)
    }
    pipeline.syncAndReturnAll();
}
#需要0.7s
  • 与原生操作对比

m操作是原子性操作,而pipeline是非原子性操作的。但返回的结果是顺序性的

  • 使用建议

    1. 注意每次pipeline携带数据量
    2. pipeline每次只能作用在一个redis节点上
    3. M操作与pipeline的区别

发布订阅

  • 角色

    发布者(pulisher)

    订阅者(subscriber)

    频道(channel)

  • 模型

类似生产者消费者模型,类似kafka

  • API

    publish channel message #发布者

    subscribe channel #一个或多个

    unsubscribe channel #取消订阅

  • 发布

hyperloglog

  • 新型的数据结构

基于HyperLogLog算法:极小空间完成独立数量统计

HyperLogLog的本质是字符串

  • 三大命令

    pfadd key element[element…]:像hyperloglog添加元素

    pfcount key [key…]:计算hyperloglog的独立总数

    pfmerge destkey sourcekey[sourcekey…]:合并多个hyperloglog

  • 内存消耗

百万级别的统计只消耗内存kb级别,但是统计的结果不是很准确官方给出的错误率是0.81%

  • 使用经验

geo

  • GEO是什么

redis3.2新添加的

GEO(地理信息定位):存储经纬度,计算两地距离,范围计算等

  • 5个城市的经纬度

添加地理位置信息

geoadd cities:locations 116.28 39.55 beijing

geoadd cities:locations 117.12 39.08 tianjian 114.29 38.02 shijiazhuang 118.01 39.38 tangshan 115.29 38.51 baodian

获取地理位置信息

geopos cities:locations tianjian

计算两个位置间的距离并且可以指定单位

geodist cities:locations tianjian beijing km

georadius API

  • 相关说明

从3.2版本以后

type geoKey=zset

没有删除API:zrem key member

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值