随笔分类 -  redis

缓存
摘要:简介 哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。 哨兵有两个作用: 一、通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。 二、当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修 阅读全文
posted @ 2022-03-15 12:02 Allfuture 编辑
摘要:最外层是字典,配置文件里databse字段默认是16,表示有16个db,一个key-value数据写入时,会通过hash计算key,存储到对应的db里,如果key值冲突,则用链表的形式连接而不是覆盖。 redis主要五种数据结构编码规则: 阅读全文
posted @ 2022-02-21 14:17 Allfuture 阅读(24) 评论(0) 推荐(0) 编辑
摘要:zset是Redis提供的一个非常特别的数据结构,常用作排行榜等功能,以用户id为value,关注时间或者分数作为score进行排序。 常用命令: # 向有序集合添加一个或多个成员,或者更新已存在成员的分数 ZADD key score1 member1 [score2 member2] # 计算在 阅读全文
posted @ 2021-07-25 17:00 Allfuture 阅读(956) 评论(0) 推荐(0) 编辑
摘要:与Java中的HashSet一样,无序且存储元素不重复。其底层有两种实现方式,当value是整数值时,且数据量不大时使用inset来存储,其他情况都是用字典dict来存储。 1|0 inset Redis中inset的结构定义如下所示: typedf struct inset{ uint32_t e 阅读全文
posted @ 2021-07-25 16:40 Allfuture 阅读(164) 评论(0) 推荐(0) 编辑
摘要:Redis底层数据结构之hash hash是日常开发过程中使用Redis的一个数据结构,其底层实现方式有两种,如下所示。一种是zipList,这种是当hash结构的V值较小的时候使用的编码方式。这个已经在上一篇文章中介绍过了。这篇文章主要讲解一下另外一种实现方式,字典dict,当hash结构的V值较 阅读全文
posted @ 2021-07-24 14:19 Allfuture 阅读(452) 评论(0) 推荐(0) 编辑
摘要:Redis中另一个常用的数据结构就是list,其底层有linkedList、zipList和quickList这三种存储方式。 1|0 链表linkedList 与Java中的LinkedList类似,Redis中的linkedList是一个双向链表,也是由一个个节点组成的。Redis中借助C语言实 阅读全文
posted @ 2021-07-24 10:49 Allfuture 阅读(246) 评论(0) 推荐(0) 编辑
摘要:我们都知道,Redis是由C语言编写的。在C语言中,字符串标准形式是以空字符\0作为结束符的,但是Redis里面的字符串却没有直接沿用C语言的字符串。主要是因为C语言中获取字符串长度可以调用strlen这个标准函数,这个函数的时间复杂度是O(N),由于Redis是单线程的,承受不了这个时间复杂度。 阅读全文
posted @ 2021-07-23 17:38 Allfuture 阅读(165) 评论(0) 推荐(0) 编辑
摘要:Redis 的持久化策略有两种: RDB:快照形式是直接把内存中的数据保存到一个 dump 的文件中,定时保存,保存策略。 RDB是Redis的一个快照文件,比如说现在的时间是下午14:00,Redis做了一次快照的备份,把这个数据备份到了RDB,那么这个RDB文件的数据就只停留在下午两点,下午两点 阅读全文
posted @ 2020-08-12 10:39 Allfuture 阅读(134) 评论(0) 推荐(0) 编辑
摘要:缓存击穿不同的是缓存击穿是指一个 Key 非常热点,在不停地扛着大量的请求,大并发集中对这一个点进行访问, 当这个 Key 在失效的瞬间,持续的大并发直接落到了数据库上,就在这个 Key 的点上击穿了缓存.。 解决办法: 缓存击穿的话,设置热点数据永不过期,或者加上互斥锁 使用互斥锁(mutex k 阅读全文
posted @ 2020-08-12 10:26 Allfuture 阅读(261) 评论(0) 推荐(0) 编辑
摘要:缓存穿透是指查询一个一不存在的数据。 例如:从缓存redis没有命中,需要从mysql数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。 解决思路: 如果查询数据库也为空,直接设置一个默认值存放到缓存,这样第二次到缓冲中获取就有值了,而不会继续访问 阅读全文
posted @ 2020-08-12 10:22 Allfuture 阅读(220) 评论(0) 推荐(0) 编辑
摘要:一:Redis 雪崩 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。 比如一个雪崩的简单过程: 1、redis集群大面积故障 2、缓存失效,但依然大量请求访问缓存服务redis 3、redis大量失效后,大量请求转向到mys 阅读全文
posted @ 2020-08-12 10:18 Allfuture 阅读(211) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