Redis快速入门(基础篇)

简介:

  • 是一个高性能的 key-value数据库。

  • 存在内存中

  • 与其他 key-value 缓存产品有以下三个特点:

    1. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

    2. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

    3. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

Redis优势:

  1. 高性能

  2. 丰富的数据类型

  3. 原子性

  4. 丰富的特性

redis能干嘛?

与传统数据库MySQL关系:

  • Redis是key-value数据库(NoSQL)的一种,MySQL是关系型数据库

  • Redis数据操作主要在内存,而MySQL主要存储在磁盘

  • Redis在某一场景使用中要明显优于MySQL,比如计数器,排行榜方面

  • Redis通常用于一些特定场景,需要与MySQL一起配合使用

注意:两者并不是相互替代和竞争关系,而是共用和配合

日常使用Linux装redis,使用Linux进行开发

  • Linux环境安装redis必须先具备gcc编译环境

  • 什么是gcc:是Linux下的一个编译程序,是c程序的编译工具。

  1. yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
    yum -y install wget httpd-tools vim
  2. 在window上下载了redis后,使用xfile将其放到linux的 /opt 目录下

  3. 进入到 /opt 目录使用

    tar-zxvf 你的redis压缩包
  4. cd 到 解压后的 redis 目录

  5. 使用

    make && make install

    安装

  6. 会默认安装到

    usr/local/bin
  7. 修改 redis7.conf 文件

    • 让 redis 在后台启动

      daemonize no  改为  daemonize yes
    • protected-mode yes  改为  protected-mode no
    • 允许其他机器访问

      注释 bind 127.0.0.1 -::1
    • 设置redis访问密码

      打开注释

      requirepass 你的密码
  8. 运行redis服务器

    redis-server /myredis/redis7.conf

    出现如下报错:

    67147:C 28 Oct 2023 20:46:34.584 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://githu

    解决方法:

    1. 进入到 /etc/sysctl.conf 文件

    2. 添加

      vm.overcommit_memory=1
    3. 使用命令:

      vm.overcommit_memory=1

      使配置文件生效

  9. 检查端口6379是否被占用:

    ps -ef|grep redis|grep -v grep
  10. 启用redis

     redis-cli -a 123456
  11. 测试

  1. redis服务器关闭方法:

    • 直接在端口号处 SHUTDOWN, 然后quit

    • 远程关闭:

      • 单实例:

        redis-cli -a 123456 shutdown
      • 多实例:

        redis-cli -a 123456 -p 希望关闭的端口号 shutdown 

