目录
[一、Redis 简介](#一、Redis 简介)
[二、Linux 下 Redis 安装与启动](#二、Linux 下 Redis 安装与启动)
[1. 安装](#1. 安装)
[2. 启动、连接](#2. 启动、连接)
[1. String 字符串](#1. String 字符串)
[2. List 列表](#2. List 列表)
[3. Hash 哈希(字典)](#3. Hash 哈希(字典))
[4. Set 集合](#4. Set 集合)
[5. ZSet 有序集合](#5. ZSet 有序集合)
[四、Redis 通用 Key 操作指令(全部数据类型通用)](#四、Redis 通用 Key 操作指令(全部数据类型通用))
[拓展:简单 Python‑redis 示例](#拓展:简单 Python‑redis 示例)
一、Redis 简介
Redis 是一款开源、内存型、键值对 NoSQL 数据库,数据主要存放内存,读写速度极高,支持持久化把数据落盘保存。
- 优势:高性能、支持多种数据结构、支持过期时间、事务、发布订阅;
- 常见使用场景:缓存、计数器、排行榜、会话存储、去重、消息队列。
- 数据类型:字符串 (String)、列表 (List)、集合 (Set)、有序集合 (ZSet)、哈希 (Hash)。
二、Linux 下 Redis 安装与启动
1. 安装
# 更新软件源
sudo apt update
# 安装redis服务端
sudo apt install redis-server
2. 启动、连接
# 启动redis服务
service redis-server start
# 进入redis客户端命令行
redis-cli
默认本地连接
127.0.0.1:6379,6379 是 Redis 默认端口。
三、五大数据类型命令详解
1. String 字符串
最基础类型,key 对应 value,value 可以是字符串、数字。
表格
| 功能 | 命令 |
|---|---|
| 存入单个 | set k1 v1 |
| 存入多个 | mset k1 v1 k2 v2 |
| 取出单个 | get k1 |
| 取出多个 | mget k1 k2 |
| 删除 key | del k1 |
| 数字自增 | incr age |
| 数字自减 | decr age |
| 获取字符串长度 | strlen k1 |
示例:
set username zhangsan
get username
mset age 20 gender male
mget age gender
incr age
2. List 列表
底层双向链表,允许重复元素,可以做栈、队列,左右两边都可以插入弹出。
表格
| 功能 | 命令 |
|---|---|
| 左侧插入 | lpush list1 a b c |
| 右侧插入 | rpush list1 1 2 |
| 左侧弹出 | lpop list1 |
| 右侧弹出 | rpop list1 |
| 查看全部 | lrange list1 0 -1 |
| 获取列表长度 | llen list |
lrange key start end:0 -1代表查看列表全部元素。
3. Hash 哈希(字典)
适合存储对象,key 下面存放多个 field‑value,类似 Python 字典。
表格
| 功能 | 命令 |
|---|---|
| 添加字段 | hset jjk k1 v1 k2 v2 |
| 获取单个字段 | hget jjk k1 |
| 获取多个字段 | hmget jjk k1 k2 |
| 获取全部字段和值 | hgetall jjk |
| 删除字段 | hdel jjk k1 |
| 判断字段是否存在 | hexists jjk k1 |
| 获取 hash 字段数量 | hlen jjk |
示例:存储用户信息
hset user:100 id 100 name lisi age 22
hgetall user:100
4. Set 集合
无序,元素不可重复,适合去重,支持交集、并集、差集运算。
表格
| 功能 | 命令 |
|---|---|
| 插入元素 | sadd s1 v1 v2 v3 |
| 查看全部 | smembers s1 |
| 指定删除 | srem s1 3 |
| 随机删除一个 | spop s1 |
| 判断元素是否存在 | sismember s1 v1 |
| 获取集合元素个数 | scard s1 |
| 交集 | sinter s1 s2 |
| 并集 | sunion s1 s2 |
| 差集 | sdiff s1 s2 |
场景:标签、好友共同关注、去重统计。
5. ZSet 有序集合
集合基础上增加score权重分数,元素不重复,可以按分数排序,做排行榜。
表格
| 功能 | 命令 |
|---|---|
| 添加(带权重 score) | zadd zs1 q1 1 k1 q2 2 |
| 查看全部(带分数) | zrange zs1 0 -1 withscores |
| 按分数范围查询 | zrangebyscore zs1 10 20 |
| 查看元素权重 | zscore z1 k1 |
| 删除元素 | zrem zs1 k1 |
| 获取元素总数 | zcard zs1 |
场景:热搜排行榜、积分排名。
四、Redis 通用 Key 操作指令(全部数据类型通用)
表格
| 功能 | 命令 | 说明 |
|---|---|---|
| 查看所有 key | keys * |
生产环境禁止使用,遍历全部 key 性能很差 |
| 查看 key 的数据类型 | type k1 |
返回 string/list/set/zset/hash |
| 删除 key | del key |
删除任意类型 key |
| 重命名 key | rename k1 k2 |
把 k1 改名为 k2 |
| 判断 key 是否存在 | exists k1 |
存在返回 1,不存在 0 |
| 设置过期时间 | expire k1 80 |
80 秒后 key 自动过期删除 |
| 查看剩余存活时间 | ttl k1 |
-1:永久;‑2:key 不存在 |
expire 过期特性是 Redis 做缓存的核心。
五、小结总结
- Redis 内存数据库,5 种核心结构:String、List、Hash、Set、ZSet。
- String 简单键值;List 双向链表;Hash 存对象;Set 去重集合;ZSet 有序排行榜。
keys *不要线上使用;expire实现过期淘汰;ttl查看剩余时间。- 命令是开发、面试高频考点,日常开发更多是 Python/Java 等客户端调用,底层就是封装这些 redis 命令。
拓展:简单 Python‑redis 示例
import redis
r = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)
r.set("name", "zhangsan")
print(r.get("name"))
r.hset("user:101", mapping={"name":"lisi", "age":20})
print(r.hgetall("user:101"))