redis学习笔记(三)--Redis的功能

慢查询

基本概念

慢查询日志记录命令执行先后的超时的执行时间。(只记录命令执行时间)git

慢查询的两个配置

Redis提供了slowlog-log-slower-thanslowlog-max-len两个配置。redis

slowlog-log-slower-than

slowlog-log-slower-than是预设阀值,默认值10000微秒。若是执行的时间超过了这个阀值,那么这个命令就会被记录在慢查询日志中。算法

运维提示

设置slowlog-log-slower-than=0 ==> 记录全部命令
设置slowlog-log-slower-than<0 ==> 对于任何命令都不会记录vim

slowlog-max-len

slowlog-max-len说明慢查询日志最多存储多少条。数组

修改方式

方式一

修改配置文件:并发

$ vim redis.conf
...
slowlog-log-slower-than 10000
slowlog-max-len 5
方式二

使用config set命令:运维

> config set slowlog-log-slower-than 20000
> config set slowlog-max-len 1000
> config rewrite  # 配置持久化到本地配置文件

命令

获取慢查询日志
> slowlog get [n]

慢查询日志由日志标识id、发生时间戳、命令耗时、执行命令和参数组成。性能

获取慢查询日志
> slowlog len
慢查询日志重置
> slowlog reset

Redis Shell

redis-cli

命令执行屡次

-r可让命令执行屡次。
例如执行三次ping命令:测试

$ redis-cli -r 3 ping

间隔时间执行命令

-i表示间隔多少秒执行一次命令。
例如每一个1秒执行一次ping命令,一共执行5次:this

$ redis-cli -r 5 -i 1 ping

从标准输入读取数据

-r表明从标准输入读取数据做为redis-cli的最后一个参数。
例如:

$ echo "hello" | redis-cli -x set key

链接Redis Cluster节点

-c用于链接Redis Cluster节点时使用。

密码登陆

若是Redis配置了密码,使用-a输入密码。

扫描指定模式

--scan--pattern用于扫描指定模式的键。

模拟当前Redis节点的从节点

--slave是把当前Redis节点的从节点,用来获取当前Redis节点的更新操做。

生成并发送RDB持久化文件

--rdb会请求Redis示例生成并发送RDB持久化文件,保存在本地。

查看Redis的重要统计信息

--stat能够实时获取Redis的重要统计信息。

$ redis-cli --stat

redis-server

测试内存容量

--test-memory可用于测试系统内存是否够Redis使用。
例如检测当前系统是否能提供1G内存给Redis:

$ redis-server --test-memory 1024

测试完成输入passed this test。

redis-benchmark

redis-benchmark用于为Redis作基准性能测试。

命令

设置并发数量

-c设置客户端的并发数量,默认为50。

设置请求总量

-n表明客户端的请求总量,默认为100000。

Pipeline(流水线)

基本概念

对一组Redis命令进行组装,经过一次RTT(往返命令时间)传输给Redis。pipeline每次只能做用一个Redis节点上。

使用

从开发层面来控制。
链接:https://blog.csdn.net/weixin_...

事务和Lua

基本概念

Redis提供了简单的事务功能以及集成Lua脚原本解决问题。

事务

Redis提供简单的事务功能,将一组须要一块儿执行的命令放到multiexec两个命令之间。

> multi
> set key hello
QUEUED # 表示命令并无真正执行
> exec

可使用discard命令来中止事务的执行

> discard

watch命令能够监控一个或多个键,若是有键在事务修改期间被别的方式修改,则以后的事务不会执行。

> watch key

Lua

在Redis中执行Lua脚本有两种方法:evalevalsha

eval
> eval 脚本内容 key个数 key列表 参数列表

能够经过redis-cli--eval执行Lua脚本。

evalsha

经过获得脚本的SHA1校验和来直接执行对应的Lua脚本。可使Lua脚本常驻在服务端。

加载脚本

将脚本内容加载到Redis的内存中:

$ redis-cli script load "$(cat lua_get.lua)"

获得Lua脚本的SHA1。

执行脚本
> evalsha 脚本SHA1值 key个数 key列表 参数列表
管理Lua脚本
加载脚本到Redis内存中
> script load script
检测脚本是否存在
> scripts exists sha1 [sha1 ...]
清除内存中已经加载的全部脚本
> script flush
终止正在执行的脚本
> script kill

Bitmap位图

基本概念

以二进制来表示数据。

命令

设置值

> setbit key offset value

设置键的第offset各位的值

获取值

> gitbit key offset

获取Bitmaps指定范围值为1的个数

> bitcount start end

Bitmaps间的运算

> bitop op destkey key[key ....]

bitop包括了:and交集、or并集、not非、xor异或。将结果保存在destkey中。

HyperLogLog

基本概念

一种基准算法。

命令

添加

> pfadd key element [element ...]

添加成功返回1。

计算独立用户数

> pfcount key [key ...]

合并

> pfmerge destkey sourcekey [siyrcekey ..]

发布订阅

基本概念

在"发布/订阅"的模式下,消息发送者和订阅者不进行直接通讯,发布者客户端向指定的频道(channel)发布消息,订阅该频道的每一个客户端均可以收到该消息。

命令

发布消息

> publish channel message

订阅消息

> subscribe channel [channel ...]

取消订阅

> unsubscribe [channel [channel ...]]

按照模式订阅和取消订阅

> psubscribe pattern [pattern ...]
> punsubscribe [pattern [pattern ...]]

查阅订阅

查看活跃的频道
> pubsub channels [pattern]
查看频道订阅数
> pubsub numsub [channel ...]
查看模式订阅数
> pubsub numpat

GEO

基本概念

Redis3.2版本提供了GEO(定理信息定位)功能。

命令

增长地理位置信息

> geoadd key longitude latitude member [longitude latitude member ...]
longitude:经度
latitude:维度
member:成员

获取地理位置信息

> geopos key member [member ...]

获取两个地理位置的距离

> geodist key member1 member2 [unit]

unit表明返回的结果的单位:

m(meters):米
km(kilometers):千米
mi(miles):英里
ft(feet):表明尺

获取指定位置范围内的地理信息位置集合

> georadius key longitude latitude raniusm|km|ft|mi 
> georadiusbymember key member raniusm|km|ft|mi

获取geohash

> geohash key member [member ...]

删除地理位置信息

> zrem key member

GEO的底层实现是zset,因此借用zrem命令实现对地理位置信息的删除。

相关文章
相关标签/搜索