当前位置: 首页 > news >正文

Redis 完整指南:命令与原理详解

目录

    • 1. Redis 概述
      • 什么是 Redis
      • Redis 应用场景
    • 2. 安装与启动
      • Redis 安装步骤
        • 源代码安装
        • 使用包管理器安装(以 Ubuntu 为例)
      • 编译与启动命令
      • 编客户端连接
    • 3. Redis 存储结构
      • KV 存储结构
      • 数据结构类型
        • String(字符串)
        • List(列表)
        • Hash(哈希)
        • Set(集合)
        • Zset(有序集合)
    • 4. 基础命令
      • String 相关命令
      • List 相关命令
      • Hash 相关命令
      • Set 相关命令
      • Zset 相关命令
    • 5. Redis 高级应用
      • 分布式锁
      • 位运算
      • 累加器
      • 阻塞队列与异步消息队列
      • 分布式定时器
    • 6. Redis 使用场景
      • 朋友圈点赞与评论
      • 购物车实现
      • 抽奖应用
      • 时间窗口限流
      • 百度热榜与延时队列
      • 参考

在现代应用开发中,Redis 作为一个高性能的键值存储数据库,凭借其卓越的性能和丰富的数据结构,广泛应用于缓存、消息队列、实时分析等多个领域。

1. Redis 概述

什么是 Redis

Redis(Remote Dictionary Server)是一个开源的、高性能的键值对(Key-Value)存储数据库,广泛用于数据库、缓存和消息代理。由 Salvatore Sanfilippo 于 2009 年创建,Redis 具备以下显著特点:

  • 内存存储:所有数据存储在内存中,提供极高的读写速度。
  • 多种数据结构:支持字符串、列表、哈希、集合、有序集合等多种数据类型,满足不同的应用需求。
  • 持久化:提供 RDB 和 AOF 两种持久化机制,确保数据在服务器重启后不丢失。
  • 原子操作:所有操作都是原子性的,支持事务处理。
  • 丰富的功能:包括发布/订阅、Lua 脚本、主从复制、哨兵和集群模式,适应各种复杂应用场景。

Redis 应用场景

Redis 的高性能和多样的数据结构使其适用于多种场景,包括但不限于:

  • 缓存:缓存数据库查询结果、会话数据等,提升系统性能。
  • 消息队列:通过列表或发布/订阅模式实现消息队列功能。
  • 排行榜和计数器:利用有序集合和计数器功能实现实时排行榜和计数器。
  • 实时分析:进行实时数据分析和统计,如网站访问量、在线用户数等。
  • 分布式锁:在分布式系统中实现锁机制,保证资源的安全访问。
  • 持久化存储:在需要高性能读写且数据量较小的场景下作为主数据存储。

2. 安装与启动

Redis 安装步骤

Redis 的安装方式多种多样,常见的有源代码安装和使用包管理器安装。以下以源代码安装和 Ubuntu 系统下的包管理器安装为例,详细介绍 Redis 的安装步骤。

源代码安装
  1. 下载源码

    wget http://download.redis.io/redis-stable.tar.gz
    tar xzf redis-stable.tar.gz
    cd redis-stable
    
  2. 编译

    make
    make test  # 可选,运行测试确保编译正确
    sudo make install
    
  3. 配置
    Redis 默认配置文件为 redis.conf,可以复制一份进行修改:

    cp redis.conf /etc/redis.conf
    # 以管理员身份登录
    sudo -i
    cd /etc/redis/
    #备份
    cp redis.conf redis.conf.copy
    
  4. 启动 Redis

    redis-server /etc/redis.conf
    
使用包管理器安装(以 Ubuntu 为例)
  1. 更新包列表

    sudo apt update
    
  2. 安装 Redis

    sudo apt install redis-server
    
  3. 启动 Redis 服务

    sudo systemctl start redis
    sudo systemctl enable redis  # 设置开机自启动
    

