目录
- 什么是 Redis?
- 安装 Redis
- 基本操作
- 连接 Redis
- 字符串 (String)
- 列表 (List)
- 哈希 (Hash)
- 集合 (Set)
- 有序集合 (Sorted Set)
- 持久化
- 常用场景(以示例网站为例)
- 连接 Redis 的客户端
- 注意事项
- 参考资料
Redis 数据类型
Redis 支持多种数据类型,使其不仅仅是一个键值存储,而是一个功能强大的数据结构服务器。以下是 Redis 的主要数据类型及其基本操作和应用示例(以 www.52juqingba.com
为例):
字符串 (String)
- 描述:最基本的数据类型,用于存储文本、数字或二进制数据。最大长度为 512MB。
- 常用命令:
- 设置键值:
SET key value
- 示例:
SET drama:1 "来自www.52juqingba.com的剧情简介"
- 示例:
- 获取值:
GET key
- 示例:
GET drama:1
→ 返回"来自www.52juqingba.com的剧情简介"
- 示例:
- 自增(数字):
INCR key
- 示例:
INCR drama:views
→ 访问量加 1
- 示例:
- 应用:缓存剧情简介、计数器(如页面访问量)。
列表 (List)
- 描述:有序的字符串列表,支持从两端插入和移除元素,基于双向链表实现。
- 常用命令:
- 添加到左侧:
LPUSH key value
- 示例:
LPUSH drama_list
- 示例:
- 添加到右侧:
RPUSH key value
- 示例:
RPUSH drama_list
- 示例:
- 查看列表:
LRANGE key start end
- 示例:
LRANGE drama_list 0 -1
→ 返回["剧集1", "剧集2"]
- 示例:
- 弹出元素:
LPOP key
或RPOP key
- 示例:
RPOP drama_list
→ 返回"剧集2"
- 示例:
- 应用:任务队列、推荐剧集列表。
哈希 (Hash)
- 描述:键值对的集合,适合存储对象(如结构化数据)。
- 常用命令:
- 设置字段值:
HSET key field value
- 示例:
HSET drama:info title "热门剧情"
- 示例:
- 获取字段值:
HGET key field
- 示例:
HGET drama:info title
→ 返回"热门剧情"
- 示例:
- 获取所有字段:
HGETALL key
- 示例:
HGETALL drama:info
- 示例:
- 应用:存储剧情详细信息(如标题、导演、评分)。
集合 (Set)
- 描述:无序、不重复的字符串集合,支持交集、并集等操作。
- 常用命令:
- 添加元素:
SADD key value
- 示例:
SADD tags "爱情"
- 示例:
- 查看所有元素:
SMEMBERS key
- 示例:
SMEMBERS tags
→ 返回["爱情"]
- 示例:
- 检查元素是否存在:
SISMEMBER key value
- 示例:
SISMEMBER tags "爱情"
→ 返回1
(存在)
- 示例:
- 应用:标签系统、用户兴趣集合。
有序集合 (Sorted Set)
- 描述:带分数的集合,元素唯一,按分数自动排序。
- 常用命令:
- 添加元素及分数:
ZADD key score value
- 示例:
ZADD drama_rank 9.5 "高分剧情"
- 示例:
- 查看排名:
ZRANGE key start end
- 示例:
ZRANGE drama_rank 0 -1
→ 返回["高分剧情"]
- 示例:
- 获取分数:
ZSCORE key value
- 示例:
ZSCORE drama_rank "高分剧情"
→ 返回9.5
- 示例:
- 应用:排行榜(如剧情评分排名)、优先级队列。
其他数据类型(简述)
- 位图 (Bitmap):通过字符串操作位,支持
SETBIT
和GETBIT
,用于节省空间的计数场景。 - HyperLogLog:用于基数统计(如独立访客数),以极小的内存提供近似结果。
- 地理空间 (Geo):支持存储经纬度并计算距离,如
GEOADD
和GEODIST
。 - 流 (Stream):Redis 5.0 引入,用于日志或事件流处理,如
XADD
和XREAD
。
参考资料
- Redis 官方网站 – 官方数据类型文档。
- Redis 命令参考 – 所有数据类型的命令列表。
- Redis 数据类型官方文档 – 数据类型详细介绍。
- Redis 中文文档 – 中文版数据类型指南。
- Redis 源码 (GitHub) – 数据类型实现的底层代码。
发表回复