![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
小廖同学
个人博客网址http://xiaoliaozi.com/
上面记录了自己学习的一些笔记
欢迎大家访问
展开
-
Redis缓存模式
Redis缓存模式Cache Aside 更新方式先更新数据库,再更新缓存。这种做法最大的问题就是两个并发的写操作导致脏数据。如下图(以Redis和Mysql为例),两个并发更新操作,数据库先更新的反而后更新缓存,数据库后更新的反而先更新缓存。这样就会造成数据库和缓存中的数据不一致,应用程序中读取的都是脏数据。先删除缓存,再更新数据库。这个逻辑是错误的,因为两个并发的读和写操作...原创 2019-12-03 17:30:47 · 1053 阅读 · 0 评论 -
Redis缓存
关于Redis缓存Redis缓存的架构基本缓存 多级缓存Redis缓存的数据类型在设计缓存的数据时,可以缓存以下类型的数据一个数值例如:验证码用户状态如:user:{user_id}: enable数据库记录Caching at the object level以数据库对象的角度考虑, 应用更普遍例如, 用户的基本信息...原创 2019-12-03 17:19:25 · 484 阅读 · 0 评论 -
Redis缓存穿透与缓存雪崩
Redis缓存穿透与缓存雪崩缓存穿透缓存只是为了缓解数据库压力而添加的一层保护层,当从缓存中查询不到我们需要的数据就要去数据库中查询了。如果被黑客利用,频繁去访问缓存中没有的数据,那么缓存就失去了存在的意义,瞬间所有请求的压力都落在了数据库上,这样会导致数据库连接异常。解决方案:约定:对于返回为NULL的依然缓存,对于抛出异常的返回不进行缓存,注意不要把抛异常的也给缓存了。采用这种...原创 2019-12-03 17:16:56 · 72 阅读 · 0 评论 -
Redis的过期策略与淘汰策略
Redis的过期策略与淘汰策略有效期设置有效期的作用:节省空间做到数据弱一致性,有效期失效后,可以保证数据的一致性内存淘汰策略两种算法思想LRULRU(Least recently used,最近最少使用)LRU算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。基本思路新数据插入到列表头部;每当缓存命...原创 2019-12-03 17:12:47 · 232 阅读 · 0 评论 -
Redis高级学习
Redis高级学习Redis事务基本事务指令Redis提供了一定的事务支持,可以保证一组操作原子执行不被打断,但是如果执行中出现错误,事务不能回滚,Redis未提供回滚支持。multi 开启事务exec 执行事务使用multi开启事务后,操作的指令并未立即执行,而是被redis记录在队列中,等待一起执行。当执行exec命令后,开始执行事务指令,最终得到每条指令的结果。如果事务中...原创 2019-12-01 21:05:27 · 110 阅读 · 0 评论 -
数据库相关理论
数据库相关理论复制集与分布式复制集(Replication)数据库中数据相同,起到备份作用高可用 High Available HA分布式(Distribution)数据库中数据不同,共同组成完整的数据集合通常每个节点被称为一个分片(shard)高吞吐 High Throughput复制集与分布式可以单独使用,也可以组合使用(即每个分片都组建一个复制集)...原创 2019-11-26 20:07:23 · 1092 阅读 · 0 评论 -
Redis操作(全)
1.nosql介绍NoSQL:一类新出现的数据库(not only sql), 泛指非关系型的数据库特点: 1.不支持SQL语法 2.nosql中存储的数据都是KV形式。 python 中的字典 3.NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景NoSQL种类: 1.Mongodb 2.Redis 3.Hbase hadoop...原创 2019-11-26 20:02:08 · 289 阅读 · 0 评论 -
数据库索引原理
数据库的索引数据库索引:是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的...原创 2019-11-26 20:00:57 · 372 阅读 · 0 评论 -
MySQL中的索引
MySQL中的索引索引的介绍索引在MySQL中也叫做“键”,它是一个特殊的文件,它保存着数据表里所有记录的位置信息,更通俗的来说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。应用场景:当数据库中数据量很大时,查找数据会变得很慢,我们就可以通过索引来提高数据库的查询效率。索引的使用查看表中已有索引:show index from 表名;说明:主键列会自动创...原创 2019-11-26 19:59:12 · 191 阅读 · 0 评论 -
Mysql外键约束
Mysql外键约束外键作用:保持数据完整性CASCADE在父表上update/delete记录时,同步update/delete掉子表的匹配记录ON DELETE:删除主表时自动删除从表。删除从表,主表不变;ON UPDATE:更新主表时自动更新从表。更新从表,主表不变;SET NULL在父表上update/delete记录时,将子表上匹配记录的列设为null (要注...原创 2019-11-26 19:57:52 · 487 阅读 · 0 评论 -
数据库浅谈优化
SQL优化sql查询优化避免全表扫描,应考虑在 where 及 order by 涉及的列上建立索引;查询时使用select明确指明所要查询的字段,避免使用select *的操作;SQL语句尽量大写,如SELECT name FROM t WHERE id=1对于小写的sql语句,通常数据库在解析sql语句时,通常会先转换成大写再执行。尽量避免在 where 子...原创 2019-11-26 19:55:10 · 78 阅读 · 0 评论 -
MySQL事务
MySQL事务事务的概念和特点事务,就是”要完成的一件事情”,比如转账,做饭,洗澡等等;做一件事情通常由多个步骤组成,如果某个步骤失败,那么这件事情将不会完成;事务Transaction,是指作为一个基本工作单元执行的一系列SQL语句的操作,要么完全的执行,要么完全的都不执行。事务隔离级别事务隔离级别指的是在处理同一个数据的多个事务中,一个事务修改数据后,其他事务何时能看到修改...原创 2019-11-26 19:54:14 · 785 阅读 · 0 评论 -
MySQL操作(全2)
学习目标1.能够知道数据库的作用 用来持久化存储和快速读取数据的2.能够完成MySQL数据库的安装 sudo apt-get install mysql # ubuntu下服务器端的安装 sudo apt-get install mysql-client3.能够知道数据类型和数据约束的作用 1.数据类型,可以指定存储的大小和字段类型。 2.not null, default, p...原创 2019-11-26 19:52:10 · 165 阅读 · 0 评论 -
MySQL操作(全1)
学习目标mysql第一天: 知道使用一张表可以实现自连接查询1.能够知道数据库设计三范式 1NF: 不能拆分 2NF: 不能部分依赖主键,应该全部依赖 3NF: 不能传递依赖2.知道drop foreign key可以删除外键约束 alter table sutdents drop foreign key 外键名称 3.能够写出分组和聚合函数组合使用的SQL语句select ...原创 2019-11-26 19:51:15 · 90 阅读 · 0 评论 -
数据库设计之三范式
数据库设计之三范式设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的数据库数据冗余越小。数据冗余是值数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。第一范式 1NF :强调的是字段的原子性,即一个字段不能分成其它几个字段;第二范式 2NF:满足第一范式的基础上,另外包含一个主键,非主键必须完全依赖主键;...原创 2019-11-25 20:56:08 · 145 阅读 · 0 评论 -
数据库初步了解
数据库初步了解概念数据库是用户计算机上一些具有特殊格式的数据文件的集合,就是存储和管理数据的仓库,数据按照一定的格式进行存储,用户可以对数据库中的数据进行增加、修改、删除、查询等操作。特点持久化存储读写速度极高保证数据的有效性对程序支持非常好,容易扩展分类关系型数据库:是指采用了关系模型来组织数据的数据库,简单来说,关系模型指的就是二维表格模型,好...原创 2019-11-25 20:54:58 · 194 阅读 · 0 评论 -
理解ORM
理解ORMORM简介对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。ORM的概念让我们从O...原创 2019-11-25 20:53:33 · 315 阅读 · 0 评论 -
MYSQL数据库引擎
MYSQL数据库引擎数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。SHOW ENGINES # 命令来查看MySQL提供的引擎SHOW VARI...原创 2019-11-25 20:52:16 · 113 阅读 · 0 评论 -
Mysql常见操作
MySQL 学习安装mysqlsudo apt_get install mysql-service:安装MySQL数据库服务端sudo apt_get install mysql-client:安装MySQL数据库客户端sudo service mysql start 启动MySQL服务ps -ajx|grep mysql :命令查看数据库客户端开启状态-a 显示所有用户进程 -...原创 2019-11-25 20:49:06 · 99 阅读 · 0 评论 -
MySQL读写分离
MySQL读写分离场景我们的项目中已经存在非常多的数据库表了,数据量也会逐渐增多,所以我们需要做一些数据库的安全和性能的优化。对于数据库的优化,我们选择使用MySQL读写分离实现。涉及内容包括主从同步和Django实现MySQL读写分离。MySQL主从同步主从同步机制主从同步介绍和优点在多台数据服务器中,分为主服务器和从服务器。一台主服务器对应多台从服务器。主服务器...原创 2019-10-23 22:25:28 · 210 阅读 · 0 评论 -
redis数据结构之哈希
redis数据结构之hash请看官方文档:哈希表Redis的Hash实际是内部存储的Value为一个HashMap,并提供了直接存取这个Map成员的接口,也就是说,Key仍然是用户ID, value是一个Map,这个Map的key是成员的属性名,value是属性值,这样对数据的修改和存取都可以直接通过其内部Map的Key(Redis里称内部Map的key为field), 也就是通过 ke...原创 2019-11-08 14:54:39 · 202 阅读 · 0 评论 -
Redis学习
NoSQL学习1.NoSQL:一类新出现的数据库(not only sql)特点:泛指非关系型的数据库不支持SQL语法存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景NoSQL中的产品种类相当多:RedisMongodbHbase hado...原创 2019-09-14 17:32:37 · 122 阅读 · 0 评论