编译与启动命令

编译 Redis 源代码的主要命令如下:

  • 编译

    make
    
  • 运行测试(可选):

    make test
    
  • 安装

    sudo make install
    
  • 配置

    sudo vim /etc/redis/redis.conf
    
    # 守护进程,修改为yes后即后台运行
    daemonize yes
    # 监听的地址,默认127.0.0.1,会导致只能在本地访问,修改为0.0.0.0则可以在任意IP范文
    bind 0.0.0.0
    # 密码,设置后访问redis必须输入密码
    requirepass 123456
    # 监听端口号,默认6379
    port 6379
    #重启 redis
    sudo service redis restart
    

启动 Redis 服务器的命令:

redis-server /path/to/redis.conf

常用选项包括:

  • 后台运行
    redis.conf 中设置 daemonize yes,或使用命令行参数 --daemonize yes

  • 指定配置文件

    redis-server /etc/redis/redis.conf
    

停止 Redis 服务器:

redis-cli shutdown

编客户端连接

redis-cli [options] [commonds]
-h 指定要连接的redis节点的IP地址,默认是127.0.0.1
-p 指定要连接的redis节点的端口,默认是6379
-a 指定redis的访问密码 #例如
redis-cli -h 127.0.0.1 -a 123456

3. Redis 存储结构

Redis 支持多种数据结构,每种数据结构适用于不同的应用场景。以下是 Redis 的主要存储结构详解。

KV 存储结构

Redis 的基本数据模型是键值对(Key-Value)。每个键都是唯一的,可以关联不同类型的值。键通常是字符串,值可以是多种数据类型,包括字符串、列表、哈希、集合和有序集合。
在这里插入图片描述

数据结构类型

String(字符串)
  • 描述:最基本的 Redis 数据类型,类似于键值对中的值。
  • 特点
    • 可以包含任何类型的数据,如文本、数字、二进制数据。
    • 最大值为 512 MB。
  • 常用命令
    • SET key value:设置键的值。
    • GET key:获取键的值。
    • INCR key:将键的值递增。

示例

SET name "Alice"
GET name  # 返回 "Alice"
List(列表)
  • 描述:一个有序的字符串列表,可以从两端推入或弹出元素。
  • 特点
    • 支持队列和栈操作。
    • 双端链表实现,适合频繁的头尾操作。
  • 常用命令
    • LPUSH key value:在列表左侧推入一个值。
    • RPUSH key value:在列表右侧推入一个值。
    • LPOP key:弹出左侧第一个值。
    • RPOP key:弹出右侧第一个值。

示例

LPUSH mylist "a"
RPUSH mylist "b"
LRANGE mylist 0 -1  # 返回 ["a", "b"]
Hash(哈希)
  • 描述:键对应的值是一个键值对集合,类似于对象或字典。
  • 特点
    • 适合存储对象的属性。
    • 内存占用较少。
  • 常用命令
    • HSET key field value:设置哈希字段的值。
    • HGET key field:获取哈希字段的值。
    • HGETALL key:获取哈希中所有字段和值。

示例

HSET user:1000 name "Alice" age "30"
HGETALL user:1000  # 返回 {"name": "Alice", "age": "30"}
Set(集合)
  • 描述:一个无序的字符串集合,所有元素都是唯一的。
  • 特点
    • 支持集合间的交、并、差运算。
    • 适合存储标签、好友列表等。
  • 常用命令
    • SADD key member:向集合添加一个成员。
    • SREM key member:从集合中移除一个成员。
    • SMEMBERS key:获取集合中的所有成员。

示例

SADD myset "a" "b" "c"
SMEMBERS myset  # 返回 ["a", "b", "c"]
Zset(有序集合)
  • 描述:一个带有分数的有序集合,成员按分数排序。
  • 特点
    • 支持按分数范围查询。
    • 适合实现排行榜、优先队列等。
  • 常用命令
    • ZADD key score member:向有序集合添加成员及其分数。
    • ZRANGE key start stop [WITHSCORES]:按分数范围获取成员。
    • ZREM key member:移除有序集合中的成员。

