Redis的功能

慢查询

(客户端请求的)生命周期

在这里插入图片描述上图为客户端请求到redis的完整生命周期

查询的两个配置

  1. slowlog-max-len
  • 慢查询是一个先进先出的队列
  • 队列是固定长度的
  • 保存在内存中,如果redis重启,则数据不会持久化,而是随着重启而消失
    在这里插入图片描述第一个参数为设置超时时间,例如当超过10ms就进入慢查询范围内,加入队列中;
    第三个参数为队列长度设置,慢查询的队列长度为100
    第二个参数为队列内容
  1. slowlog-log-slower-than
  • 慢查询阈值(单位:微妙)
  • slowlog-log-slower-than=0,记录所有命令
  • slowlog-log-slower-than<0,不记录任何命令
配置方法
  1. 默认值
  • config get slowlog-max-len =128
  • config get slowlog-log-slower-than = 10000
  1. 修改配置文件重启(如果redis未启动,可这样配置,如果redis已经启动,使用动态配置)
  2. 动态配置
  • config set slowlog-max-len 1000
  • config set slowlog-log-slower-than 1000

三个命令

slowlog get [n]  # 获取慢查询队列(n指定查询几条)
slowlog len # 获取慢查询队列长度
slowlog reset # 清空慢查询队列长度

运维经验

  1. slowlog-log-slower-than不要设置过大,默认10ms,通常设置1ms
  2. config get slowlog-max-len 不要设置过小,通常设置1000左右
  3. 理解命令的生命周期
  4. 定期持久化慢查询

pipline(流水线)

什么是流水线

在这里插入图片描述
在这里插入图片描述

使用建议

  1. 注意每次pipline携带数据量
  2. pipline每次只能作用在一个Redis节点上

发布订阅

角色

  1. 发布者(publisher)
  2. 订阅者(subscriber)
  3. 频道(channel)

模型

API

  1. publish

在这里插入图片描述
2. subcrib
在这里插入图片描述
3. unsubcrib
在这里插入图片描述
4. 其他
在这里插入图片描述

发布订阅与消息队列

发布订阅,是所有订阅者都会收到
消息队列是需要抢的,只有一个客户端能收到

Bitmap

位图

  1. setbit
127.0.0.1:6382> setbit unique:users:2016-04-05 0 1
(integer) 0
  1. getbit
    在这里插入图片描述
127.0.0.1:6382> getbit unique:users:2016-04-05 11
(integer) 1
  1. bitcount
    在这里插入图片描述
127.0.0.1:6382> bitcount unique:users:2016-04-05 
(integer) 5
  1. bitop
    在这里插入图片描述
127.0.0.1:6382> bitop and unique:allusers unique:users:2016-04-05 unique:users:2016-04-04
(integer) 3
127.0.0.1:6382> bitcount unique:allusers
(integer) 0
  1. bitpos
    在这里插入图片描述

独立用户统计

  1. 使用set和Bitmap
  2. 一亿用户,5千万独立
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

HyperLogLog

是否是新的数据结构?

用极小空间完成独立数量统计的一种数据结构。
本质是字符串

127.0.0.1:6382> type 2018_11_24:unique:ids
string

三个命令

在这里插入图片描述

127.0.0.1:6382> pfadd 2019_11_25:unique:ids "uuid-1" "uuid-2" "uuid-3" "uuid-4"
(integer) 1
127.0.0.1:6382> pfcount 2019_11_25:unique:ids
(integer) 4
127.0.0.1:6382> pfadd 2019_11_25:unique:ids "uuid-1" "uuid-2" "uuid-3" "uuid-90"
(integer) 1
127.0.0.1:6382> pfcount 2019_11_25:unique:ids
(integer) 5
127.0.0.1:6382> pfadd 2018_11_25:unique:ids "uuid-1" "uuid-2" "uuid-3" "uuid-4"
(integer) 1
127.0.0.1:6382> pfcount 2018_11_25:unique:ids
(integer) 4
127.0.0.1:6382> pfadd 2018_11_24:unique:ids "uuid-4" "uuid-5" "uuid-6" "uuid-7"
(integer) 1
127.0.0.1:6382> pfcount 2018_11_24:unique:ids
(integer) 4
127.0.0.1:6382> pfmerge 2018_11_25:unique:ids 2018_11_24:unique:ids
OK
127.0.0.1:6382> pfmerge 2018_11_24_25:unique:ids 2018_11_24:unique:ids 2018_11_25:unique:ids
OK
127.0.0.1:6382> pfcount 2018_11_24_25:unique:ids
(integer) 7

内存消耗

在这里插入图片描述

使用经验

  1. 错误率0.81%
  2. 无法取出数据,只能统计独立用户数

GEO

GEO是什么

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

5个城市经纬度

在这里插入图片描述

相关命令

  1. geoadd # 添加经纬度信息
127.0.0.1:6382> geoadd cities:locations 116.28 39.55 beijing
(integer) 1
127.0.0.1:6382> geoadd cities:locations 117.12 39.08 tianjin 114.29 38.02 shijiazhuang 118.01 39.38 tangshan 115.29 38.51 baoding
(integer) 4
  1. geopos # 获取地理位置信息
127.0.0.1:6382> geopos cities:locations tianjin
1) 1) "117.12000042200088501"
   2) "39.0800000535766543"
  1. geodist # 获取两地之间的距离
    在这里插入图片描述
127.0.0.1:6382> geodist cities:locations tianjin beijing km
"89.2061"
  1. georadius # 获取指定位置范围内的地理位置信息集合
    在这里插入图片描述
127.0.0.1:6382> georadiusbymember cities:locations beijing 150 km # 计算距离北京15km的城市
1) "beijing"
2) "tianjin"
3) "tangshan"
4) "baoding"

相关说明

127.0.0.1:6382> type cities:locations  #本质是有序集合
zset
127.0.0.1:6382> zrem cities:locations beijing # 删除操作使用有序集合的操作
(integer) 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值