Redis 的5种数据类型的基本命令
目录
String的基本命令
1. SET
2. GET
3. GETSET
4. STRLEN
5. APPEND
6. SETRANGE
7. GETRANGE
8. SETEX
9. SETNX
10. MSET
11. MGET
12. INCR
13. DECR
14. INCRBY
15. DECRBY
16. INCRBYFLOAT
Map的基本命令
1. HSET
2. HGET
3. HMSET
4. HMGET
5. HGETALL
6. HDEL
7. HEXISTS
8. HKEYS
9. HVALS
10. HINCRBY
11. HINCRBYFLOAT
12. HLEN
13. HSCAN
List的基本命令
1. LPUSH
2. RPUSH
3. LLEN
4. LRANGE
5. LINDEX
6. LSET
7. LPOP
8. RPOP
9. BLPOP
10. BRPOP
11. LREM
12. LTRIM
13. RPOPLPUSH
Set的基本命令
1. SADD
2. SCARD
3. SISMEMBER
4. SMEMBERS
5. SREM
6. SPOP
7. SRANDMEMBER
8. SDIFF
9. SDIFFSTORE
10. SINTER
11. SINTERSTORE
12. SUNION
13. SUNIONSTORE
14. SMOVE
有序集合(ZSet)的基本命令
1. 添加元素
2. 获取元素分数
3. 删除元素
4. 计数
5. 范围查询
6. 分数范围查询
7. 计算分数范围成员数
8. 移除分数范围内的成员
9. 增加成员分数
10. 排名查询
11. 逆序排名查询
12. 逆序范围查询
String的基本命令
Redis的String类型是最基本的数据类型,它可以包含任何形式的字符串或二进制数据。以下是一些基本的String操作命令:
1. SET
- 功能: 设置指定 key 的值。
- 例子:
SET mykey "Hello"
将字符串 "Hello" 存储在键mykey
中。
2. GET
- 功能: 获取指定 key 的值。
- 例子:
GET mykey
获取键mykey
的值。
3. GETSET
- 功能: 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
- 例子:
GETSET mykey "World"
将mykey
的值设置为 "World" 并返回之前的值。
4. STRLEN
- 功能: 获取指定 key 的值的长度。
- 例子:
STRLEN mykey
获取键mykey
的值的长度。
5. APPEND
- 功能: 给指定 key 的字符串值追加 value。
- 例子:
APPEND mykey " World"
在键mykey
的值后面追加字符串 " World"。
6. SETRANGE
- 功能: 从指定 key 的值的offset开始,用给定 value 覆盖。
- 例子:
SETRANGE mykey 6 "Redis"
从偏移量6开始,将键mykey
的值更改为 "Redis"。
7. GETRANGE
- 功能: 获取指定 key 的值的子字符串。
- 例子:
GETRANGE mykey 0 4
获取键mykey
的值的子字符串,从索引0到4。
8. SETEX
- 功能: 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
- 例子:
SETEX mykey 60 "Hello World"
设置键mykey
的值为 "Hello World" 并且该键会在60秒后过期。
9. SETNX
- 功能: 只有在 key 不存在时设置 key 的值。
- 例子:
SETNX mykey "Hello"
如果mykey
不存在,则设置其值为 "Hello"。
10. MSET
- 功能: 同时设置一个或多个 key-value 对。
- 例子:
MSET key1 "Hello" key2 "World"
同时设置key1
的值为 "Hello" 和key2
的值为 "World"。
11. MGET
- 功能: 获取所有(一个或多个)给定 key 的值。
- 例子:
MGET key1 key2
获取key1
和key2
的值。
12. INCR
- 功能: 将 key 中储存的数字值增一。
- 例子:
INCR mykey
将存储在mykey
中的数值增加1。
13. DECR
- 功能: 将 key 中储存的数字值减一。
- 例子:
DECR mykey
将存储在mykey
中的数值减少1。
14. INCRBY
- 功能: 将 key 所储存的值加上给定的增量值(increment)。
- 例子:
INCRBY mykey 10
将存储在mykey
中的数值增加10。
15. DECRBY
- 功能: 将 key 所储存的值减去给定的减量值(decrement)。
- 例子:
DECRBY mykey 10
将存储在mykey
中的数值减少10。
16. INCRBYFLOAT
- 功能: 将 key 所储存的值加上给定的浮点增量值(increment)。
- 例子:
INCRBYFLOAT mykey 0.5
将存储在mykey
中的数值增加0.5。
Map的基本命令
Redis的Map类型在Redis中称为哈希(Hash),它是一个键值对集合。以下是一些基本的Hash操作命令:
1. HSET
- 功能: 向哈希表中添加一个字段及其值。
- 例子:
HSET myhash field1 "Hello"
将字段field1
的值设置为 "Hello" 在哈希表myhash
中。
2. HGET
- 功能: 获取哈希表中指定字段的值。
- 例子:
HGET myhash field1
获取哈希表myhash
中字段field1
的值。
3. HMSET
- 功能: 同时将多个字段-值 (field-value) 对设置到哈希表中。
- 例子:
HMSET myhash field1 "Hello" field2 "World"
在哈希表myhash
中同时设置field1
的值为 "Hello" 和field2
的值为 "World"。
4. HMGET
- 功能: 获取所有给定字段的值。
- 例子:
HMGET myhash field1 field2
获取哈希表myhash
中field1
和field2
的值。
5. HGETALL
- 功能: 获取在哈希表中指定 key 的所有字段和值。
- 例子:
HGETALL myhash
获取哈希表myhash
中的所有字段和值。
6. HDEL
- 功能: 删除一个或多个哈希表字段。
- 例子:
HDEL myhash field1
删除哈希表myhash
中的字段field1
。
7. HEXISTS
- 功能: 查看哈希表的指定字段是否存在。
- 例子:
HEXISTS myhash field1
检查字段field1
是否存在于哈希表myhash
中。
8. HKEYS
- 功能: 获取哈希表中的所有字段名。
- 例子:
HKEYS myhash
获取哈希表myhash
中的所有字段名。
9. HVALS
- 功能: 获取哈希表中的所有值。
- 例子:
HVALS myhash
获取哈希表myhash
中的所有值。
10. HINCRBY
- 功能: 为哈希表中的指定字段的整数值加上增量。
- 例子:
HINCRBY myhash field1 2
将哈希表myhash
中字段field1
的值增加2。
11. HINCRBYFLOAT
- 功能: 为哈希表中的指定字段的浮点数值加上增量。
- 例子:
HINCRBYFLOAT myhash field1 0.5
将哈希表myhash
中字段field1
的值增加0.5。
12. HLEN
- 功能: 获取哈希表中字段的数量。
- 例子:
HLEN myhash
获取哈希表myhash
中字段的数量。
13. HSCAN
- 功能: 迭代哈希表中的键值对。
- 例子:
HSCAN myhash 0
迭代哈希表myhash
中的键值对。
List的基本命令
Redis的List是一个字符串列表,它按照插入顺序排序。以下是一些基本的List操作命令:
1. LPUSH
- 功能: 将一个或多个值插入到列表头部。
- 例子:
LPUSH mylist "world"
在列表mylist
的头部插入值 "world"。
2. RPUSH
- 功能: 将一个或多个值插入到列表尾部。
- 例子:
RPUSH mylist "hello"
在列表mylist
的尾部插入值 "hello"。
3. LLEN
- 功能: 获取列表长度。
- 例子:
LLEN mylist
获取列表mylist
的长度。
4. LRANGE
- 功能: 获取列表指定范围内的元素。
- 例子:
LRANGE mylist 0 -1
获取列表mylist
中的所有元素。
5. LINDEX
- 功能: 通过索引获取列表中的元素。
- 例子:
LINDEX mylist 0
获取列表mylist
中第一个元素。
6. LSET
- 功能: 通过索引设置列表元素的值。
- 例子:
LSET mylist 0 "newvalue"
将列表mylist
中第一个元素的值设置为 "newvalue"。
7. LPOP
- 功能: 移除并获取列表的第一个元素。
- 例子:
LPOP mylist
移除并返回列表mylist
的第一个元素。
8. RPOP
- 功能: 移除并获取列表的最后一个元素。
- 例子:
RPOP mylist
移除并返回列表mylist
的最后一个元素。
9. BLPOP
- 功能: 阻塞式移除并获取列表的第一个元素。
- 例子:
BLPOP mylist 0
阻塞直到列表mylist
有元素可弹出或超时。
10. BRPOP
- 功能: 阻塞式移除并获取列表的最后一个元素。
- 例子:
BRPOP mylist 0
阻塞直到列表mylist
有元素可弹出或超时。
11. LREM
- 功能: 移除列表中与参数 VALUE 相等的元素。
- 例子:
LREM mylist 0 "world"
移除列表mylist
中所有值为 "world" 的元素。
12. LTRIM
- 功能: 修剪(截取)一个已存在的 list,让它只包含指定范围的元素。
- 例子:
LTRIM mylist 1 -1
截取列表mylist
,只保留索引从1开始到结束的元素。
13. RPOPLPUSH
- 功能: 移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
- 例子:
RPOPLPUSH mylist1 mylist2
将列表mylist1
的最后一个元素弹出并推入列表mylist2
的头部。
Set的基本命令
Redis的Set是一个无序集合,它通过哈希表实现,可以存储一些不重复的值。以下是一些基本的Set操作命令:
1. SADD
- 功能: 向集合添加一个或多个成员。
- 例子:
SADD myset "Hello"
添加单个成员 "Hello" 到集合myset
中。
2. SCARD
- 功能: 获取集合的成员数。
- 例子:
SCARD myset
获取集合myset
的成员数量。
3. SISMEMBER
- 功能: 判断成员元素是否是集合的成员。
- 例子:
SISMEMBER myset "Hello"
检查 "Hello" 是否是集合myset
的成员。
4. SMEMBERS
- 功能: 返回集合中的所有成员。
- 例子:
SMEMBERS myset
获取集合myset
中的所有成员。
5. SREM
- 功能: 移除集合中一个或多个成员。
- 例子:
SREM myset "Hello"
从集合myset
中移除成员 "Hello"。
6. SPOP
- 功能: 移除并返回集合中的一个随机元素。
- 例子:
SPOP myset
随机移除集合myset
中的一个成员并返回它。
7. SRANDMEMBER
- 功能: 返回集合中的一个或多个随机数。
- 例子:
SRANDMEMBER myset
随机返回集合myset
中的一个成员。
8. SDIFF
- 功能: 返回给定所有集合的差集。
- 例子:
SDIFF myset1 myset2
返回存在于myset1
但不在myset2
中的成员。
9. SDIFFSTORE
- 功能: 返回给定所有集合的差集并存储在指定的集合中。
- 例子:
SDIFFSTORE mysetdiff myset1 myset2
将myset1
和myset2
的差集保存到mysetdiff
。
10. SINTER
- 功能: 返回所有给定集合的交集。
- 例子:
SINTER myset1 myset2
返回集合myset1
和myset2
的交集。
11. SINTERSTORE
- 功能: 返回所有给定集合的交集并存储在指定的集合中。
- 例子:
SINTERSTORE mysetinter myset1 myset2
将myset1
和myset2
的交集保存到mysetinter
。
12. SUNION
- 功能: 返回所有给定集合的并集。
- 例子:
SUNION myset1 myset2
返回集合myset1
和myset2
的并集。
13. SUNIONSTORE
- 功能: 返回所有给定集合的并集并存储在指定的集合中。
- 例子:
SUNIONSTORE mysetunion myset1 myset2
将myset1
和myset2
的并集保存到mysetunion
。
14. SMOVE
- 功能: 将成员从一个集合移动到另一个集合。
- 例子:
SMOVE myset1 myset2 "Hello"
将成员 "Hello" 从myset1
移动到myset2
。
有序集合(ZSet)的基本命令
1. 添加元素
- 命令:
ZADD key score member [score member ...]
- 说明: 向有序集合key中添加一个或多个成员,或者更新已存在成员的分数(score)。
- 示例:
ZADD myzset 1 "one" 2 "two"
将成员"one"和"two"分别以分数1和2添加到"myzset"。
2. 获取元素分数
- 命令:
ZSCORE key member
- 说明: 获取有序集合key中成员member的分数。
- 示例:
ZSCORE myzset "one"
获取"myzset"中"one"的分数。
3. 删除元素
- 命令:
ZREM key member [member ...]
- 说明: 删除有序集合key中的一个或多个成员。
- 示例:
ZREM myzset "one"
从"myzset"中删除成员"one"。
4. 计数
- 命令:
ZCARD key
- 说明: 获取有序集合key的成员数量。
- 示例:
ZCARD myzset
获取"myzset"的成员数量。
5. 范围查询
- 命令:
ZRANGE key start stop [WITHSCORES]
- 说明: 按照分数值递增(从小到大)顺序返回有序集key中指定区间内的成员。
- 示例:
ZRANGE myzset 0 -1 WITHSCORES
返回"myzset"中所有成员及其分数。
6. 分数范围查询
- 命令:
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
- 说明: 返回有序集key中,所有分数介于min和max之间的成员。
- 示例:
ZRANGEBYSCORE myzset 1 2 WITHSCORES
返回"myzset"中分数介于1到2的成员及其分数。
7. 计算分数范围成员数
- 命令:
ZCOUNT key min max
- 说明: 计算有序集key中,分数介于min和max之间的成员数量。
- 示例:
ZCOUNT myzset 1 2
计算"myzset"中分数介于1到2的成员数量。
8. 移除分数范围内的成员
- 命令:
ZREMRANGEBYSCORE key min max
- 说明: 删除有序集key中,所有分数介于min和max之间的成员。
- 示例:
ZREMRANGEBYSCORE myzset 1 1
删除"myzset"中所有分数为1的成员。
9. 增加成员分数
- 命令:
ZINCRBY key increment member
- 说明: 为有序集key的成员member的分数加上增量increment。
- 示例:
ZINCRBY myzset 2 "one"
将"myzset"中"one"的分数增加2。
10. 排名查询
- 命令:
ZRANK key member
- 说明: 返回有序集key中成员member的排名。其中有序集成员按分数值递增(从小到大)排序。
- 示例:
ZRANK myzset "one"
获取"myzset"中"one"的排名。
11. 逆序排名查询
- 命令:
ZREVRANK key member
- 说明: 返回有序集key中成员member的排名,按分数值递减(从大到小)排序。
- 示例:
ZREVRANK myzset "one"
获取"myzset"中"one"的逆序排名。
12. 逆序范围查询
- 命令:
ZREVRANGE key start stop [WITHSCORES]
- 说明: 返回有序集key中,指定区间内的成员,通过索引,分数从高到底。
- 示例:
ZREVRANGE myzset 0 -1 WITHSCORES
返回"myzset"中所有成员及其分数,按分数从高到低。
相关文章:
Redis 的5种数据类型的基本命令
目录 String的基本命令 1. SET 2. GET 3. GETSET 4. STRLEN 5. APPEND 6. SETRANGE 7. GETRANGE 8. SETEX 9. SETNX 10. MSET 11. MGET 12. INCR 13. DECR 14. INCRBY 15. DECRBY 16. INCRBYFLOAT Map的基本命令 1. HSET 2. HGET 3. HMSET 4. HMGET 5. …...

