解锁速度之门: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 keyAPPEND key value
  • List : LPUSH key valueLRANGE key start stop
  • Set : SADD key valueSMEMBERS key
  • Hash : HSET key field valueHGET key field
  • Sorted Set : ZADD key score valueZRANGE key start stop

5、redis实操

以下是关于 Redis 各种数据类型的常用命令示例,这些示例包括 StringListSetHashSorted 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]

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

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

相关推荐
陈丹阳(滁州学院)2 小时前
若依添加添加监听容器配置(删除键,键过期)
数据库·oracle
远方16093 小时前
14-Oracle 23ai Vector Search 向量索引和混合索引-实操
数据库·ai·oracle
老胖闲聊3 小时前
Python Copilot【代码辅助工具】 简介
开发语言·python·copilot
Blossom.1183 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
曹勖之3 小时前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
GUIQU.4 小时前
【Oracle】数据仓库
数据库·oracle
lyaihao4 小时前
使用python实现奔跑的线条效果
python·绘图
恰薯条的屑海鸥4 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习
咖啡啡不加糖4 小时前
Redis大key产生、排查与优化实践
java·数据库·redis·后端·缓存
曼汐 .4 小时前
数据库管理与高可用-MySQL高可用
数据库·mysql