Redis

什么是 NoSQL?


NoSQL(Not Only SQL)是一种非关系型数据库,用于存储和检索非结构化或半结构化数据。与传统的关系型数据库(如 MySQL、PostgreSQL)不同,NoSQL 数据库通常具有以下特点:

常见的 NoSQL 数据库包括 MongoDB(文档型)、Cassandra(列族型)、Redis(键值型)、Neo4j(图型)等。

Redis 的基础数据类型

Redis 是一个开源的、基于内存的键值存储系统,支持多种数据类型。以下是 Redis 支持的基础数据类型:

这些数据类型使得 Redis 在处理各种不同的应用场景时非常灵活和高效。

  1. 灵活的数据模型:NoSQL 数据库通常支持灵活的数据模型,如文档、键值对、列族、图等,而不需要固定的表结构。
  2. 高可扩展性:NoSQL 数据库通常设计为分布式系统,

    什么是 NoSQL?

    NoSQL(Not Only SQL)是一种非关系型数据库,用于存储和检索非结构化或半结构化数据。与传统的关系型数据库(如 MySQL、PostgreSQL)不同,NoSQL 数据库通常具有以下特点:

  3. 灵活的数据模型:NoSQL 数据库通常支持灵活的数据模型,如文档、键值对、列族、图等,而不需要固定的表结构。
  4. 高可扩展性:NoSQL 数据库通常设计为分布式系统,能够轻松扩展以处理大量数据和高并发请求。
  5. 高性能:由于其简单的数据模型和分布式架构,NoSQL 数据库通常能够提供低延迟和高吞吐量的数据访问。
  6. 无模式或灵活模式:NoSQL 数据库通常不需要预先定义模式,允许动态添加或修改数据结构。
  7. String(字符串)

    • 最基本的数据类型,可以存储字符串、整数或浮点数。
    • 最大能存储 512MB 的数据。
    • 常用命令:SETGETINCRDECR 等。
  8. Hash(哈希)

    • 类似于一个字典或对象,存储字段和值的映射。
    • 适合存储对象或结构化数据。
    • 常用命令:HSETHGETHGETALLHDEL 等。
  9. List(列表)

    • 有序的字符串列表,允许重复元素。
    • 支持从列表的两端进行插入和删除操作。
    • 常用命令:LPUSHRPUSHLPOPRPOPLRANGE 等。
  10. Set(集合)

    • 无序的字符串集合,不允许重复元素。
    • 支持集合的交、并、差等操作。
    • 常用命令:SADDSREMSMEMBERSSINTERSUNION 等。
  11. Sorted Set(有序集合)

    • 类似于 Set,但每个元素都关联一个分数(score),用于排序。
    • 元素按分数从小到大排序,且不允许重复元素。
    • 常用命令:ZADDZRANGEZREMZSCORE 等。
  12. Bitmaps(位图)

    • 实际上是对字符串的位操作,用于存储和操作二进制数据。
    • 适合处理布尔值或标志位的场景。
    • 常用命令:SETBITGETBITBITCOUNTBITOP 等。
  13. HyperLogLog(基数统计)

    • 用于估计集合中不同元素的数量,适用于大数据集的基数统计。
    • 常用命令:PFADDPFCOUNTPFMERGE 等。
  14. Geospatial(地理空间)

    • 用于存储地理位置信息,支持地理位置相关的查询和操作。
    • 常用命令:GEOADDGEODISTGEORADIUSGEOPOS 等。
  15. Streams(流)

    • 类似于消息队列,用于存储和消费事件流。
    • 适合日志、事件处理等场景。
    • 常用命令:XADDXREADXRANGEXGROUP 等。
  16. 能够轻松扩展以处理大量数据和高并发请求。
  17. 高性能:由于其简单的数据模型和分布式架构,NoSQL 数据库通常能够提供低延迟和高吞吐量的数据访问。
  18. 无模式或灵活模式:NoSQL 数据库通常不需要预先定义模式,允许动态添加或修改数据结构。

