Redis 基础知识点

Redis 基础知识点

一、Redis 介绍

1. Redis 基本概念

Redis 是 C 语言开发的开源高性能键值对(key-value)数据库。 官方测试数据:50 个并发执行 100000 个请求,读速度可达 110000 次/秒,写速度可达 81000 次/秒。

Redis 通过提供多种键值数据类型,适配不同场景的存储需求。其中 key 统一为字符串类型,value 支持 5 种常用数据类型:

数据类型 说明 类比 Java 结构
字符串(string) 最基础的数据类型,普通字符串 String
哈希(hash) 字段与值的映射表,适合存储对象 Map
列表(list) 按插入顺序排序,允许重复元素 LinkedList
集合(set) 无序集合,元素不重复 Set
有序集合(sorted set / zset) 元素关联分数,按分数升序排列,元素不重复 带排序的 Set

Redis 核心特性

  • 基于内存存储,读写性能极高
  • 适合存储热点数据(热点商品、资讯、新闻等)
  • 企业级应用广泛,是关系型数据库的补充,而非替代 MySQL

缓存核心思想

优先从 Redis 读取数据,降低数据库压力:

  1. 先查询 Redis:
  • Redis 中存在数据:直接返回
  • Redis 中不存在数据:
  1. 从 MySQL 数据库中查询数据
  2. 将查询结果写入 Redis 缓存
  3. 返回数据

本地 Map 也可以实现缓存,但仅能在当前项目/单机使用;分布式部署场景下,必须使用 Redis 这类集中式缓存。

2. NoSQL 简介

NoSQL(Not Only SQL,意为“不仅仅是 SQL”)泛指非关系型数据库,是为解决大规模数据、高并发场景下传统关系型数据库的瓶颈而诞生的数据库理念。

随着 Web2.0 时代到来,纯动态、用户生成内容的网站(如短视频、社交平台)数据量爆发式增长,传统关系型数据库在超大规模、高并发场景下性能不足,非关系型数据库因此快速发展。

  • Web1.0:用户仅被动访问内容
  • Web2.0:以用户为中心,用户可发布内容,数据量极大,对并发和扩展性要求更高

二、Redis 基础使用

1. Redis 软件组成

  • redis.windows.conf:Redis 配置文件
  • redis-server.exe:Redis 服务端程序
  • redis-cli.exe:Redis 客户端命令行工具

2. 字符串类型(string)

最基础的数据类型,value 为普通字符串。

常用命令:

# 设置指定 key 的值
SET key value

# 获取指定 key 的值
GET key

# 设置 key 的值,并指定过期时间(秒)
SETEX key seconds value

# 仅当 key 不存在时,才设置 key 的值
SETNX key value

3. 哈希类型(hash)

Redis hash 是 string 类型的 field 与 value 的映射表,特别适合存储对象,类似 Java 的 Map 结构。

常用命令:

# 向哈希表 key 中设置字段 field 的值
HSET key field value

# 获取哈希表 key 中指定字段的值
HGET key field

# 删除哈希表 key 中的指定字段
HDEL key field

# 获取哈希表 key 中所有字段
HKEYS key

# 获取哈希表 key 中所有值
HVALS key

4. 列表类型(list)

按插入顺序排序,允许重复元素,类似 Java 的 LinkedList,支持从两端操作,可模拟队列。

常用命令:

# 将一个或多个值插入列表头部(左侧)
LPUSH key value1 [value2]

# 获取列表指定范围内的元素
# 0 表示第一个元素,-1 表示最后一个元素
LRANGE key start stop

# 移除并返回列表尾部(右侧)的元素
RPOP key

# 获取列表长度
LLEN key

下标规则:0 为第一个元素,-1 为最后一个元素,-2 为倒数第二个元素,以此类推。

5. 集合类型(set)

无序集合,元素不允许重复,类似 Java 的 Set,支持交集、并集等集合运算。

常用命令:

# 向集合中添加一个或多个成员
SADD key member1 [member2]

# 返回集合中的所有成员
SMEMBERS key

# 获取集合的成员数量
SCARD key

# 返回多个集合的交集
SINTER key1 [key2]

# 返回多个集合的并集
SUNION key1 [key2]

# 删除集合中一个或多个成员
SREM key member1 [member2]

6. 有序集合类型(zset / sorted set)

本质是 set,元素不重复;每个元素关联一个 double 类型的分数(score),Redis 按分数从小到大排序。

常用命令:

# 向有序集合添加一个或多个成员及对应分数
ZADD key score1 member1 [score2 member2]

# 通过索引区间返回指定范围内的成员,可选是否携带分数
ZRANGE key start stop [WITHSCORES]

# 对指定成员的分数增加增量
ZINCRBY key increment member

# 移除有序集合中一个或多个成员
ZREM key member [member ...]

7. 通用命令

# 查询所有键
keys *

# 获取指定 key 对应 value 的类型
type key

# 删除指定的 key-value
del key
上一篇
下一篇