- 博客(15)
- 收藏
- 关注
原创 数据库系列-企业级解决方案
一、缓存预热为什么要进行缓存预热?缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!怎么做?前置准备工作:日常例行统计数据访问记录,统计访问频度较高的热点数据利用LRU数据删除策略,构建数据留存队列 例如:storm与kafka配合准备工作:将统计结果中的数据分类,根据级别,redis优先加载级别较高的热点数据利用分布式多服务器同时进行数据读取,提速数据加载过程热点数据主从同时预
2021-02-25 15:31:57
155
原创 数据库系列-Redis集群
一、主从复制多台服务器的连接方案读写分离:数据提供方master(主服务器、主节点、主库)负责写,写的时候自动同步到slave中数据接收方slave(从服务器,从节点,从库)负责读二者是相对的概念,核心工作就是master的数据复制到slave中主从复制主从复制即将master中的数据即时、有效的复制到slave中特征:一个master可以拥有多个slave,一个slave只对应一个master作用读写分离:master写、slave读,提高服务器的读写负载能力负载均衡:基于主从结构
2021-02-25 14:42:51
158
原创 数据库系列-Redis高级数据类型
Bitmaps基础操作getbit key offset// 获取指定key对应偏移量上的bit值setbit key offset value//设置指定key对应偏移量上的bit值,value只能是1或0扩展操作bitop op destKey key1 [key2...]//对指定key按位进行交、并、非、异或操作,并将结果保存到destKey中bitcount key [start end]//统计指定key中1的数量HaperLogLogHyperLogLog 是用来
2021-02-24 15:37:55
137
原创 数据库系列-Redis删除策略
时效性数据存储结构Redis中的数据,在expire中以哈希的方式保存在其中。其value是数据在内存中的地址,filed是对应的生命周期数据删除策略的目标在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成整体redis性能的下降,甚至引发服务器宕机或内存泄露数据删除策略定时删除创建一个定时器,当key设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作优点:节约内存,到时就删除,快速释放掉不必要的内存占用缺点:CPU压力很大,无论CPU此时负载量多高,均占用CPU
2021-02-24 14:45:47
199
原创 数据库系列-Redis事务
什么是Redis事务redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个整体(一个队列)。当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰。一个队列中,一次性、顺序性、排他性的执行一系列命令事务的基本操作开启事务multi:设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中,使用 multi命令后可以输入多个命令执行事务exec:设定事务的结束位置,同时执行事务。与multi成对出现,成对使用(加入事务的命令暂时进入到任务队列中,并没有立即执行,只有
2021-02-24 10:26:22
93
原创 数据库系列-Redis持久化
什么是持久化利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。以此来防止数据的意外丢失,确保数据安全性。持久化过程保存的是什么RDB(snapshotting快照)(1)简介:将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据,是 Redis 默认采用的持久化方式(2)启动方式:【1】save:手动执行一次保存操作,save指令的执行会阻塞当前Redis服务器,直到当前RDB过程完成为止,有可能会造成长时间阻塞,线上环境不建议使用
2021-02-23 21:34:41
120
原创 数据库系列-Redis通用指令
key通用指令key是一个字符串,通过key获取redis保存的数据key常用操作del keyexists keytype keyexpire key seconds 有效期控制pexpire key millisecondsttl key 获取有效期pttl keykeys pattern 查询(* 匹配任意符号;?匹配一个任意符号;[ ]匹配一个是定符号)rename key newkey 改名sort key 对所有key排序数据库通用操作select
2021-02-18 18:46:37
77
原创 数据库系列-Redis简介
RedisRedis是一种高性能的非关系型的键值对数据库。Redis特征数据间没有必然联系单线程的工作机制高性能支持多种数据类型:string、list、hash、set、sorted-set常用数据类型数据存储格式:自身是map,采用key:value存储数据string(1)存储:存储单个数据,一个空间保存一个数据,常用存储字符串(2)基本操作:set key value[mset key1 value1 (key2 value2…)]get key [mget k
2021-02-18 15:44:58
229
原创 数据库系列-查询性能优化
一、为什么要优化查询性能1、因为每一个查询指令都是一个子任务,执行每个子任务都需要花费时间,优化查询的目的就是减少子任务的数量或者让子任务运行更快2、查询的生命周期从客户端到服务器,在服务器上解析,生成执行计划,然后执行,返回结果到客户端,其中执行是最重要的阶段二、优化数据访问查询慢的原因1)数据库请求了不需要的数据:查询不需要的记录、多表关联时返回全部列、总是取出全部列2)MySQL扫描额外的记录理想情况下扫描的行数和返回的行数应该相同一般MySQL能用以下三种方式应用WHERE条
2021-01-26 18:42:15
700
原创 数据库系列-Schema与数据类型优化
一、选择优化的数据类型数据类型选择的原则尽量使用可以正确存储数据的最小数据类型简单就好尽量避免null,可用null的列需要更多的存储空间数据类型○ 整型:TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 分别使用 8, 16, 24, 32, 64 位存储空间,一般情况下越小的列越好。INT(11) 中的数字只是规定了交互工具显示字符的个数,对于存储和计算来说是没有意义的。○ 浮点数FLOAT 和 DOUBLE 为浮点类型,DECIMAL 为高精度小
2021-01-25 10:56:23
115
原创 数据结构与算法笔记-链表-力扣141
题目环形链表给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。思路双指针,快指针和慢指针,慢指针指向头节点,一次走一步;快指针指向头节点的下一个节点(方便进入循
2021-01-10 19:38:30
99
原创 数据结构与算法笔记-链表-力扣237
题目:删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.思路将删除节点的值用其下一个节点的值覆盖掉,删除节点的下一个节点指向下一个节点的下一个节点注意:因为
2021-01-09 12:11:10
109
原创 数据结构与算法笔记-二分查找-力扣410
题目:分割数组的最大值给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。思路用子数组各自和的最大值作为标定进行二分查找。边界的确定,考虑两种极端情况:每个子数组均只有一
2021-01-09 10:13:36
94
原创 数据结构与算法笔记-二分查找-力扣1011
题目:在 D 天内送达包裹的能力传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。思路以船容量为标定进行二分查找,最小船容量(左边界)为数组中的最大值,对应每天运输一条船;最大船容量(右边界)为数组和,对应一次都运输走的情况,用二分查找的模板(找一个模糊值的模板),注意搜索区域的缩减
2021-01-08 21:19:00
171
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人