解锁速度之门: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]

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

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

相关推荐
程序员麻辣烫19 分钟前
晋升系列4:学习方法
java·数据库·程序人生·学习方法
austin流川枫32 分钟前
如何基于缓存设计实现一个商品最近搜索记录功能
java·redis
颜淡慕潇41 分钟前
【面试题系列】 Redis 核心面试题(二)&答案
数据库·redis·缓存
我真的不会C1 小时前
Mysql表的复合查询
java·数据库·mysql
CodeJourney.1 小时前
光储直流微电网:能源转型的关键力量
数据库·人工智能·算法·能源
王嘉俊9251 小时前
MySQL 入门笔记
数据库·笔记·sql·mysql·adb
时雨h1 小时前
Spring MVC 详细分层和微服务
java·数据结构·数据库·sql
百香果果ccc1 小时前
Maven的依赖管理
java·数据库·maven
小技工丨1 小时前
Flink之SQL join
数据库·sql·flink
Ronin-Lotus2 小时前
深度学习篇---Opencv中的机器学习和深度学习
python·深度学习·opencv·机器学习