键扩展
慢查询
慢查询:记录执行时间超过指定的时间命令信息
1)Redis中的执行时间代表:命令在单线程中运行时间(排队和发送时间除外)
2)可定期执行SLOW GET命令将慢查询日志持久化存储至硬盘中;
慢查询由以下2个参数配置:
参数 | 含义 |
---|---|
slowlog-log-slower-than N | 指定超过N毫秒的命名均为慢查询 (默认值10000) |
slow-man-len M | 最多记录M条慢查询 (默认值128) |
1)N = 0 代表记录所有命令,N < 0 代表不记录任何命令
2)M存储于内存的队列中(超出长度再记录时,将弹出最先记录的命令);
//建议值:N = 1000 M > 1000
常用命令
(1)获取慢查询日志队列中的命令信息
SLOWLOG GET N
1)N指定获取前N条命令(若省略,则返回全部命令信息);
2)命令信息的构成格式:
(integer) 命令在队列中ID
(integer) 执行命令的时间戳
(integer) 命令耗时
执行的命令和参数
Redis的IP和端口
“”
如:获取当前Redis中慢查询日志队列
(2)查询慢查询日志的当前长度(已记录命令条数)
SLOWLOG LEN
(3)清空慢查询日志队列
SLOWLOG RESET
订阅频道
订阅:Redis客户端与服务端Redis的特定频道绑定以获取数据
1)Redis客户端可订阅多个频道,频道也可被多个Redis客户端订阅
2)频道(Channel):存储有限数据可供不同Redis客户端获取
3)后续订阅的Redis客户端无法获取频道中先前的数据
如:Redis客户端订阅服务端Redis的频道
(1)创建频道(添加数据):PUBLISH 频道名 数据
1)返回成功获取该数据的Redis客户端数;
(2)订阅频道:SUBSCRIBE 频道1 频道N
1)订阅成功后会占用当前终端以显示从频道中获取数据的信息;
2)正则表达式订阅:PSUBSCRIBE 表达式1 表达式N
数据格式如下:
"message"
"频道名"
"数据信息"
(3)取消订阅:UNSUBSCRIBE 频道1 频道N
1)取消订阅指定频道后,无法获取该频道的任何数据信息;
2)正则表达式取消:PUNSUBSCRIBE 表达式1 表达式N
(4)活跃频道:PUBSUB CHANNELS 正则表达式
1)返回当前活跃的频道(该频道至少被一个Redis客户端订阅);
2)若不指定正则表达式,则默认返回所有活跃的频道;
(5)订阅数:PUBSUB NUMSUB 频道
1)返回指定频道被Redis客户端的订阅数;
功能键类型
GEO
GEO:通过经纬度存储地理位置信息数据
1)底层实现为有序集合(可通过有序集合操作该类型键)
//GEO中无删除成员命令,可通过ZREM命令删除指定成员
(1)创建/添加键:GEOADD 键名 经度 纬度 成员
1)成员代表地理位置,且可存储多个(格式必须为:经度 纬度 字符串);
2)返回成功添加地理位置的个数(修改成员,则返回0);
(2)获取经纬度:GEOPOS 键 成员1 成员N
1)返回指定成员的经纬度;
(3)获取距离:GEODIST 键 成员1 成员2 单位
1)返回成员1和成员2的地理距离;
单位 | 含义 |
---|---|
m | 米 |
km | 公里 |
mi | 英里 |
ft | 表尺 |
(4)范围获取:GEORADIUS 键 经度 纬度 半径 选项
1)以指定经纬度作为中心,返回在指定半径内成员的经纬度;
2)GEORADIUSBYMEMBER名利同理,但返回的是成员;
3)常用选项如下:
选项 | 含义 |
---|---|
WITHCOORD | 返回结果包含经纬度 |
WITHDIST | 返回结果包含距中心位置的距离 |
WITHHASH | 返回结果中包含GEOHASH |
ASC | 以中心距离升序返回结果 |
DESC | 以中心距离降序返回结果 |
STORE 新键 | 将结果存储至新键 |
STOREDIST 新键 | 将结果距中心的距离存储至新键 |
(5)转换:GEOHASH 键 成员1 成员N
1)将指定成员的经纬度以一维字符串返回(长度越长,精度越高);
Bitmaps
Bitmaps:以二进制格式存储数据,可修改每个位的值
1)底层实现为字符串(但可对字符串进行位操作);
(1)创建/修改键:SETBIT 键名 偏移量 值
1)偏移量(下标):指定创建/修改该键的特定位的值(只可为0或1);
2)偏移量的单位为位(1个字节为8位);
(2)获取值:GETBIT 键 偏移量
1)若指定偏移量位的值不存在,则也返回0(也可能值为0);
(3)计算值为1的个数:BITCOUNT 键 M N
1)返回M字节到N字节之间所含有1的个数(若省略,返沪所有1的个数);
(4)多键之间运算:BITOP 运算符 新键名 键1 键N
1)将多个键的“1”按照运算符进行运算,并将结果存储至新键;
2)运算符有以下4种:
运算符 | 含义 |
---|---|
and | 交运算 |
or | 并运算 |
not | 非运算 |
xor | 异或运算 |
(5)指定值的偏移量:BITPOS 键 值 偏移量1 偏移量2
1)返回指定值在偏移量1到偏移量2之间第一次出现的偏移量位;
2)若省略偏移量1和偏移量2,则范围为该键的所有位;
HyperLogLog
HyperLogLog:占用极小内存空间存储数据,但存在误差率(0.81%);
1)底层实现为字符串,且所含值不重复;
(1)创建/添加键:PFADD 键名 “值1” “值N”
1)成功添加则返回1(无论添加多少个值,添加成功即可);
2)若添加值已存在,则不再进行添加;
(2)值数量:PFCOUNT 键1 键N
1)返回指定键所含值的个数;
(3)合并:PFMERGE 新建名 键1 键N
1)将键1和键N合并的结果存储至新疆(去除重复键);