Redis 入门

Redis 是我用过上手速度最快的数据库软件了,由于它的功能比较简单,只提供「键值对」的增删改查,也因此有着非常简洁的操作命令。

1 简介

Redis 是一种开源(BSD 许可)、内存中数据结构存储,用作数据库、缓存和消息代理。 Redis 提供了数据结构,例如字符串、散列、列表、集合、带有范围查询的排序集合、位图、超级日志、地理空间索引和流。 Redis 内置复制、Lua 脚本、LRU 驱逐、事务和不同级别的磁盘持久化,并通过 Redis Sentinel 和 Redis Cluster 自动分区提供高可用性。
——《Redis 官方文档》

你只需要知道,它是一种可以存放 key:value 这种成对结构数据的数据库,基本就差不多了。比如:

1
2
3
4
name: "Redis"
version: "3.2.0"
number: 100
...

2 安装

这里只介绍一下 MacOS 的环境,其他环境类似。

源码安装

1
2
3
4
5
6
7
8
9
10
11
# 安装
mkdir redis && cd redis
curl -O http://download.redis.io/redis-stable.tar.gz
tar xzvf redis-stable.tar.gz
cd redis-stable
make
make test
sudo make install

# 启动
sudo ./src/redis-server

使用 Homebrew

1
2
3
4
5
# 安装
brew install redis

# 启动
brew services start redis

使用 Docker

1
2
3
4
5
docker pull redis
docker run -d -p 6379:6379 redis

# or
docker run -d --restart=always --name redis -v /usr/share/redis/data:/data -p 6379:6379 redis:6.2 redis-server --requirepass 123456 --save 60 1 --loglevel warning

3 使用

redis 虽有数据库的概念,但只有 id 没有 name,默认提供了 0-15 共 16 个数据库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# 连接
redis-cli
# 提供参数连接
redis-cli -h 127.0.0.1 -p 6379

# 测试连接性
127.0.0.1:6379> ping
PONG

# 查看数据库信息
127.0.0.1:6379> info
\# Server
redis_version:6.2.6
redis_git_sha1:00000000
redis_git_dirty:0
...

# 切换到 1 号数据库
127.0.0.1:6379> select 1
OK
# 切换到 0 号数据库(默认)
127.0.0.1:6379> select 0
OK

# 设置密码
127.0.0.1:6379> config set requirepass 123456
OK
# 验证密码
127.0.0.1:6379> auth 123456
OK
# 查看密码
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "123456"
# 取消密码
127.0.0.1:6379> config set requirepass ""
OK

# 插入单个键值对
127.0.0.1:6379> set user1 xiaoming
OK
# 插入多个键值对
127.0.0.1:6379> mset user2 xiaohua name zhuangsan
OK
# 获取单个键的值
127.0.0.1:6379> get user1
"xiaoming"
# 获取多个键的值
127.0.0.1:6379> mget user1 user2
1) "xiaoming"
2) "xiaohua"
# 任意获取一个键
127.0.0.1:6379> randomkey
"user1"

# 获取键的值的类型
127.0.0.1:6379[1]> type name
string

# 获取所有键
127.0.0.1:6379> keys *
1) "user1"
2) "user2"
3) "name"

# 获取以 user 开头的键
127.0.0.1:6379> keys user*
1) "user1"
2) "user2"

# 获取 key 的个数
127.0.0.1:6379> dbsize
(integer) 3

# 判断 name 这个键是否存在
127.0.0.1:6379> exists name
(integer) 1

# 设置过期时间(秒)
127.0.0.1:6379> expire name 60
(integer) 1
# 设置过期时间(毫秒)
127.0.0.1:6379> pexpire name 60000
(integer) 1
# 创建键值时,直接设置过期时间(秒)
127.0.0.1:6379> set name zhangsan EX 60
OK
# 创建键值时,直接设置过期时间(毫秒)
127.0.0.1:6379> set name zhangsan PX 60
OK

# 查看过期时间
127.0.0.1:6379> ttl name
(integer) 58
# (integer) -1 表示永不过期
# (integer) -2 已过期

# 清空当前 DB 的所有键值对
127.0.0.1:6379> flushdb
OK
# 清空全部 DB 的所有键值对
127.0.0.1:6379> flushall
OK

# 断开连接,退出
127.0.0.1:6379> quit

4 参考

作者

Ailln

发布于

2019-12-01

更新于

2024-03-02

许可协议

评论