解锁速度之门:Redis

课程:B站大学
记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化

redis那些事儿


rdis必学基础知识、

1、redis概念

Redis 是一个开源的高性能内存键值数据库,支持多种数据结构和多种持久化方式。它被广泛应用于缓存、实时分析、消息队列、会话管理等场景。

2、redis数据结构

  • String:普通字符串,可以存储文本或二进制数据。

  • List:链表,可以用作队列或栈。

  • Set:无序集合,支持交集、并集等操作。

  • Sorted Set (ZSet):有序集合,元素带有分数用于排序。

  • Hash:键值对集合,适合存储对象数据。

  • Stream:日志流,适合消息队列或数据记录。

3、多种持久化方式

RDB (Redis DataBase):定期将数据快照存储到磁盘。

AOF (Append Only File):将每次写操作追加到日志文件中,数据恢复更细粒度。

4、redis常用命令

1.键值操作

  • SET key value:设置键值。
  • GET key:获取键值。
  • DEL key:删除键。
  • EXPIRE key seconds:设置键的过期时间。

2.数据结构操作

  • String : INCR key、APPEND key value
  • List : LPUSH key value、LRANGE key start stop
  • Set : SADD key value、SMEMBERS key
  • Hash : HSET key field value、HGET key field
  • Sorted Set : ZADD key score value、ZRANGE key start stop

5、redis实操

以下是关于 Redis 各种数据类型的常用命令示例,这些示例包括 String 、List 、Set 、Hash 和 Sorted Set,并以常见场景举例:


1. String 示例

适用场景:简单的键值对存储,如计数器或缓存。

bash 复制代码
# 设置键值
SET my_key "Hello, Redis!"
# 获取键值
GET my_key
# 结果: "Hello, Redis!"

# 自增(适合计数器场景)
SET counter 100
INCR counter
# 结果: 101
INCR counter
# 结果: 102

# 追加值
APPEND my_key " How are you?"
GET my_key
# 结果: "Hello, Redis! How are you?"

2. List 示例

适用场景:任务队列、消息列表、时间序列等。

bash 复制代码
# 向列表头部添加元素(左侧)
LPUSH my_list "task1"
LPUSH my_list "task2"
LPUSH my_list "task3"

# 获取列表中的元素
LRANGE my_list 0 -1
# 结果: ["task3", "task2", "task1"]

# 弹出元素(移除第一个任务)
LPOP my_list
# 结果: "task3"

# 再次查看列表
LRANGE my_list 0 -1
# 结果: ["task2", "task1"]

3. Set 无需集合示例

适用场景:存储唯一值集合,如用户 ID、标签等。

bash 复制代码
# 添加元素到集合
SADD my_set "user1"
SADD my_set "user2"
SADD my_set "user3"
SADD my_set "user1"  # 重复添加无效

# 查看集合中的所有元素
SMEMBERS my_set
# 结果: ["user1", "user2", "user3"]

# 判断某个值是否在集合中
SISMEMBER my_set "user2"
# 结果: 1 (true)
SISMEMBER my_set "user4"
# 结果: 0 (false)

# 移除集合中的某个值
SREM my_set "user1"
SMEMBERS my_set
# 结果: ["user2", "user3"]

4. Hash 示例

适用场景:存储对象数据,如用户信息、商品属性等。

bash 复制代码
# 设置字段和值
HSET user:1001 name "Alice"
HSET user:1001 age 30
HSET user:1001 city "New York"

# 获取某个字段的值
HGET user:1001 name
# 结果: "Alice"

# 获取整个哈希
HGETALL user:1001
# 结果: ["name", "Alice", "age", "30", "city", "New York"]

# 修改字段值
HSET user:1001 age 31
HGET user:1001 age
# 结果: 31

# 删除字段
HDEL user:1001 city
HGETALL user:1001
# 结果: ["name", "Alice", "age", "31"]

5. Sorted Set (ZSet) 有序集合示例

适用场景:排行榜、优先级队列等。

bash 复制代码
# 添加元素及其分数
ZADD leaderboard 100 "Alice"
ZADD leaderboard 200 "Bob"
ZADD leaderboard 150 "Charlie"

# 按分数升序获取排行榜
ZRANGE leaderboard 0 -1 WITHSCORES
# 结果: ["Alice", 100, "Charlie", 150, "Bob", 200]

# 按分数降序获取排行榜
ZREVRANGE leaderboard 0 -1 WITHSCORES
# 结果: ["Bob", 200, "Charlie", 150, "Alice", 100]

# 获取某个成员的分数
ZSCORE leaderboard "Charlie"
# 结果: 150

# 增加成员的分数
ZINCRBY leaderboard 50 "Alice"
ZRANGE leaderboard 0 -1 WITHSCORES
# 结果: ["Charlie", 150, "Alice", 150, "Bob", 200]

该说不说,我还是那句话,提升的过程往往是需要坚持下去的,愿你我都遇到自己的浪漫。

实践是检验真理的唯一标准

相关推荐
傅科摆 _ py6 分钟前
DP,贪心,堆和栈,二分力扣复习
开发语言·python·算法
学IT的周星星27 分钟前
LangGraph:用「流程图」的方式编排 Agent
数据库·人工智能·大模型·llm·流程图·agent
吴名氏.37 分钟前
Java转AI Agent教程(第一周)让模型先跑起来
人工智能·python·ai·ai agent
枫子有风1 小时前
卡码网盘项目深挖
java·redis·jwt·es·pgvector
吃一碗粉只付一碗钱1 小时前
10-令牌里的用户主键不要明文
服务器·数据库·sql·sqlserver·c#
蹄蹄1 小时前
从“一次性检测“到“年度服务“:检测机构收入结构变了,合同和应收账款也要跟着变
大数据·数据库·人工智能
福大大架构师每日一题1 小时前
redis 8.10.3正式发布:聚焦集群总线超大消息传播场景的安全修复,8.10.3 Latest更新解读
数据库·redis·安全
第404号工位1 小时前
离职退电脑前别只点“清空回收站”!手把手教你彻底抹除凭证与数字痕迹
linux·python·架构
Metaphor6921 小时前
使用 Python 在 Word 文档中添加、修改和删除变量
python·word