404 Not Found

404 Not Found


nginx

Redis 快速开始

安装Redis后,让我们快速上手,学习Redis的基本操作。

启动Redis服务器

前台启动

最简单的启动方式,Redis会在前台运行,日志直接输出到终端。

BASH
redis-server

输出信息:

                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._
  _.-`` .-`` .-```.  ```.-''  ''-._
.-`` .-`` .-`````-..-'''.-''      ''-._
( '      .       ''-.             ``.
|`.    `-.   `-.    `-.  `-.        `-.)
|  `-.    `-.    `-.    `-.    `-.    `'
 `-.   `-.    `-.    `-.    `-.    `-.    _
     `-.    `-.    `-.    `-.    `-.  .-'
         `-.    `-.    `-.    `-.  .-'
             `-.    `-.    `-.  .-'
                 `-.    `-.  .-'
                     `-.  .-'
                         `-

Redis 7.0.11 (00000000/0) 64 bit
Running in standalone mode
Port: 6379
PID: 12345
Ready to accept connections
💡 提示: 按下 Ctrl+C 可以停止Redis服务器。

后台启动

生产环境推荐后台运行。

BASH
# 方法1:使用daemonize参数
redis-server --daemonize yes

# 方法2:修改配置文件
# 编辑 /etc/redis/redis.conf
daemonize yes
# 然后启动
redis-server /etc/redis/redis.conf

指定端口启动

BASH
# 使用6380端口
redis-server --port 6380

检查Redis是否运行

BASH
# Linux
ps aux | grep redis-server

# 或使用redis-cli
redis-cli ping
# 返回 PONG 表示Redis正在运行

连接Redis

使用redis-cli连接

redis-cli 是Redis自带的命令行客户端工具。

BASH
# 连接本地Redis(默认127.0.0.1:6379)
redis-cli

# 连接后提示符变为:
127.0.0.1:6379>

指定主机和端口

BASH
# 连接指定主机和端口
redis-cli -h 192.168.1.100 -p 6379

# 连接本地其他端口
redis-cli -p 6380

带密码连接

BASH
# 方式1:命令行参数
redis-cli -a yourpassword

# 方式2:连接后认证
redis-cli
127.0.0.1:6379> AUTH yourpassword
OK
⚠️ 安全提示: 命令行使用 -a 参数会在历史记录中暴露密码,生产环境建议使用 AUTH 命令或配置文件。

连接Unix Socket

BASH
redis-cli -s /tmp/redis.sock

退出redis-cli

BASH
# 退出连接
127.0.0.1:6379> exit
# 或
127.0.0.1:6379> quit
# 或按 Ctrl+D

第一个命令:PING

PING命令用于测试连接是否正常,就像网络中的ping命令。

示例:测试连接

REDIS
127.0.0.1:6379> PING
PONG
▶ 试一试

如果Redis正常工作,会返回 PONG

带消息的PING

REDIS
127.0.0.1:6379> PING "Hello"
"Hello"

PING可以携带消息,Redis会原样返回。

💡 用途: PING常用于健康检查、连接测试、测量网络延迟。

基本命令:SET和GET

SET和GET是最常用的命令,用于存储和读取字符串数据。

SET:存储数据

SET命令用于设置键值对。

示例:基本SET操作

REDIS
127.0.0.1:6379> SET name "Redis Tutorial"
OK
▶ 试一试

示例:带过期时间

REDIS
# 设置键值,10秒后过期
127.0.0.1:6379> SET temp "temporary" EX 10
OK

# 或使用PX设置毫秒
127.0.0.1:6379> SET temp2 "temp" PX 5000
OK
▶ 试一试

示例:仅当键不存在时设置

REDIS
# NX:仅当键不存在时设置
127.0.0.1:6379> SET name "New Name" NX
(nil)  # 因为name已存在,设置失败

# XX:仅当键存在时设置
127.0.0.1:6379> SET name "Updated Name" XX
OK
▶ 试一试

SET命令完整语法

SET key value [NX|XX] [GET] [EX seconds|PX milliseconds|EXAT timestamp|PXAT timestamp]
参数 说明
NX 仅当键不存在时设置
XX 仅当键存在时设置
GET 返回旧值(Redis 6.2+)
EX seconds 设置过期时间(秒)
PX milliseconds 设置过期时间(毫秒)
EXAT timestamp 设置过期时间戳(秒)
PXAT timestamp 设置过期时间戳(毫秒)

GET:读取数据

GET命令用于获取键的值。

示例:基本GET操作

REDIS
127.0.0.1:6379> GET name
"Redis Tutorial"

# 键不存在返回nil
127.0.0.1:6379> GET notexist
(nil)
▶ 试一试

示例:GETSET(获取旧值并设置新值)

REDIS
127.0.0.1:6379> GETSET name "New Value"
"Redis Tutorial"  # 返回旧值

127.0.0.1:6379> GET name
"New Value"  # 已更新为新值
▶ 试一试

其他基本命令

DEL:删除键

REDIS
127.0.0.1:6379> SET temp "delete me"
OK

127.0.0.1:6379> DEL temp
(integer) 1  # 删除成功,返回删除的键数量

127.0.0.1:6379> DEL temp
(integer) 0  # 键不存在,删除0个

EXISTS:检查键是否存在

REDIS
127.0.0.1:6379> SET name "Redis"
OK

127.0.0.1:6379> EXISTS name
(integer) 1  # 存在

127.0.0.1:6379> EXISTS notexist
(integer) 0  # 不存在

KEYS:查找键

REDIS
# 设置一些测试数据
127.0.0.1:6379> SET user:1 "Alice"
127.0.0.1:6379> SET user:2 "Bob"
127.0.0.1:6379> SET product:1 "iPhone"

# 查找所有键(慎用!)
127.0.0.1:6379> KEYS *
1) "user:1"
2) "user:2"
3) "product:1"
4) "name"

# 查找匹配模式的键
127.0.0.1:6379> KEYS user:*
1) "user:1"
2) "user:2"

127.0.0.1:6379> KEYS *:1
1) "user:1"
2) "product:1"
⚠️ 警告: KEYS命令会扫描整个数据库,数据量大时非常慢,生产环境禁用!应使用SCAN命令代替。

FLUSHDB:清空当前数据库

REDIS
# 清空当前数据库所有数据(危险!)
127.0.0.1:6379> FLUSHDB
OK
⚠️ 危险: FLUSHDB会删除所有数据,生产环境慎用!

DBSIZE:查看键的数量

REDIS
127.0.0.1:6379> DBSIZE
(integer) 4  # 当前数据库有4个键

命令返回值类型

Redis命令返回不同类型的结果:

返回值示例 类型 说明
OK 简单字符串 操作成功
"value" 字符串 字符串值
(integer) 1 整数 数值结果
1) "a"
2) "b"
数组 列表或集合
(nil) 键不存在或无结果
# Error 错误 命令执行失败

批量执行命令

交互模式

在redis-cli中逐条输入命令:

REDIS
127.0.0.1:6379> SET a 1
OK
127.0.0.1:6379> SET b 2
OK
127.0.0.1:6379> GET a
"1"

管道模式

从文件批量执行命令:

BASH
# 创建命令文件 commands.txt
echo "SET key1 value1" > commands.txt
echo "SET key2 value2" >> commands.txt
echo "GET key1" >> commands.txt

# 批量执行
cat commands.txt | redis-cli

输出:

OK
OK
"value1"

命令行直接执行

BASH
# 直接执行单个命令
redis-cli SET mykey "myvalue"
# 输出:OK

redis-cli GET mykey
# 输出:"myvalue"

# 执行多个命令
redis-cli << EOF
SET a 1
SET b 2
GET a
GET b
EOF

使用帮助系统

Redis内置了完善的帮助系统。

查看命令帮助

REDIS
127.0.0.1:6379> HELP SET

  SET key value [NX|XX] [GET] [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL]
  summary: Set the string value of a key
  since: 1.0.0
  group: string

查看命令组

REDIS
127.0.0.1:6379> HELP @string
# 列出所有字符串命令

Tab补全

redis-cli支持Tab键补全命令:

REDIS
127.0.0.1:6379> SET<按Tab>
# 自动补全为 SET

实用技巧

1. 查看服务器信息

REDIS
127.0.0.1:6379> INFO
# 返回大量服务器信息

# 查看特定部分
127.0.0.1:6379> INFO server
127.0.0.1:6379> INFO memory
127.0.0.1:6379> INFO stats

2. 查看配置

REDIS
# 查看所有配置
127.0.0.1:6379> CONFIG GET *

# 查看特定配置
127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "0"

3. 监控命令

REDIS
# 实时监控所有执行的命令
127.0.0.1:6379> MONITOR
OK
# 之后会显示所有客户端执行的命令
💡 用途: MONITOR用于调试,可以看到所有客户端的命令,生产环境慎用(影响性能)。

4. 查看客户端连接

REDIS
127.0.0.1:6379> CLIENT LIST
id=1 addr=127.0.0.1:52345 fd=8 name= age=10 idle=0 ...

❓ 常见问题

Q redis-cli连接不上Redis?
A 检查Redis是否启动(ps aux | grep redis),检查端口是否正确,检查防火墙设置。
Q 为什么返回 (nil)?
A (nil) 表示空值,通常是因为键不存在。使用 EXISTS 命令检查键是否存在。
Q 如何清空测试数据?
A 使用 FLUSHDB 清空当前数据库,或 FLUSHALL 清空所有数据库(危险!)。
Q 如何查看所有键?
A 使用 KEYS * 命令,但数据量大时会很慢,生产环境用 SCAN 代替。
Q 如何退出redis-cli?
A 输入 exit 或 quit,或按 Ctrl+D。

📖 小节

📝 作业

  1. 启动练习: 启动Redis服务器,使用redis-cli连接,执行PING命令
  2. 基本操作: 使用SET存储你的名字和年龄,使用GET读取出来
  3. 过期练习: 设置一个带过期时间的键,等待过期后用GET查看结果
  4. 批量操作: 创建一个文本文件,写入多条Redis命令,用管道模式执行

下一课

下一课我们将学习 Redis 配置,了解Redis配置文件和常用配置项。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