Redis 学习笔记

快速入门

  • 默认端口 6379
  • Key / Value 的最大值均为 512 MB
  • Redis Sentinel 是一个用于自动化和简化 Redis 复制故障恢复和切换的程序

基础操作

命令行启动 Redis 客户端:

$ redis-cli

持续输出 Redis 的统计信息:

$ redis-cli --stat

默认 1 秒输出一次统计信息,-i <N> 可以指定间隔时间,例如设置为 5 秒输出一次:

$ redis-cli --stat -i 5

获得所有的 Key 值:

$ redis-cli --scan | less

获得所有匹配的 Key 值:

$ redis-cli --scan --pattern 'ag:*' | less

Redis 客户端进行简单测试:

127.0.0.1:6379> ping
PONG

set/get 操作:

127.0.0.1:6379> set k v
OK
127.0.0.1:6379> get k
"v"

ex 设置超时,ttl 获取续存时间 — TTL 返回 -1 表示 Key 没有设置超时,-2 表示找不到 Key:

127.0.0.1:6379> set k v ex 5
OK
127.0.0.1:6379> get k
(nil)

del 删除数据:

127.0.0.1:6379> del k
(integer) 1
127.0.0.1:6379> get k
(nil)

mset/mget 操作:

127.0.0.1:6379> mset a 1 b 2 c 3
OK
127.0.0.1:6379> mget a b c
1) "1"
2) "2"
3) "3"

List

127.0.0.1:6379> rpush list a
(integer) 1
127.0.0.1:6379> rpush list b
(integer) 2
127.0.0.1:6379> lpush list 0
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "0"
2) "a"
3) "b"

一次 push 多个值:

127.0.0.1:6379> lpush list c d e
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "e"
2) "d"
3) "c"
4) "0"
5) "a"
6) "b"

rpop/lpop 从 List 的首尾弹出值:

127.0.0.1:6379> lpop list
"e"
127.0.0.1:6379> rpop list
"b"
127.0.0.1:6379> lrange list 0 -1
1) "d"
2) "c"
3) "0"
4) "a"

ltrim 获取一个 List 的子集并把区间外的数据抹掉:

127.0.0.1:6379> rpush list 1 2 3 4 5
(integer) 5
127.0.0.1:6379> ltrim list 0 2
OK
127.0.0.1:6379> lrange list 0 -1
1) "1"
2) "2"
3) "3"

Hash

hset/hget/ 操作:

127.0.0.1:6379> hset user:1000 username Jack age 30 verified 1
(integer) 3
127.0.0.1:6379> hget user:1000 username
"Jack"
127.0.0.1:6379> hget user:1000 age
"30"
127.0.0.1:6379> hget user:1000 verified
"1"

hgetall 获取一个 Hash 的所有 Key/Value:

127.0.0.1:6379> hgetall user:1000
1) "username"
2) "Jack"
3) "age"
4) "30"
5) "verified"
6) "1"

hmget 一次获得多个 Key 对应的 Value:

127.0.0.1:6379> hmget user:1000 username age verified no-such-field
1) "Jack"
2) "30"
3) "1"
4) (nil)

配置

设置密码

编辑 /usr/local/etc/redis.conf,找到如下行:

# requirepass foobared

将 foobared 替换为密码,如:

# requirepass +khB/ovg19Av+A==

重启服务:

$ brew services restart redis

启动客户端访问 — 显示需要授权:

$ redis-cli ping
(error) NOAUTH Authentication required.

带密码启动客户端访问:

$ redis-cli -a +khB/ovg19Av+A== ping
PONG