自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 CAP原理

采用Raft算法实现,有服务发现,key/value存储,可以做配置中心使用,有健康检查,同时提供了web管理界面。分区容错(Partition tolerance )系统中任意信息的丢失或失败不会影响系统的继续运作。-client 客服端,无状态,将http和DNS请求转发到服务端集群。php接入consul: consul service。-server 服务端,保存配置信息,搭建高可用集群。-dev 开发环境下启动,提供了基本的服务。consul 的 服务注册及服务发现。保证一致性和分区容错。

2024-06-28 15:05:10 252

原创 hotkey和bigkey会有的问题

Hash类型:成员的数据量过大,它的成员数量虽然只有1000个但这些成员的Value总大小为100 MB。使用unlink代替del命令,异步删除,不会阻塞主线程。String类型:根据数据量,value值超过10KB。List类型:根据列表大小,列表大小超过20000。list set zset hash可以分批次删除。redis客户端可以用bigkeys命令来查找。Set类型:根据成员多少,成员超过10000。

2023-12-02 15:02:08 32

原创 高并发下数据不一致

不考虑高并发时,使用锁可以彻底的解决问题。mysql同步到redis时出现延迟,会造成双写不一致。更新数据库效率远远大于读数据库(更新快,查询慢)修改数据,先mysql后同步redis。第二次删除失败,可以放到队列中循环删除。查询数据:先redis后mysql。

2023-12-02 14:35:16 21

原创 redis 布隆过滤器原理

布隆过滤器早在1970就提出了,一直沿用到现在,它主旨是采用一个很长的二进制数组,并通过一系列的hash函数来确定该数据是否存在。布隆过滤器原理:创建长度为100的数组,全值都为0。还有无法判断数据一定存在,另外还有一个重要缺点,无法删除数据。查询数据时,同样进行hash,对比长度100的数组,其值为1时存在,其值为0时一定不存在。二进制组成的数组,占用内存极少,并且插入和查询速度都足够快。存入数据,进行多次hash,对返回的hash值修改为1。【数据不存在,一定是不存在的。数据存在,可能存在】

2023-12-02 11:40:06 21

原创 redis穿透雪崩击穿

正常的访问流程。

2023-12-02 10:24:34 20

原创 Redis 高可用集群

Redis集群是一种通过将多个Redis节点连接在一起以实现高可用性、数据分片和负载均衡的技术。它允许Redis在不同节点上同时提供服务,提高整体性能和可靠性。根据搭建的方式和集群的特性,

2023-12-02 09:12:08 32

原创 redis持久化

因为redis的数据是保存在内存中的,因此重启服务器,数据就会丢失。redis提供了数据持久化方案。redis将数据保存到磁盘上,假如服务器重启后,通过磁盘中的文件恢复到内存中就可以了。

2023-12-01 15:23:04 20 1

原创 redis中的事务

6.0优化后,worker线程主要负责计算,其他3核进行读取和返回 配置文件默认不开启io-threads【IO thread】可以通过配置文件开启 io-threads 4 io-threads-do-redis yes。watch,监视某个键值对,它的作用是在事务执行之前如果监视的键值被修改,事务会被取消。exec时,命令要么执行,要么都不执行,批量操作不会检查语法。lpop b 没有语法错误,执行后,有命令报错,也会执行完。redis事务要么执行,要么都不执行。提交后的命令,一定会执行。

2023-12-01 10:06:49 23 1

原创 redis数据库数据类型和底层类型

不仅分配必要的空间还好分配额外的空间,下次修改时会先判断未使用的空间是否够用,满足直接添加,不满足再进行扩充。c是没有字符串长度的,相邻的两个字符串的存储有可能是紧挨着的,当一个字符串变长时就没有办法放下,只能侵占后一个字符串的空间。Redis的set是无序的,自动去重的数据类型,它的底层是一个字典dict。ziplist可以在配置文件【redis.conf】中通过zset-max-ziplist-entries和zset-max-ziplist-value来配置,使用ziplist。

2023-11-30 17:51:10 18

原创 数据库中间件

MyCat是目前最流行的分布式数据库中间插件,是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。Jdbc直连,相当于增强JDBC包,对所有的数据库操作语句按照特定的要求分发到不同的库中。

2023-11-29 21:30:52 16 1

原创 一致性hash算法

根据11取模,因为分子发生了变化,所以取模的值都变化,旧数据需要重新计算,影响比较大。对数据key求hash值,然后放到环中,在按照顺时针方向找到最近的节点,保存到上面。hash值是非负的整数,值的范围构成一圆环,值为2^32。根据10取模,数据1保存到节点1上,数据2保存到节点2上。集群节点按照一定规则求hash值,然后放到环中。

2023-11-29 20:11:11 21 1

原创 数据库分库分表

分库垂直分库,针对一个系统的不同业务进行拆分,比如:用户拆到user库,商品到goods库,订单order库。垂直分表,大表拆小表,基于表中字段拆分,将不常用的,数据较大的拆分到扩展表,一般针对几百列的大表进行拆分。水平分表,针对数据巨大的单表,按照某种规则,拆分到多个表中,但是这些表还是在一个库中。并发分库分表顺序,先垂直分,在水平分,垂直更简单更符合实际业务。水平分库分表,按照某种规则,把拆分的表再拆到不同的库中去。并发量不大,但数据量比较大,可以只分表,不分库。按照业务进行拆分,拆分后业务更清晰。

2023-11-29 15:47:49 39 1

原创 数据库主从复制

随着数据增加,I/O操作增多,单机出现瓶颈。写操作锁表,影响读操作,影响业务。

2023-11-29 14:47:43 21

原创 事务ACID特性

事务中任何一个SQL语句执行失败,已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。一般情况下,幻读问题在可重复读的隔离级别下无法解决,只能在可串行化的隔离级别下解决。当事务2在事务4upadte前使用select,在事务4update 后在select 就看不到更新的数据,需要事务2自己commit后才能看到。(3)隔离性:事务的隔离性要求每个读写事务的对象对其他事务的操作对象能相互分离,即该事务提交前对其他事务都不可见,通常这使用锁来实现。不一定,要看事务2开启的时机。

2023-11-28 21:49:05 55

原创 数据库类型

关系型数据库:mysql,Oracle等Nosql数据库:Redis,MongoDB等NewSql数据库: VoltDB,TiDB等

2023-11-20 14:03:13 24 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除