【Liunx-后端开发软件安装】Liunx安装nginx
【Liunx-后端开发软件安装】Liunx安装nginx 使用安装包安装 一、简介 nginx,这个家伙可不是你厨房里的那位大厨,它可是互联网世界的“煎饼果子摊主”。想象一下,在熙熙攘攘的网络大街上,nginx挥舞着它的锅铲——哦不,是…...

力扣Lc20--- 202.快乐数(java版)-2024年3月20日
1.题目 2.知识点 (1)while (seen.contains(n) false) { // 循环体 } 与 !seen.contains(n) 等同 (2) 当传入数字 19 给 isHappy(19) 方法时,下面是每一行代码的执行过程: 初始化一个空的 HashSet&#…...

机器学习----交叉熵(Cross Entropy)如何做损失函数
目录 一.概念引入 1.损失函数 2.均值平方差损失函数 3.交叉熵损失函数 3.1信息量 3.2信息熵 3.3相对熵 二.交叉熵损失函数的原理及推导过程 表达式 二分类 联立 取对数 补充 三.交叉熵函数的代码实现 一.概念引入 1.损失函数 损失函数是指一种将一个事件&#x…...

Linux docker3--数据卷-nginx配置示例
一、因为docker部署服务都是以最小的代价部署,所以通常在容器内部很多依赖和命令无法执行。进入容器修改配置的操作也比较麻烦。本例介绍的数据卷作用就是将容器内的配置和宿主机文件打通,之后修改宿主机的配置文件就相当于修改了docker进程的配置文件&a…...

力扣454. 四数相加 II
思路:把四个数组拆成两对,两个分别相加,记录第一对的相加结果进map里,再把第二对数组 0-nums2-nums4 去map里面找出现了几次,这题不用对重复的四元组去重,所以出现多次都有效。 class Solution {public int…...

vulnstack1 渗透分析 红日靶场(一)
环境搭建 ip段设置 kali (coleak):192.168.145.139 Windows 7 (stu1):192.168.10.181、192.168.145.140 Winserver 2008 (owa):192.168.10.180 Win2k3 (root-tvi862ubeh):192.168.10.182复制 kali可以访问win7,但不能…...

外包干了6天,技术明显进步。。。
我是一名大专生,自19年通过校招进入湖南某软件公司以来,便扎根于功能测试岗位,一晃便是近四年的光阴。今年8月,我如梦初醒,意识到长时间待在舒适的环境中,已让我变得不思进取,技术停滞不前。更令…...
比较好的知识点
2023年Java超全面试题及答案解析---https://blog.csdn.net/qq_42301302/article/details/128785274 7分钟带你细致解析4个Java算法必刷题---https://blog.csdn.net/hcxy2022/article/details/127963797 50道JAVA基础算法编程题【内含分析、程序答案】---https://blog.csdn.net/…...

抖音开放平台的订单类API接口调用测试指南(内含详细步骤)
一、什么是抖音开放平台 抖音开放平台基于抖音母体,提供抖音服务基础设施和创新行业解决方案的平台。同时满足各类各类机构、创作者及服务商对于内容获取、分享的个性化需求,我们诚邀各个行业、不同阶段的合作伙伴与我们一起,共建内容良性生…...
HiveSQL一本通 - 案例实操
文章目录 0.HiveSQL一本通使用说明6.综合案例练习之基础查询6.1 环境准备创建数据表数据准备加载数据 6.2 简单查询练习1.查询姓名中带“山”的学生名单2.查询姓“王”老师的个数3.检索课程编号为“04”且分数小于60的学生的分数信息,结果按分数降序排列4.查询数学成…...

Axure RP 8中文---快速原型设计工具,一站式解决方案
Axure RP 8是一款专业的快速原型设计工具,以其直观易用的界面和丰富的功能受到广大用户的青睐。它支持用户通过拖放操作快速创建交互式原型,包括线框图、流程图等,并具备高保真度的设计能力。Axure RP 8还提供了团队协作和共享功能࿰…...
Available platform plugins are: minimal, offscreen, webgl, windows.
我在运行pyqt5开发的代码时,报错: This application failed to start because no Qt platform plugin could be initialized, Reinstalling the application may fix this problem. Available platform plugins are: minimal, offscreen, webgl, windows…...

创意无限,风险有度:2024愚人节海外网红营销策略解析
2024年愚人节即将到来,这个充满趣味与惊喜的节日,既是人们展示幽默与创意的舞台,也是品牌进行营销活动的绝佳时机。在这个特殊的日子里,通过海外网红营销来推广品牌或产品,无疑是一种富有创意的营销策略,但…...
深入理解 Session、Cookie 和 Token:网络安全和身份验证的重要概念
深入理解 Session、Cookie 和 Token:网络安全和身份验证的重要概念 在当今数字化的世界中,网络安全和身份验证是至关重要的议题。为了实现这些目标,我们常常使用诸如 Session、Cookie 和 Token 等概念。这些概念在 Web 开发、网络通信和安全…...
镜像站汇总
软件镜像站 查看linux版本,常见有centos, ubuntu, Debian cat /etc/os-release去清华软件源帮助页面,查找对应源设置方案(需要结合具体的系统版本),常用: Debian https://mirrors.tuna.tsinghua.edu.cn/help/debian/ 需要选则系…...

设计模式之抽象工厂模式解析
抽象工厂模式 1)问题 工厂方法模式中的每个工厂只生产一类产品,会导致系统中存在大量的工厂类,增加系统的开销。 2)概述 a)产品族 和 产品等级结构 产品等级结构:产品的继承结构; 产品族&…...

【毕设级项目】基于ESP8266的家庭灯光与火情智能监测系统——文末源码及PPT
目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …...
UnityShader(十九) AlphaBlend
上代码: Shader "Shader入门/透明度效果/AlphaBlendShader" {Properties{_MainTex ("Texture", 2D) "white" {}_AlphaScale("AlphaScale",Range(0,1))1.0}SubShader{Tags { "RenderType""Transparent&quo…...

3D Tiles语义分割流水线
Dylan Chua 和 Anne Lee 开发了一个处理管线,用于对 3D Tiles 中包含的 GL 传输格式 (glTF) 模型进行语义分割。 该管道读取并遍历 3D Tileset,以输出包含元数据的经过转换的划分对象集。 该项目为 3D 语义分割器提供了最小可行产品,作为各种…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...