### Redis 是什么?
Redis(**RE**mote **DI**ctionary **S**erver)是一个开源的、基于内存的高性能键值数据库(key-value store)。它不仅支持简单的键值对,还支持多种复杂的数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等。Redis 常被用作缓存、中间件、实时数据分析以及消息队列等场景。
Redis 的主要特点包括:
1. **基于内存**:数据存储在内存中,读写速度极快。
2. **丰富的数据结构**:支持多种数据结构,适合多样化的场景需求。
3. **高可用性**:支持主从复制(Replication)、持久化(RDB、AOF)以及集群(Cluster)模式。
4. **多语言支持**:提供多种编程语言的客户端接口(如 Python、Java、Node.js 等)。
5. **轻量高效**:响应时间通常在毫秒级。
---
### Redis 的安装
#### 1. 在 Linux 上安装 Redis
(以 Ubuntu 为例)
**步骤:**
1. 更新系统包:
```bash
sudo apt update
sudo apt upgrade -y
```
2. 安装 Redis:
```bash
sudo apt install redis -y
```
3. 启动并检查 Redis 服务:
```bash
sudo systemctl start redis
sudo systemctl enable redis
sudo systemctl status redis
```
4. 验证安装:
在终端输入 `redis-cli`,然后运行 `ping`,应返回 `PONG`:
```bash
redis-cli
127.0.0.1:6379> ping
PONG
```
---
#### 2. 在 Windows 上安装 Redis
Redis 官方不提供 Windows 版,但可以使用第三方构建的版本:
1. 下载 [Memurai](https://www.memurai.com/) 或 [Redis for Windows](https://github.com/microsoftarchive/redis)。
2. 解压缩后运行可执行文件(如 `redis-server.exe`)。
3. 打开命令提示符,输入:
```bash
redis-cli
ping
```
若返回 `PONG` 表示 Redis 正常运行。
---
#### 3. 在 Docker 中运行 Redis
如果系统安装了 Docker,可以直接拉取并运行 Redis 镜像:
1. 拉取镜像:
```bash
docker pull redis
```
2. 运行 Redis 容器:
```bash
docker run -d --name redis-container -p 6379:6379 redis
```
3. 验证运行:
使用 `redis-cli` 连接:
```bash
docker exec -it redis-container redis-cli
```
---
### Redis 的基本使用
#### 1. 常见命令
以下是 Redis 常用的命令:
- 设置键值:
```bash
SET key value
```
- 获取键值:
```bash
GET key
```
- 删除键:
```bash
DEL key
```
- 查看所有键:
```bash
KEYS *
```
- 检查键是否存在:
```bash
EXISTS key
```
#### 2. 数据结构操作
- **字符串(String):**
```bash
SET mykey "Hello Redis"
GET mykey
```
- **哈希(Hash):**
```bash
HSET user name "Alice"
HGET user name
```
- **列表(List):**
```bash
LPUSH mylist "A"
LPUSH mylist "B"
LRANGE mylist 0 -1
```
- **集合(Set):**
```bash
SADD myset "A"
SADD myset "B"
SMEMBERS myset
```
- **有序集合(Sorted Set):**
```bash
ZADD myzset 1 "A"
ZADD myzset 2 "B"
ZRANGE myzset 0 -1 WITHSCORES
```
#### 3. 持久化
Redis 默认是内存存储,但支持持久化:
- RDB(定时快照):`SAVE` 或 `BGSAVE` 命令。
- AOF(Append-Only File):记录写操作,实时持久化。
可以通过配置文件调整:
```bash
vim /etc/redis/redis.conf
# 开启AOF
appendonly yes
```
---
### 使用场景
1. **缓存**:加速访问数据,减少数据库压力。
2. **计数器**:如页面访问计数、点赞等。
3. **队列**:通过 List 实现任务队列。
4. **会话存储**:用来存储用户会话数据。
5. **排行榜**:利用有序集合实现动态排行。