![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 75
小辣鸡~
这个作者很懒,什么都没留下…
展开
-
redis笔记
redis的数据结构:String(字符串)、List(列表)、hash(哈希)、Set(集合)、Shorted Set(有序集合)底层数据结构:简单动态字符串、双向链表、压缩列表、哈希表、跳表、整数数组1.哈希表:一个哈希表其实就是一个数组,数组中的每一个元素称为一个哈希桶。哈希冲突和rehash可能会带来操作阻塞。redis解决哈希冲突的方法是链式哈希,而rehash是增加现有hash桶的数量。rehash的操作步骤:1.给哈希表分配更大的空间,例如是当前hash表大小的两倍2.把哈希表原创 2022-03-06 08:41:12 · 291 阅读 · 0 评论 -
redis如何应对并发访问?
redis的原子操作有两种方式:1.把多个操作在redis中实现成一个操作,也就是单命令操作。我们先看看redis本身单命令操作:redis是使用单线程来串行处理客户端请求操作命令的,所以当redis处理某个命令的时候,其他命令是无法执行的,这相当于命令操作是互斥执行的,当然redis的快照生成、AOF重写等操作是由子线程或者后台线程执行的,也就是和主线程的操作是并行执行的。只不过这些操作只是读取数据不会修改数据。虽然redis单个操作可以原子性的执行,但在实际应用中数据修改包含多个操作,至少包括读原创 2022-03-06 08:40:38 · 2664 阅读 · 0 评论 -
旁路缓存:redis是如何工作的?
计算机默认有两种缓存:1.cpu中的末级缓存,即LLC,用于缓存内存中的数据,避免从内存中取数据。2.内存中的高速页缓存,即page cache,用来缓存磁盘中的数据,避免每次从磁盘中存取数据。应用如果想要修改数据,既可以在缓存中修改,也可以在后端数据库中进行修改,所以redis就出现了两种缓存模式:只读缓存和读写缓存只读缓存:先删除redis中的数据,修改数据库中的数据,然后从数据库中读取数据并更新redis。好处就是数据存入数据库中,能够保存数据的可靠性读写缓存:直接在redis中进行数据的修改原创 2022-02-19 19:59:24 · 309 阅读 · 0 评论 -
redis练习题
1.stream介绍:stream主要用于消息队列,redis本身是有一个发布订阅 (pub/sub)来实现消息队列的,但是由于无法将消息持久化,如果出现宕机等情况就会导致数据丢失。而Redis Stream提供消息的持久化和主备复制功能,可以让任何客户端访问任何时刻数据,并且能够记住每一个客户端的访问位置,还能保证消息不丢失。同一条消息在同一消费组内只能被一个消费者读取消费。2.info memory命令:mem_fragmentation_ratio代表内存碎片率:used_memory_r原创 2022-02-13 11:16:54 · 1221 阅读 · 0 评论 -
通信开销:限制Redis规模的关键因素
为了让集群中每个实例都知道其他实例的状态信息,实例之间会按照一定规则进行通信。这个规则就是Gossip协议。Gossip工作原理可以概括为以下两点:1.每个集群实例之间会按照一定频率,从集群中挑选一些实例,把ping消息发送给挑选出来的这些实例,用来检测这些实例是否在线,并交换彼此的状态信息。然后实例会返回PONG消息我们可以直观的看到:实例间使用Gossip协议进行通信时,通信开销受到通信消息大小和通信频率的影响。Gossip消息大小ping消息是由clusterMsgDataGossip结构体原创 2022-02-12 20:33:05 · 600 阅读 · 0 评论 -
redis数据倾斜
数据倾斜分为两种:1.数据量倾斜:在某些情况下,实例上的数据分布不均匀,某个实例上的时候特别多。2.数据访问倾斜:虽然每个实例上的数据量差别不大,但是某个实例上的数据是热点数据,被访问的非常频繁。数据倾斜的成因和应对方案:1.bigkey导致倾斜bigkey的value很大或者bigkey中保存大量的集合元素,会导致这个实例的数据量增加,内存消耗也相应的增加bigkey造成实例io线程阻塞,如果bigkey的访问量较大,就会影响这个实例上其他请求的处理速度。解决办法:1.避免过多的数据对保存在原创 2022-02-12 15:07:55 · 1544 阅读 · 0 评论 -
redis脑裂
脑裂:在主从集群中,同时有两个主节点他们都能接收写请求。而脑裂最直接影响的就是客户端不知道往哪个主节点写入数据,结果就是不同的客户端往不同的主节点写入数据。而且严重的会导致数据丢失。为什么会发生脑裂?1.确认是不是数据同步出了问题:主库的数据还未同步到从库,结果主库发生了故障,等到从库升级为主库后,未同步的数据就发生了缺失。这种情况我们可以通过计算master_repl_offset和slave_repl_offset的差值,如果大于0就可以认定为是由于数据同步未完成导致的。2.排查客户端的操作日志原创 2022-02-04 08:06:57 · 2789 阅读 · 0 评论 -
redis数据结构
redis的数据结构:String(字符串)、List(列表)、hash(哈希)、Set(集合)、Shorted Set(有序集合)底层数据结构:简单动态字符串、双向链表、压缩列表、哈希表、跳表、整数数组1.哈希表:一个哈希表其实就是一个数组,数组中的每一个元素称为一个哈希桶。哈希冲突和rehash可能会带来操作阻塞。redis解决哈希冲突的方法是链式哈希,而rehash是增加现有hash桶的数量。rehash的操作步骤:1.给哈希表分配更大的空间,例如是当前hash表大小的两倍2.把哈希表原创 2022-02-03 19:36:16 · 3996 阅读 · 0 评论