mysql
进击的小王666
这个作者很懒,什么都没留下…
展开
-
Redis字符串和sorted set实现原理
字符串是Redis中最为常见的数据存储类型,其底层实现是简单动态字符串sds(simple dynamic string),是可以修改的字符串。它采用预分配冗余空间的方式来减少内存的频繁分配。当字符串长度小于 1M 时,扩容都是加倍现有的空间,如果超过 1M,扩容时一次只会多扩 1M 的空间。(字符串最大长度为 512M)因此当超过512M时会报错每个sds.h/sdshdr结构表示一个SDS的值 struct sdshdr{ //记录buf数组中已使用的字节的数量 //等于sds所保存字符原创 2022-02-14 12:34:29 · 808 阅读 · 0 评论 -
redis缓存击穿、缓存穿透、缓存雪崩
缓存穿透大量的key不在缓存中,请求直接打到数据库,而且key也不在数据库中(最后返回null,一次毫无意义的查询),如果黑客制造这样类似的大量请求攻击,就可能产生缓存穿透解决方式:1.可以在前端或后端先做验证,过滤不合法的请求,比如通过摘要算法判断请求是否被篡改过2.缓存无效key,设置较短的有效时间(不推荐)3.布隆过滤器,非常巧妙的一种数据结构,具体实现是:将所有可能存在的请求值存放于布隆过滤器,用户请求时,先通过布隆过滤器判断是否存在该值,如不存在直接返回错误信息。流程如下存放时,通原创 2022-02-13 19:12:14 · 112 阅读 · 0 评论 -
mysql事务
事务是逻辑上的一组操作,要么都执行,要么都不执行。四大特性原子性:原子操作,不可分割,要么都成功要么都不成功一致性:从一个确定状态到另外一个确定状态隔离性:并发下事务之间不相互干扰持久性:事务一旦提交,他对数据库的修改将是持久的,即使故障也不应对其有影响。并发事务的四个问题脏读:一个事务读取到了另外一个事务没有提交的数据丢失修改:两个事务都对某数据进行修改,两事务读到的是一样的,修改有前后顺序,导致先修改的这次操作被覆盖不可重复读:一个事务读了一次,另一个事务对此数据进行修改,并且提交,则原创 2022-02-12 18:42:30 · 360 阅读 · 0 评论