示例

ZADD leaderboard 100 "Alice"
ZADD leaderboard 200 "Bob"
ZRANGE leaderboard 0 -1 WITHSCORES  # 返回 ["Alice", "100", "Bob", "200"]

4. 基础命令

Redis 提供了丰富的命令集来操作不同的数据结构。以下是各数据类型的一些常用基础命令。

String 相关命令

  • SET:设置键的值。

    SET key value
    
  • GET:获取键的值。

    GET key
    
  • INCR:将键的值递增 1。

    INCR key
    
  • DECR:将键的值递减 1。

    DECR key
    
  • APPEND:向键的值追加字符串。

    APPEND key value
    

List 相关命令

  • LPUSH:在列表左侧推入一个或多个值。

    LPUSH key value1 [value2 ...]
    
  • RPUSH:在列表右侧推入一个或多个值。

    RPUSH key value1 [value2 ...]
    
  • LPOP:弹出列表左侧第一个值。

    LPOP key
    
  • RPOP:弹出列表右侧第一个值。

    RPOP key
    
  • LRANGE:获取列表指定范围的值。

    LRANGE key start stop
    

Hash 相关命令

  • HSET:设置哈希字段的值。

    HSET key field value
    
  • HGET:获取哈希字段的值。

    HGET key field
    
  • HDEL:删除哈希中的一个或多个字段。

    HDEL key field1 [field2 ...]
    
  • HGETALL:获取哈希中所有字段和值。

    HGETALL key
    
  • HEXISTS:检查哈希中是否存在某个字段。

    HEXISTS key field
    

Set 相关命令

  • SADD:向集合添加一个或多个成员。

    SADD key member1 [member2 ...]
    
  • SREM:从集合中移除一个或多个成员。

    SREM key member1 [member2 ...]
    
  • SMEMBERS:获取集合中的所有成员。

    SMEMBERS key
    
  • SISMEMBER:检查成员是否在集合中。

    SISMEMBER key member
    
  • SCARD:获取集合的成员数量。

    SCARD key
    

Zset 相关命令

  • ZADD:向有序集合添加一个或多个成员及其分数。

    ZADD key score1 member1 [score2 member2 ...]
    
  • ZRANGE:按分数范围获取成员。

    ZRANGE key start stop [WITHSCORES]
    
  • ZREM:移除有序集合中的一个或多个成员。

    ZREM key member1 [member2 ...]
    
  • ZSCORE:获取成员的分数。

    ZSCORE key member
    
  • ZCARD:获取有序集合的成员数量。

    ZCARD key
    

5. Redis 高级应用

Redis 不仅是一个简单的键值存储,还支持许多高级功能,适用于复杂的应用场景。以下是 Redis 的几种高级应用详解。

分布式锁

在分布式系统中,分布式锁用于确保多个进程或线程之间对共享资源的互斥访问。Redis 通过 SETNX 命令和过期时间来实现分布式锁。

实现步骤

  1. 尝试获取锁

    SET key value NX PX timeout
    
    • NX:只有在键不存在时才设置键。
    • PX timeout:设置键的过期时间,防止死锁。
  2. 释放锁
    通过 Lua 脚本确保释放锁的原子性:

    if redis.call("GET", key) == value thenreturn redis.call("DEL", key)
    elsereturn 0
    end
    

示例

SET mylock "unique_value" NX PX 30000  # 尝试获取锁,30秒过期

位运算

Redis 提供了对位(bit)的操作,通过 BITOP 和相关命令可以进行高效的位操作。