常见的 NoSQL 数据库包括 MongoDB(文档型)、Cassandra(列族型)、Redis(键值型)、Neo4j(图型)等。、


Redis 的基础数据类型

Redis 是一个开源的、基于内存的键值存储系统,支持多种数据类型。以下是 Redis 支持的基础数据类型:

  1. String(字符串)

    • 最基本的数据类型,可以存储字符串、整数或浮点数。
    • 最大能存储 512MB 的数据。
    • 常用命令:SETGETINCRDECR 等。
  2. Hash(哈希)

    • 类似于一个字典或对象,存储字段和值的映射。
    • 适合存储对象或结构化数据。
    • 常用命令:HSETHGETHGETALLHDEL 等。
  3. List(列表)

    • 有序的字符串列表,允许重复元素。
    • 支持从列表的两端进行插入和删除操作。
    • 常用命令:LPUSHRPUSHLPOPRPOPLRANGE 等。
  4. Set(集合)

    • 无序的字符串集合,不允许重复元素。
    • 支持集合的交、并、差等操作。
    • 常用命令:SADDSREMSMEMBERSSINTERSUNION 等。
  5. Sorted Set(有序集合)

    • 类似于 Set,但每个元素都关联一个分数(score),用于排序。
    • 元素按分数从小到大排序,且不允许重复元素。
    • 常用命令:ZADDZRANGEZREMZSCORE 等。
  6. Bitmaps(位图)

    • 实际上是对字符串的位操作,用于存储和操作二进制数据。
    • 适合处理布尔值或标志位的场景。
    • 常用命令:SETBITGETBITBITCOUNTBITOP 等。
  7. HyperLogLog(基数统计)

    • 用于估计集合中不同元素的数量,适用于大数据集的基数统计。
    • 常用命令:PFADDPFCOUNTPFMERGE 等。
  8. Geospatial(地理空间)

    • 用于存储地理位置信息,支持地理位置相关的查询和操作。
    • 常用命令:GEOADDGEODISTGEORADIUSGEOPOS 等。
  9. Streams(流)

    • 类似于消息队列,用于存储和消费事件流。
    • 适合日志、事件处理等场景。
    • 常用命令:XADDXREADXRANGEXGROUP 等。

这些数据类型使得 Redis 在处理各种不同的应用场景时非常灵活和高效。

Redis 的基础数据类型

Redis 是一个开源的、基于内存的键值存储系统,支持多种数据类型。以下是 Redis 支持的基础数据类型:

  1. String(字符串)

    • 最基本的数据类型,可以存储字符串、整数或浮点数。
    • 最大能存储 512MB 的数据。
    • 常用命令:SETGETINCRDECR 等。
  2. Hash(哈希)

    • 类似于一个字典或对象,存储字段和值的映射。
    • 适合存储对象或结构化数据。
    • 常用命令:HSETHGETHGETALLHDEL 等。
  3. List(列表)

    • 有序的字符串列表,允许重复元素。
    • 支持从列表的两端进行插入和删除操作。
    • 常用命令:LPUSHRPUSHLPOPRPOPLRANGE 等。
  4. Set(集合)

    • 无序的字符串集合,不允许重复元素。
    • 支持集合的交、并、差等操作。
    • 常用命令:SADDSREMSMEMBERSSINTERSUNION 等。
  5. Sorted Set(有序集合)

    • 类似于 Set,但每个元素都关联一个分数(score),用于排序。
    • 元素按分数从小到大排序,且不允许重复元素。
    • 常用命令:ZADDZRANGEZREMZSCORE 等。
  6. Bitmaps(位图)

    • 实际上是对字符串的位操作,用于存储和操作二进制数据。
    • 适合处理布尔值或标志位的场景。
    • 常用命令:SETBITGETBITBITCOUNTBITOP 等。
  7. HyperLogLog(基数统计)

    • 用于估计集合中不同元素的数量,适用于大数据集的基数统计。
    • 常用命令:PFADDPFCOUNTPFMERGE 等。
  8. Geospatial(地理空间)

    • 用于存储地理位置信息,支持地理位置相关的查询和操作。
    • 常用命令:GEOADDGEODISTGEORADIUSGEOPOS 等。
  9. Streams(流)

    • 类似于消息队列,用于存储和消费事件流。
    • 适合日志、事件处理等场景。
    • 常用命令:XADDXREADXRANGEXGROUP 等。