redis10大数据类型

  1. redis字符串(String

    • 同时设置/获取多个键值

      • mset

      • mget

      • msetnx(可以理解为事务整体,成功则全成功,失败一个则全部失败)

    • 获取指定区间范围内的值

      • getrange

      • setrange

    • 数值增减(一定要是数字

      • 递增数字:INCR key

      • 增加指定的整数:INCRBY Key increment(比如:INCRBY key1 5)

      • 递减数值 DECR key

      • 减少指定的整数 DECR key decrement

    • 获取字符串长度和内容追加:

      • STRLEN key

      • APPEND key value

    • 分布式锁

      • setnx key value

      • setex(set with expire)键秒值/setnx(set if not exist)

    • getset(先get再set)

  1. redis列表(List)

    • 是一个双端链表的结构容量是2的32次方-1大概40多个亿,主要功能有pop/push等,一般用在栈,消息队列等

    • lpush/rpush/lrange

    • lpop/rpop

    • 按照索引下标获得元素(从上到下); lindex

    • 获取列表中元素个数; llen

    • 删除N个值等于v1的元素; lrem key 数字N给定值v1

    • 截取指定范围的值后再赋值给key ;ltrim key 开始index 结束1index

    • rpoploush 源列表 目的列表 (将源列表的末尾值pop,然后将该值添加到目的列表的头)

    • lset key index value

    • linsert key before/after 已有值 插入的新值

  2. redis哈希表(Hash)

    • KV模式不变,但是v是一个新的键值对 Map<String, Map<String, object>>

    • hset/hget/hmset/hmget/hgetall/hdel

    • hlen 获取某个key内的全部数量

    • hexists key 在key里面某个值的key

    • hkeys/hvals

    • hincrby/hincrbyfloat

    • hsetnx

  3. redis集合(Set)

    • 无序无重复

    • 底层是哈希表实现

      • 单值多value,且无重复

      • SADD key member[member ...] 添加元素

      • SMEMBERS key 遍历集合中所有元素

      • SISMEMBER key member 判断元素是否在集合中

      • SREM key member[member ...] 删除元素

      • scard 获取集合里面的元素

      • SRANDMEMBER key [数字] 从集合中随机展现设置的数字个数元素,元素不删除

      • SPOP key[数字] 弹出栈

      • SMOVE key1 key2 在key1已存在的某个值 将key1里已存在某个值付给key2

      • 集合运算

        • 差集 A-B:属于A但不属于B的元素构成的集合 SDIFF keyA [keyB]

        • 集合的并集运算 A ∪ B:属于 A或者属于B的元素构成的集合:SUNION keyA keyB

        • 集合的交集运算 A ∩ B:A,B共有部分

          • SINTER key[key ...]

          • SINTERCARD numkeys key[key ...] [LIMIT limit] (不返回结果集,而只返回结果的基数。返回由所有给定集合的交集产生的集合的基数)

  4. redis有序集合(ZSet)

    • 在set基础上,每个value值前加一个score分数值

    • 添加元素:ZADD key score member [score member ...]

    • 按照元素分数从小到大的顺序返回索引从start到stop之间所有元素:ZRANGE key start stop[WITHSCORES]

    • 按照元素分数从大到小的顺序返回索引从start到stop之间所有元素:ZRERANGE key start stop[WITHSCORES]

    • 获取指定分数范围的元素:ZRANGEBYSCORES key min max [WITHSCORES] [LIMIT offset count]

      • withscores

      • ( 表示不包含

      • limit 作用是返回限制

    • ZSCORE key member 获取元素的分数

    • ZCARD key 获取集合中元素的数量

    • zrem key 某score下对应的value值,作用是删除元素

    • ZINCRBY key increment member 增加讴歌元素的分数,increment为增加分数值

    • ZCOUNT key min max 获得指定分数范围内的元素个数

    • ZMPOP 从键名列表中的第一个非空集排序集中弹出一个或者多个元素,他们是成员分数对

    • ZRANK key values值,获取下标

    • zrerank key values值, 逆序获得下标值

  5. redis地理空间(GEO)

    • GEOADD 多个 经度、纬度、位置名称添加到指定的key中

      • 出现中文乱码需要quit 在登录界面追加 --raw

      • redis-cli -a 123456 --raw
    • GEOPOS 从键里面返回所有给定位置元素的位置(经度和纬度)

    • GEOHASH 返回坐标的geohash表示

    • GEODIST 两个位置间的距离

    • GEORADIUS 以半径为中心查询xxx

      image-20231107211538940

    • GEORADIUSBYMEMBER

  6. redis基数统计(HyperLogLog)

    • 统计某个某个网站UV(UV:Unique Visitor,独立访客,一般理解为客户端ip => 进行去重考虑)

    • 去重复统计功能的基数估计算法-HyperLogLog

    • PFADD key element[element ...] 添加指定元素

    • PFCOUNT key[key ...] 返回给定 HyperLogLog的基数估算值

    • PFMERGE destkey sourcekey [sourcekey ...] 合并多个HyperLogLog

  7. redis位图(bitmap)

    • 是由0和1状态表现的二进制位的bit数组

    • 用String 类型作为底层数据结构实现的一种统计二值状态的数据类型,位图本质是数组

    • setbit key offset value: 解释 setbit 键 偏移位 只能0 或1 btmap偏移量是从0开始的

    • getbit key

    • strlen 统计字节数占用多少(1bit 扩容)

    • bitcount 全部索引里面1占多少

    • bitop

  8. redis位域(bitfield)

    • 将redis字符串看作是 一个由二进制位组成的数组 并且能对变长位宽和任意没有字节对齐的指定整型位域进行寻址和修改。

    • 作用:

      • 位域修改

      • 溢出控制

    • 基本命令:

      • BITFIELD key [GET type offset]

      • BITFIELD key [SET type offset value]

      • BITFIELD key [INCRBY type offset increment]

      • 溢出控制 OVERFLOW [WRAR|SAT|FAI

  9. redis流(Stream)

    • 就是redis版本的mq消息中间件

      • 四个特殊符号:

        • - +: 最小和最大可能出现的id

        • $:表示只消费新的消息,当前流中最大的id,可用于将要来到的消息

        • >:用于 XREADGROUP命令,表示迄今还没有发送给组中使用者的信息,会更新消费组的最后ID

        • *:用于XADD命令中,让系统自动生成id

      • 相关指令:

        • XADD:添加消息到队列末尾

          • 消息id必须大于上个id

          • 默认使用星号表示自动生成规矩

          • * 用于XADD命令中,让系统自动生成id

        • XRANGE:用于获取消息列表(可以指定范围),忽略删除的消息

          • start 表示开始值,-代表最小值

          • end 表示结束值,+代表最大值

          • count 表示最多获取多少个值

        • XREVRANGE

        • XDEL

        • XLEN 用于获取Stream队列的消息长度

        • XTRIM

          • 用于对stream的长度进行截取,如超长会进行截取

          • MAXLEN 允许最大长度,对流进行修剪,限制长度

          • MINID 允许的最小id,从某个id值开始比该id值小将会被抛弃

        • XREAD

          • 用于获取消息(阻塞/非阻塞),只会返回大于指定id的消息

          • 非阻塞

            image-20231107214225201

          • 阻塞

        • XGROUP CREATE 用于创建消费者组

        • XREADGROUP GROUP

          • ">" 表示从第一条尚未被消费的消息开始读取

          • 消费组groupA内的消费组consumer1从mystream消息队列中读取所有消息

          • 但是,不同消费组的消费者可以消费同一条消息

          • XPENDING 查询每个消费组内所有消费者[已读取,但尚未确认] 的消息

          • XACK 像消息队列确认消息已经处理完成

    • redis 键位(key)

    • keys *:查看当前库所有的key

    • exists key:判断某个key是否存在

    • type key:查看你的key是什么类型

    • del key:删除指定的key数据

    • 注意:

    • 命令不区分大小写,而是key区分大小写

    • 帮助命令 help @类型

    • flushdb:清除当前数据库

    • flushall:通杀全部数据库

    • 注意:

    • 命令不区分大小写,而是key区分大小写

    • 帮助命令 help @类型

    • Redis持久化

    • 持化双雄:

      • RDB (Redis DataBase)

      • 如何恢复:

        • 将备份文件(dump.rdb)移动到 redis 安装目录并启动服务即可

        • 备份成功后故意用flushdb清空redis 看看是否可以恢复数据 => 结论:执行flushshell/flushdb命令也会产生dump.rdb文件,但里面是空的,无意义

        • 物理恢复,一定服务和备份分机隔离

      • 手动:Redis提供了两个命令来生产RDB文件,分别是save和bgsave

        • save:在主程序中执行会阻塞当前redis服务器,知道持久化工作完成执行save命令期间,Redis不能处理其他命令,线上禁止使用

        • rdb修复文件,

           redis-check-rdb
    • 如何禁用快照:

      • 动态所有停止RDB保存规则的方法:

        redis-cli config set save ""
      • 配置文件修改

    • 总结:

    • AOF(Append Only File)

    • aof是什么:

      image-20231111091802248

    • 默认情况下,redis是没有开启AOF的,开启AOF功能需要设置配置: appendonly yes

    • aof保存文件是appendonly.aof

    • 工作流程:

  10. 三种写回策略:

  11. Always:同步写回,每个命令执行完立刻同步地将日志写回磁盘

  12. everysec:每秒写回,每个命令执行完,只是先把日志写到AOF文件的内存缓冲区,每隔一秒把缓冲区内容写入磁盘

  13. no:操作系统控制的写回,每个写回命令执行完,只是先把日志写回到AOF文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘

  14. 混合持化
  15. 纯缓存模式:

    • 同时关闭RDB和AOF

      1. save"" 禁用rdb,我们仍然可以使用命令 save,bgsave生成rdb文件

      2. appendonly no 禁用aof,我们仍然可以使用命令 bgrewiteaof 生成aof文件

Redis事务

  • 是什么

    • 可以1次执行多个命令,本质是一组命令集合,一个事务中的所有命令都会序列化,按顺序的串行化执行而不会被其他命令插入,不允许加塞

  • 能干嘛

    • 一个队列中,一次性、顺序性、排他性的执行一系列命令

  • 和传统数据库比较:

使用:

  1. 常用命令:

  2. 正常执行:(MULTI, EXEC)

  3. 放弃事务:(MULTI, DISCARD)

  4. 全体连坐

  5. 冤有头债有主(类似于runtime error, redis不是完全的事务一致性,而且redis没有回滚)

  6. watch监控 :

    • Redis使用Watch来提供乐观锁定,类似于CAS(check and set)

      • 悲观锁

      • 乐观锁

      • CAS
    • watch:

  7. 总结:

    1. 开启:以MULTI开启一个事务

    2. 入队:将多个命令入队到事务中,接到这些命令并不会立即执行,而是放到等待执行的事务队列里

    3. 执行:由EXEC命令触发事务

Redis管道

  1. 是什么:批处理命令变种优化措施,类似于Redis的原生批命令(mget和mset)

  2. 小总结:

  3. Pipeline与原生批量命令对比:

    • 原生批量命令是原子性(mset等),pipeline是非原子性

    • 原生批量命令一次只能执行一种命令,pipeline支持批量执行不同命令

    • 原生批命令是服务端实现,而pipeline需要服务端和客户端共同完成

  4. Pipeline与事务对比

Redis复制

是什么:

  • 主从复制,master以写为主,Slave以读为主

  • 当master数据发生变化的时候,自动将更新的数据异步同步到其他slave数据库

能干嘛

  • 读写分离

  • 容灾恢复

  • 数据备份

  • 水平扩容,支撑高并发

Redis哨兵

  1. 哨兵的作用

    • 监控redis运行状态,包括master和slave

    • 当master宕机后,自动将slave切换成新的master

  2. 能干嘛:

    • 主从监控:监控主从redis库运行是否正常

    • 消息通知:哨兵可以将故障转移的结果发送给客户端

    • 故障转移:如果Master异常,则会进行主从切换,将其中一个Slave作为新的Master

    • 配置中心:客户端通过连接哨兵来获取当前Redis服务的主节点地址

  3. 哨兵一般是集群存在,多数判断master宕机才进行选举

  4. 怎么使用:

    • 配从库不配主库

    • 权限细节:

      • master如果配置了 requirepass参数,需要密码登录

      • slave 就要配置 masterauth 来设置校验密码,否则的话master会拒绝slave的访问请求

    • 基本操作命令

      • info replication 可以查看复制节点的主从关系和配置信息

      • replicaof 主库IP 主库端口

        • 一般写入到redis.conf配置文件内

      • slaveof 主库IP 主库端口

      • slaveof no one

        • 使当前数据库停止与其他数据库的同步,转成主数据库

  5. 缺点:

    1. 复制延时,信号衰减

    2. master挂了,从机会等待

      • ODown客观下线

        image-20231111150159457

      • 当主节点被判断为客观下线后,集群选出一个哨兵领导来做故障迁移

      • 由领导哨兵开始推动故障切换流程并选出一个新master:

        • 新主登基:

          • 某个Slave被选为新master

          • image-20231111150924569

          • image-20231111151049229

        • 群臣俯首:

          • image-20231111151151675

        • 旧主拜服

          image-20231111151237719

    3. Redis集群

    4. 定义:由于数据量过大,单个master复制集团难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Redis的集群,其作用是提供在多个Redis节点间共享数据的程序集。

    5. 集群可以支持多个Master

    6. Springboot集成Redis

    7. 总体概述:jedis-lettuce-RedisTemplate三者的联系

    8. 集成Jedis:

      • 是什么:

        image-20231111180245133

      • 步骤:

        1. 建module

        2. 改POM

        3. 写YML

        4. 主启动

        5. 业务类

    9. 集成lettuce

      • image-20231111191730399

    10. 能干嘛:

      • Redis集群支持多个Master,每个Master又可以挂载多个Slave

        • 读写分离

        • 支持数据的高可用

        • 支持海量数据的读写存储操作

        • 由于Cluster自带Sentinel的故障转移机制,内置了高可用的支持,无需再去使用哨兵功能

        • 客户端与Redis的节点链接,不再需要连接集群中所有节点,只需要任意连接集群中的一个可用节点即可

        • 槽位slot负责分配到各个物理服务节点,由对应的集群来负责维护节点、插槽和数据之间的关系

      • 集群算法-分片-槽位slot

        • redis集群的槽位slot

          image-20231111153303506

      • redis集群的分片

        • image-20231111153515476

      • 优势:

        • 方便扩容、缩容和数据查找

          image-20231111153730233

      • slot槽位映射,一般业界有三种解决方案:

        1. 哈希取余分区

          • 优点

            image-20231111154101433

          • 缺点

            image-20231111154156935

        2. 一致性哈希算法分区

          • 是什么:分布式缓存数据 变动和映射问题,某个机器宕机了,分母数量改变了,自然取余数不ok了

          • 能干嘛:提出一致性Hash解决方案。目的是当服务器个数发生变化时,尽量减少影响客户端到服务器的映射关系

          • 三大步骤

            1. 算法构建一致性哈希环

            2. 服务器IP节点映射

              image-20231111154909183

            3. key落到服务器的落键规则

          • 一致性哈希算法容错性

            • image-20231111155113776

          • 一致性哈算算法的扩展性

            • image-20231111155156031

          • 缺点:Hash环的数据倾斜问题

            image-20231111155247379

        3. 哈希槽分区

        4. 为什么redis集群的最大槽数是16384个

          image-20231111155704713

          image-20231111155915313

          image-20231111155927801

          image-20231111155956197

        5. Redis集群 不保证强一致性,这意味着在特定条件下,Redis集群可能会丢掉一些被系统收到的写入请求命令

      • 集群环境案例步骤

        image-20231111162445169

        image-20231111165301686

      • image-20231111165311963

      • image-20231111165444368

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/149985.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自动备份pgsql数据库

bat文件中的内容&#xff1a; PATH D:\Program Files\PostgreSQL\13\bin;D:\Program Files\7-Zip set PGPASSWORD**** pg_dump -h 8.134.151.187 -p 5466 -U sky -d mip_db --schema-only -f D:\DB\backup\%TODAY%-schema-mip_db_ali.sql pg_dump -h 8.134.151.187 -p 5466…

BUUCTF 面具下的flag 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 下载附件&#xff0c;得到一张.jpg图片。 密文&#xff1a; 解题思路&#xff1a; 1、将图片放到Kali中&#xff0c;使用binwalk检测出隐藏zip包。 使用foremost提取zip压缩包到output目录下 解压zip压缩包&…

python自动化第一篇—— 带图文的execl的自动化合并

简述 最近接到一个需求&#xff0c;需要为公司里的一个部门提供一个文件上传自动化合并的系统&#xff0c;以供用户稽核&#xff0c;谈到自动化&#xff0c;肯定是选择python&#xff0c;毕竟python的轮子多。比较了市面上几个用得多的python库&#xff0c;我最终选择了xlwings…

【自然语言处理(NLP)实战】LSTM网络实现中文文本情感分析(手把手与教学超详细)

目录 引言&#xff1a; 1.所有文件展示&#xff1a; 1.中文停用词数据&#xff08;hit_stopwords.txt)来源于&#xff1a; 2.其中data数据集为chinese_text_cnn-master.zip提取出的文件。点击链接进入github&#xff0c;点击Code、Download ZIP即可下载。 2.安装依赖库&am…

聊聊模糊测试,以及几种模糊测试工具的介绍!

以下为作者观点&#xff1a; 在当今的数字环境中&#xff0c;漏洞成为攻击者利用系统漏洞的通道&#xff0c;对网络安全构成重大威胁。这些漏洞可能存在于硬件、软件、协议实施或系统安全策略中&#xff0c;允许未经授权的访问并破坏系统的完整性。 根据 "常见漏洞与暴露…

在Linux中nacos集群模式部署

一、安装 配置nacos 在Linux中建立一个nacos文件夹 mkdir nacos 把下载的压缩包拉入刚才创建好的nacos文件中 解压 tar -zxvf nacos-server-1.4.1\.tar.gz 修改配置文件 进入nacos文件中的conf文件的cluster.conf.example 修改cluster.conf.example文件 vim cluster.conf.exa…

Django(六、模板层)

文章目录 模板传值模板语法传值特性 模板语法之过滤器常用的过滤器模板层之标签模板中的标签的格式为标签之if判断 标签之for循环模板的继承与导入模板导入导入格式 模板传值 """ 模板层三种语法 {{}}:主要与数据值相关 {%%}:主要与逻辑相关 {##}&#xff1a;模…

【开源】基于Vue和SpringBoot的快乐贩卖馆管理系统

项目编号&#xff1a; S 064 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S064&#xff0c;文末获取源码。} 项目编号&#xff1a;S064&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 搞笑视频模块2.3 视…

Linux常用的磁盘使用情况命令汇总

1、查看分区使用百分比 df -h 2、查看指定目录磁盘使用情况 du -hac --max-depth1 /opt 参数&#xff1a;-a 查看所有文件&#xff0c;-c 汇总统计&#xff0c;max-depth1 查看深度为1&#xff0c;2级目录不再统计。 3、常用统计命令汇总

一键帮您解决win11最新版画图工具难用问题!

&#x1f984;个人主页:修修修也 ⚙️操作环境:Windows 11 正文 自从win11更新后,新版的画图工具变得非常难用,如: 使用橡皮擦后露出背版马赛克 框住某部分拖动移动时背景露出马赛克剪贴板上图片信息无法直接插入到画图板 目前没有一个好一些的能够在软件内部解决这些问题的方…

参考意义大。4+巨噬细胞相关生信思路,简单易复现。

今天给同学们分享一篇生信文章“Angiogenesis regulators S100A4, SPARC and SPP1 correlate with macrophage infiltration and are prognostic biomarkers in colon and rectal cancers”&#xff0c;这篇文章发表在Front Oncol期刊上&#xff0c;影响因子为4.7。 结果解读&a…

软件测试个人求职简历该怎么写,模板在这里

1、个人资料 姓 名&#xff1a;xxx 性 别&#xff1a;x 手机号码&#xff1a;138888888xx 邮 箱&#xff1a; xxx 学 历&#xff1a;本科 专 业&#xff1a;电子商务 英 语&#xff1a;四级 当前工作&#xff1a;测试工程师 从业时间&#xff1a;4年 期望薪资&#xff1a;…

HDFS入门--学习笔记

1&#xff0c;大数据介绍 定义 数据指的是&#xff1a;一种可以被鉴别的、对客观事件进行记录的符号&#xff0c;除了可以是最简单的 数字外&#xff0c;也可以是各类符号、文字、图像、声音等。 通俗地说&#xff0c;数据就是对人类的行为及发生事件的一种记录。 存在的价值…

使用群晖虚拟机快速搭建黑群晖并在公网移动端环境下使用软件

文章目录 前言本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是前排提醒&#xff1a; 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机&#xff1a;1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…

Mysql中的索引与事务和B树的知识补充

索引与事务和B树的知识补充 一.索引1.概念2.作用3.使用场景4.使用 二.事务1.为什么使用事务2.事务的概念3.使用3.1脏读问题3.2不可重复读3.3 幻读问题3.4解决3.5 使用代码 三.B树的知识补充1.B树2.B树 一.索引 1.概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记…

QGIS之二十栅格数据定义投影

效果 步骤 1、准备数据 2、定义投影 Qgis工具箱中搜索“投影” 指定投影坐标系&#xff0c;例如EPSG&#xff1a;4549 运行 3、结果 查看属性

【Qt-23】基于QCharts绘制曲线图

一、QChart简介 QChart是Qt中专门用于绘制图表的模块&#xff0c;支持折线图、柱状图、饼图等常见类型。其主要组成部分有&#xff1a; QChart&#xff1a;整个图表的容器&#xff0c;管理图表中的所有数据和图形属性QChartView&#xff1a;继承自QGraphicsView&#xff0c;用于…

day2324_jdbc

今日内容 零、 复习昨日 一、作业 二、SQL注入 三、PreparedStatement 四、事务 五、DBUtil 零、 复习昨日 一、引言 1.1 如何操作数据库 使用客户端工具访问数据库&#xff0c;需要手工建立连接&#xff0c;输入用户名和密码登录&#xff0c;编写 SQL 语句&#xff0c;点击执行…

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.15)

1.任务所需实现基本功能 关机状态时白灯亮蓝灯灭&#xff0c;此时长按按键无反应&#xff0c;白灯亮度降低的状态&#xff0c;蓝灯保持灭的状态。点按按键一次&#xff0c;白灯熄灭&#xff0c;蓝灯亮此时W引脚控制的灯亮。继续点按按键。蓝灯亮&#xff0c;此时W引脚控制的灯…