常用命令

  • SETBIT:设置位值。

    SETBIT key offset value
    
  • GETBIT:获取位值。

    GETBIT key offset
    
  • BITCOUNT:统计位为 1 的数量。

    BITCOUNT key [start end]
    
  • BITOP:对多个键的位进行操作(AND, OR, XOR, NOT)。

    BITOP operation destkey key1 [key2 ...]
    

应用场景

  • 用户活跃度统计。
  • 布隆过滤器实现。
  • 权限控制。

累加器

累加器用于对数值进行累加操作,常用于统计和计数。

实现方式

利用 Redis 的 INCRINCRBY 等命令对键的值进行递增操作。

示例

INCR page_views  # 将 page_views 键的值递增 1
INCRBY page_views 10  # 将 page_views 键的值递增 10

阻塞队列与异步消息队列

Redis 的列表可以用作阻塞队列,通过 BLPOPBRPOP 命令实现。
在这里插入图片描述

阻塞队列

生产者通过 RPUSH 将消息推入队列,消费者通过 BLPOP 从队列左侧阻塞获取消息。

示例

# 生产者
RPUSH queue "message1"# 消费者
BLPOP queue 0  # 阻塞等待直到有消息

发布/订阅模式

利用 Redis 的发布/订阅功能实现消息广播。

示例

# 订阅者
SUBSCRIBE channel1# 发布者
PUBLISH channel1 "Hello, World!"

分布式定时器

分布式定时器用于在分布式系统中实现定时任务,可以利用 Redis 的有序集合和定时任务调度机制。

实现步骤

  1. 存储定时任务
    将定时任务存储在有序集合中,分数为执行时间戳。

    ZADD timers timestamp task_data
    
  2. 调度执行
    定期检查有序集合中分数小于等于当前时间的任务并执行。

    ZRANGEBYSCORE timers -inf current_timestamp
    
  3. 执行并移除任务
    执行任务后,将其从有序集合中移除。

    ZREM timers task_data
    

6. Redis 使用场景

Redis 的高性能和多样化的数据结构使其适用于多种实际应用场景。以下是一些典型的使用案例。

朋友圈点赞与评论

在社交应用中,用户的点赞和评论操作需要高并发处理。Redis 的高性能读写能力可以有效应对这种场景。

实现方式

  • 点赞计数
    使用字符串或哈希存储每条动态的点赞数量。

    INCR post:1000:likes
    
  • 用户点赞记录
    使用集合记录用户对哪些动态进行了点赞,防止重复点赞。

    SADD user:1000:liked_posts 2000
    
  • 评论存储
    使用列表存储动态的评论。

    RPUSH post:1000:comments "Great post!"
    

购物车实现

在电商平台中,购物车需要快速响应用户的添加、删除和更新操作。Redis 的哈希和列表结构非常适合此类需求。

实现方式

  • 用户购物车
    使用哈希存储每个用户购物车中的商品及数量。

    HSET cart:user1000 item123 2
    HSET cart:user1000 item456 1
    
  • 购物车列表
    使用列表记录购物车中的商品顺序,支持展示和排序。

    RPUSH cart:user1000:items "item123" "item456"
    

抽奖应用

抽奖应用需要高效随机抽取中奖用户,Redis 的集合和有序集合提供了良好的支持。

实现方式

  • 用户集合
    使用集合存储所有参与抽奖的用户。

    SADD lottery:participants user1 user2 user3 ...
    
  • 随机抽取
    使用 SRANDMEMBER 命令随机抽取中奖用户。

    SRANDMEMBER lottery:participants 1
    

时间窗口限流

为了防止系统被过多请求压垮,可以使用 Redis 实现基于时间窗口的限流。

实现方式

  • 滑动时间窗口
    使用有序集合记录请求的时间戳,并在每次请求时清理过期记录,判断当前请求数是否超过限制。

    ZADD user:1000:requests timestamp
    ZREMRANGEBYSCORE user:1000:requests -inf (current_time - window_size)
    ZCARD user:1000:requests
    
  • 固定时间窗口
    使用计数器在固定时间窗口内计数。

    INCR user:1000:count
    EXPIRE user:1000:count window_size
    