这些数据类型使得 Redis 在处理各种不同的应用场景时非常灵活和高效。

常用的命令:


以下是一个 Redis 基础命令的 Demo 示例,包含常用数据结构的操作。你可以通过 redis-cli 命令行工具实践这些命令:


1. 字符串 (String)

# 设置键值对
SET username "john_doe"

# 获取值
GET username      # 返回 "john_doe"

# 数值自增(适用于计数器)
SET visits 0
INCR visits       # visits 变为 1
INCRBY visits 5   # visits 变为 6

# 设置过期时间(10秒后自动删除)
SETEX session:123 10 "logged_in"

2. 哈希 (Hash)

# 存储用户信息(类似对象)
HSET user:1000 name "Alice" age 25 email "alice@example.com"

# 获取单个字段
HGET user:1000 name      # 返回 "Alice"

# 获取所有字段和值
HGETALL user:1000        # 返回所有键值对

# 修改字段值
HSET user:1000 age 26    # 更新年龄

# 删除字段
HDEL user:1000 email

3. 列表 (List)

# 从左侧插入数据(类似队列)
LPUSH tasks "task1"
LPUSH tasks "task2"      # 列表顺序: ["task2", "task1"]

# 从右侧插入数据
RPUSH tasks "task3"      # 列表顺序: ["task2", "task1", "task3"]

# 获取列表范围
LRANGE tasks 0 -1        # 获取全部元素

# 弹出左侧元素(队列操作)
LPOP tasks               # 返回 "task2",列表剩下 ["task1", "task3"]

4. 集合 (Set)

# 添加不重复元素
SADD tags "redis" "database" "nosql"

# 获取所有元素
SMEMBERS tags           # 返回无序集合

# 检查元素是否存在
SISMEMBER tags "redis"  # 返回 1(存在)

# 集合运算(交集、并集)
SADD tags2 "nosql" "cloud"
SINTER tags tags2       # 返回交集 ["nosql"]

5. 有序集合 (Sorted Set)

# 添加带分数的成员(用于排行榜)
ZADD leaderboard 100 "player1" 85 "player2" 95 "player3"

# 按分数降序获取前3名
ZREVRANGE leaderboard 0 2 WITHSCORES

# 获取成员的排名(从0开始)
ZREVRANK leaderboard "player1"  # 返回 0(第一名)

6. 键管理

# 查看所有键(生产环境慎用)
KEYS *

# 检查键是否存在
EXISTS username         # 返回 1(存在)

# 删除键
DEL username

# 设置键的过期时间
EXPIRE user:1000 3600   # 1小时后过期

# 查看剩余生存时间
TTL user:1000

实际应用场景示例

场景:缓存文章信息

# 存储文章数据(JSON格式)
SET article:1234 '{"title":"Redis教程","views":0}'

# 增加阅读量
INCR article:1234:views

# 设置缓存过期时间(1小时)
EXPIRE article:1234 3600

学习建议

  1. 安装 Redis 本地环境(官网下载
  2. 使用 redis-cli 直接练习命令
  3. 尝试用 Redis 实现以下功能:
    • 用户登录会话管理
    • 实时排行榜
    • 消息队列(用 List)
  4. 参考文档:Redis 命令大全

通过动手实践这些命令,你会快速掌握 Redis 的核心操作!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖虎爱Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值