Caution

未完待续

1 安装

2 配置

/usr/local/etc/redis.conf
...
daemonize no # 是否守护, 一般正式用的话 是yes,你测试的时候可以是no
port 6379
logfile "6379.log" # 文件会存放到dir指定的目录
dir /usr/local/var/db/redis/ #工作目录 数据都会保存在这里, (rdb文件和aof文件)
...
命令查看相关配置
info
info server #看下redis的版本,配置文件路径啊之类的
config get port #查看端口
        1) "port"
        2) "6379"
config get *
# 支持的最大连接数
config get maxclients

3 基础命令

# 客户端连接服务端
redis-cli -h 127.0.0.1 -p 6379
# 直接执行 命令 set age
redis-cli -p 6378 set age 11
# 直接输入ping 命令, ok的话, pong 回应
ping

# set string
set name "hei"
get name
# 判断key是否存在
exists name
# 判断key是什么类型
type name
## 返回值
    #- none 表示没有这个key
    #- string
    #- hash
    #- set 集合
    #- zset 有序集合
    #- list
# 查看当前db 有多少key,key的总数
dbsize # 他实际是一个计数器,不是计算key的总数 的操作的
# 遍历所有key, 显示所有key
keys *
# 可以使用正则
keys na* #遍历所有na开头的key
#删除key
del name
del name age #多个删除

# 过期设置
expire name 5 #单位是秒,5秒后过期
# 查看key的过期
ttl name #返回-2 表示已经不存在了
#取消过期时间设置 (就是没有过期时间了)
persist name
#再次 查看
ttl name #返回-1 表示key没有设置过期时间

4 redis生命周期

  1. 客户端发送命令,向服务端发送请求
  2. 在redis服务端,redis是单线程的,所以可以想象成有一个队列在维护客户端发送来的请求命令
  3. 服务端一个一个的执行队列里的命令
  4. 返回结果给客户端

5 流水线pipeline

6 慢查询

  • mysql 有慢查询, redis 也有, 就是服务端真正执行命令所花费的时间 比较慢的 语句
  • redis把慢查询的命令存放到一个队列中,这个队列有一个长度,如果超过了这个长度,则会踢掉,先进先踢
redis.conf
# 如果设置为0 ,表示记录所有命令
# 如果设置 < 0 则表示 不记录任何命令
slowlog-log-slower-than 10000  # 这里是1s,执行时间超过1s则认为是慢查询
slowlog-max-len 128            # 队列中的慢查询个数 超过这个,旧的慢查询就会从队列中删除

应该定期持久化慢查询 ,可以使用slowlog get等命令将慢查询写入到mysql等数据库

# 获取最新的n条慢查询记录
slowlog get n
# 获取慢查询队列长度
slowlog len
# 清空慢查询队列
slowlog reset

7 客户端工具

insight1

Back to top

Footnotes

  1. insight↩︎