百度热榜与延时队列

百度热榜
利用有序集合实现实时的热点榜单,根据关键词的热度(分数)排序展示。

实现方式

ZINCRBY hotwords 1 "keyword1"
ZRANGE hotwords 0 -1 WITHSCORES

延时队列
使用有序集合和定时任务调度实现延时任务,如定时发送邮件、订单超时处理等。

实现方式

ZADD delayed_tasks execute_timestamp "task_data"

定期检查并执行到期任务:

ZRANGEBYSCORE delayed_tasks -inf current_timestamp

参考

0voice · GitHub

相关文章:

Redis 完整指南:命令与原理详解

目录 1. Redis 概述什么是 RedisRedis 应用场景 2. 安装与启动Redis 安装步骤源代码安装使用包管理器安装(以 Ubuntu 为例) 编译与启动命令编客户端连接 3. Redis 存储结构KV 存储结构数据结构类型String(字符串)List(…...

【2024软考高级架构师】论文篇——3、论Web系统的测试技术及其应用

【摘要】 本人于2023年8月参与了某地级市的市级机关电子政务信息系统的建设工作,该项目是该市机关的电子政务网建设计划的一部分,笔者在该项目中担任项目经理和系统分析师一职,主要负责项目的日常全面管理和质量保证与质量控制工作。该项目是基于WEB系统的,由于WEB系统具有…...

迪杰斯特拉算法的理解

图片转载自:最短路径算法-迪杰斯特拉(Dijkstra)算法 - 程序小哥爱读书的文章 - 知乎 https://zhuanlan.zhihu.com/p/346558578 迪杰斯特拉,一个广度优先算法,采用了贪心策略。 第一步,选取顶点D,更新和D相连的节点C&a…...

华为OD机试 - 文本统计分析(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…...

计算机挑战赛9

Excel表列名称由字母A~Z组成,列字母的规律如下: A、B、C.、AA、AB....AZ、BA、B...ZZZZY、ZZZZ...输入: 输入包含两个列名称字符串,长度均小于等于5。 输出: 输出两个列名称之间共有多少列 样例输入: AA AZ 样例输出: 24 代码: C&…...

C++学习路线(十六)

void类型指针 void -> 空类型 void* -> 空类型指针,只存储地址的值,丢失类型,无法访问,要访问里面的值 我们必须对指针进行正确的类型转换,然后再间接引用指针 所有其它类型的指针都可以隐式自动转换成 void 类型…...

2024年最受欢迎的AI工具与实际应用:AI技术对未来生活的深远影响

2024年最受欢迎的AI工具与实际应用:AI技术对未来生活的深远影响 随着2024年的到来,人工智能(AI)技术已经深入渗透到我们生活的方方面面。从日常工作到科学研究,AI工具的应用变得越来越广泛。无论是生成式AI工具&#…...

【网络安全】账户安全随笔

未经许可,不得转载。 作者:Enoch 原文出处:https://mp.weixin.qq.com/s/oKBpZ0F6Kl5NNmHSYCYIPw 文章目录 账户类型资金划转问题幂等ID使用错误多接口并发问题精度问题其他划转问题特殊资金盗取问题科学计数法问题账户类型 在互联网金融和电商企业中,账户安全直接关系到用…...

在线培训知识库管理系统:教育行业的新动力

在当今数字化时代,教育行业正经历着前所未有的变革。随着在线教育的兴起,如何高效地管理和传播知识成为了一个关键问题。在线培训知识库管理系统应运而生,它以其强大的知识整合、分享和管理能力,为教育行业注入了新的活力。 一、…...

【AI声音克隆本地整合包及教程】第二代GPT-SoVITS V2:声音克隆的新境界

在数字时代的浪潮中,个性化和创新是永恒的主题。GPT-SoVITS V2,作为第二代声音克隆技术,正以其革命性的特性和应用,为个人和企业打开一扇通往声音个性化的新大门。 声音克隆的新高度 GPT-SoVITS V2是由RVC变声器创始人“花儿不哭…...

博看书苑 8.8.1| 免费阅读海量图书期刊

博看书苑是一款免费的图书和期刊阅读神器,拥有海量的图书和期刊资源,涵盖了文学、历史、科技、教育等多个领域。无论你是想深入研究某个专业领域,还是想在闲暇时阅读一些轻松的读物,博看书苑都能满足你的需求。更令人惊喜的是&…...

导致动态代理无法使用的原因有哪些?

在动态代理的应用过程中,有时会遇到其无法正常使用的情况。这种现象可能源于多种原因,从网络配置到软件设置,了解和解决这些问题对保持代理的高效运行至关重要。本文将详细探讨导致动态代理无法使用的主要原因及对策,以帮助用户及…...

熟练使用Spring Boot、Spring Cloud Alibaba微服务开发框架,并深入理解其原理 学习要求

1. Spring Boot 核心理解 自动配置:了解 Spring Boot 的自动配置原理(EnableAutoConfiguration),包括如何查看和定制自动配置的内容。需要能解释 Spring Boot 如何减少样板代码。Spring Boot Starter:熟悉各种 starte…...

2024-10-09 问AI: [AI面试题] 描述数据预处理在 AI 中的重要性

文心一言 数据预处理在人工智能(AI)中扮演着至关重要的角色,它是构建高效、准确和可靠AI模型不可或缺的步骤。以下是数据预处理在AI中重要性的详细描述: 1. 提高数据质量 清理和去噪:数据预处理可以识别和纠正数据中…...

Linux中文件的理解

✨前言✨ 📘 博客主页:to Keep博客主页 🙆欢迎关注,👍点赞,📝留言评论 ⏳首发时间:2024年10月16日 📨 博主码云地址:渣渣C 📕参考书籍&#xff1a…...

益安宁丸,国药准字,值得信赖

益安宁丸真品辨别唯一标准 益安宁丸是由同溢堂药业有限公司独家生产的一款中成药,主要用于调理心血管系统,广泛应用于内地市场及港澳地区。由于其疗效显著,益安宁丸在消费者中享有良好的声誉,被誉为心血管健康的守护者。然而&…...

Django项目的创建及说明(详细图解版)

Django项目的创建及说明 1、安装Django2、创建项目2.1、利用终端创建项目2.2、利用Pycharm企业版创建项目 3、默认文件介绍 1、安装Django 在终端输入下述命令行。 pip install django安装成功后执行如下命令查看Django是否安装好,若正确显示出Django版本号则安装…...

MySQL 9从入门到性能优化-二进制日志

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…...

Cloudlog delete_oqrs_line 未授权SQL注入漏洞复现

0x01 产品简介 Cloudlog 是一个自托管的 PHP 应用程序,可让您在任何地方记录您的业余无线电联系人。使用PHP和MySQL构建的基于Web的业余无线电记录应用程序支持从HF到微波的一般站记录任务 0x02 漏洞概述 Cloudlog delete_oqrs_line 接口存在未授权SQL注入漏洞,未经身份验…...

【Linux】解锁软硬链接奥秘,高效动静态库管理的实战技巧

软硬连接和动静态库 1. 软链接1.1. 概念1.2. 特点1.3. 应用场景 2. 硬链接2.1. 概念2.2. 硬链计数2.3. 特点2.4. 应用场景 3. 动静态库3.1 库存在的原因3.2. 静态库制作与使用3.2.1 打包3.2.2. 使用 3.3. 动态库制作与使用3.3.1. 打包3.3.2. 使用 4. 解决动态库查不到的4种方法…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线, n r n_r nr​ 根接收天线的 MIMO 系…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

MySQL的pymysql操作

本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...