![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
缓存
文章平均质量分 78
解读redi中间件
施小赞
人生苦短,我爱Java
展开
-
17、Redis为什么快?高性能设计之epoll和IO多路复用深度解析
1、Redis单线程如何处理那么多并发客户端连接,为什么单线程,为什么快Redis的多路复用Redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,一次放到文件事件分派器,事件分派器将事件分发给事件处理器。Redis是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以I/O操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O 阻塞导致整个进程无法对其它客户提供服务,而 I/O 多路复用就是为了解决这个问题而出现所谓原创 2022-05-09 21:39:14 · 390 阅读 · 0 评论 -
16、Redis案例实战:短链接设计和案例编码
案例实战:B站视频、淘宝购物分享短链接推广1、需求分析真实生产案例:B站视频推广短链接小米购物推广短链接淘宝购物推广短链接好处:简单方便,利与推广http传输好了很多,有助于带宽节约和高并发防止尾巴参数泄密,不安全2、架构设计2.1、短链接映射算法如何编写?一个长链接URL转换为4个短KEY:将长网址 md5 生成32位签名串,分为4段, 每段8个字节; 对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超原创 2022-05-09 21:29:25 · 711 阅读 · 0 评论 -
15、Redis案例实战:微信抢红包
1、需求分析1.各种节假日,发红包+抢红包,不说了,100%高并发业务要求,不能用 mysql来做工2.一个总的大红包,会有可能拆分成多个小红包,总金额=分金额1+分金额2+分金额3.....分金额N3.每个人只能抢一次,你需要有记录,比如100块钱,被拆分成10个红包发出去,总计有10个红包,抢一个少一个,总数显示(10/6)直到完,需要记录那些人抢到了红包,重复抢作弊不可以。4.有可能还需要你计时,完整抢完,从发出到全部over,耗时多少?5.红包过期,或者群主人品差,没人抢红包原创 2022-05-09 21:27:50 · 1432 阅读 · 5 评论 -
14、缓存双写一致性之更新策略探讨
1、一致性,谈谈你的理解1.1、如果redis中有数据需要和数据库中的值相同1.2、如果redis中无数据数据库中的值要是最新值2、缓存按照操作来分,有细分2种2.1、只读缓存2.2、读写缓存同步直写策略:写缓存时也同步写数据库,缓存和数据库中的数据一致;对于读写缓存来说,要想保证缓存和数据库中的数据一致,就要采用同步直写策略什么时候同步直写?小数据,某条、某一小撮热点数据,要求立刻变更,可以前台服务降级一下后台马上同步直写什么时候异步缓写?1.正常业原创 2022-05-09 21:26:17 · 254 阅读 · 0 评论 -
13、Redis与MySQL数据双写一致性工程落地案例
1、一些问题① 你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?② 双写一致性,你先动缓存 redis还是mysql数据库哪一个? why?2、canal2.1、是什么canal[ka'nael],中文翻译为 水道/管道/沟渠/运河,主要用途是用于 Mysql数据库增量日志数据的订阅、消费和解析,是阿里巴巴开发并开源的,采用Java语言开发;历史背景是早期阿里巴巴因为杭州和美国双机房部署,存在跨机房数据同步的业务原创 2022-05-09 21:21:15 · 443 阅读 · 0 评论 -
12、redis经典五种数据类型及底层实现(2)
1、5大数据结构底层C语言源码分析1.1、从set hello world说起set hello world为例,因为 Redis是KV键值对的数据库,每个键值对都会有一个 dictEntry(源码位置:dict.h),里面指向了key和 value的指针,next指向下一个 dictEntrykey是字符串,但是 Redis没有直接使用C的字符数组, 而是存储在redis自定义的SDS中。value既不是直接作为字符串存储,也不是直接存储在SDS中,而是存储在 redisObject.原创 2022-04-18 17:15:23 · 1183 阅读 · 0 评论 -
11、redis经典五种数据类型及底层实现(1)
1、redis源码在哪里redis-6.0.8\src2、Redis源代码的核心部分src源码包下面该如何查看?2.1、Redis基本的数据结构(骨架)① 简单动态字符串sds.c② 整数集合inset.c③ 压缩列表ziplist.c④ 快速链表quicklist.c⑤ 字典dict.c⑥ Streams的底层实现结构listpack.c和rax.c-了解2.2、Redis数据类型的底层实现① Github官网说明https://github.com原创 2022-04-13 15:24:14 · 251 阅读 · 0 评论 -
10、Redis的删除动作
1、redis过期键的删除策略如果一个键是过期的,那它到了过期时间之后是不是马上就从内存中被被删除呢??如果回答yes,立即删除,你自己走还是面试官送你?如果不是,那过期后到底什么时候被删除呢??是个什么操作?2、三种不同的删除策略2.1、立即删除Redis不可能时时刻刻遍历所有被设置了生存时间的key,来检测数据是否已经到达过期时间,然后对它进行删除。立即删除能保证内存中数据的最大新鲜度,因为它保证过期键值会在过期后马上被删除,其所占用的内存也会随之释放。但是立即删除.原创 2022-04-13 15:19:54 · 3323 阅读 · 0 评论 -
9、Redis分布式锁
1、一些技术问题① Redis除了拿来做缓存,你还见过基于 Redis的什么用法?② Redis做分布式锁的时候有需要注意的问题?③ 如果是 Redis是单点部署的,会来什么问题? 那你准备怎么解决单点问题呢?④ 集群模式下,比如主从模式,有没有什么问题呢?⑤ 你知道 Redis是怎么解决集群模式也不靠谱的问题的吗?⑥ 那你简单的介绍下 Redlock吧?你简历上写 redisson,你谈谈⑦ 你觉得 Redlock有什么问题呢?⑧ Redis分布式锁如何续期?看门狗知道吗?原创 2022-04-11 22:58:39 · 854 阅读 · 0 评论 -
8、缓存预热,缓存雪崩,缓存击穿,缓存穿透
1、缓存雪崩① redis 主机挂了,Redis全盘崩溃② 比如缓存中有大量数据同时过期解决:1、Redis缓存集群实现高可用(1)主从+哨兵(2)Redis Cluster2、ehcache本地缓存+Hystrix或者阿里sentinel限流&降级3、开启Redis持久化机制aof/rdb,尽快恢复缓存集群2、缓存穿透2.1、是什么请求去查询一条记录,先redis后mysq发现都查询不到该条记录, 但是请求每次都会打到数据库上面去,导致后台数据库压力原创 2022-04-07 13:45:02 · 722 阅读 · 0 评论 -
7、布隆过滤器
1、一些问题现在有50亿个电话号码,现有10万个电话号码,如何要快速准确的判断这些电话号码是否已经存在?1、通过数据库查询-----实现快速有点难2、数据预放到内存集合中:50亿*8字节大约40G,内存太大了。2、是什么布隆过滤器(英语: Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制数组+一系列随机hash算法映射函数,主要用于判断一个元素是否在集合中。通常我们会遇到很多要判断一个元素是否在某个集合中的业务场景,一般想到的是将集合中所有元原创 2022-03-30 10:12:05 · 470 阅读 · 0 评论 -
6、redis新类型-GEO
1、Redis之GEO1.1、简介移动互联网时代LBS应用越来越多,交友软件中附近的小姐姐、外卖软件中附近的美食店铺、打车软件附近的车辆等等,那这种附近各种形形色色的XXX地址位置选择是如何实现的?地球上的地理位置是使用二维的经纬度表示,经度范围(-180,180],纬度范围(-90,90],只要我们确定一个点的经纬度就可以确定他在地球的位置。例如滴滴打车,最直观的操作就是实时记录更新各个车的位置,然后当我们要找车时,在数据库中查找距离我们(坐标x0,y0)附近公里范围内部的车辆原创 2022-03-28 15:29:37 · 658 阅读 · 0 评论 -
5、redis新类型-hyperloglog
1、说名词1.1、什么是UVUnique Vistor,独立访客,一般理解为客户端IP,需要去重考虑1.2、什么是PVPage View,页面浏览量,不用去重1.3、什么是DAUDaily Active User 日常活跃用户量 ,登录或者使用了某个产品的用户数(去重重复登录的用户)常用于反映网站、互联网应用或者网络游戏的运营情况1.4、什么是MAUMonthly Active User 月活跃用户量2、看需求① 统计某个网站的UV、统计某个.原创 2022-03-28 15:27:27 · 897 阅读 · 0 评论 -
4、redis新类型-bitmap
1、先看看大厂真实面试需求+面试反馈面试题一:手机APP中的每天的用户登录信息:1天对应1系列用户ID或移动设备ID; 电商网站上商品的用户评论列表:1商品对应了1系列的评论 用户在手机APP上的签到打卡信息:1天对应1系列用户的签到记录; 应用网站上的网页访问信息:1个网页对应1系列的访问点击面试题二:记录对集合中的数据进行统计 在移动应用中,需要统计每天的新增用户数和第2天的留存用户数; 在电商网站的商品评论中,需要统计评论列表中的最新评论; 在签到打卡中,需要统计一个月内连续原创 2022-03-28 15:23:10 · 1329 阅读 · 0 评论 -
2、redis,mysql一致性增删改查操作
@Service@Slf4jpublic class UserService { public static final String CACHE_KEY_USER = "user:"; @Resource private UserMapper userMapper; @Resource private RedisTemplate redisTemplate; public void addUser(User user) { .原创 2022-03-25 10:24:21 · 1251 阅读 · 0 评论 -
3、redis 单线程 vs 多线程
1、Redis为什么选择单线程?是什么这种问法其实并不严谨,为啥这么说呢?Redis的版本很多3.x、4.x、6.x,版本不同架构也是不同的,不限定版本问是否单线程也不太严谨。①版本3.x ,最早版本,也就是大家口口相传的redis是单线程。②版本4.x,严格意义来说也不是单线程,而是负责处理客户端请求的线程是单线程,但是开始加了点多线程的东西(异步删除)。---貌似③ 最新版本的6.0.x后,告别了大家印象中的单线程,用一种全新的多线程来解决问题。---实锤有几个里原创 2022-03-24 10:55:46 · 560 阅读 · 0 评论 -
1、redis经典五种数据类型介绍及落地运用
1、官网地址官网地址:Redis 中文官网地址:CRUG网站2、Redis命令大全官网命令大全直接搜索即可注:命令不区分大小写,而key是区分大小写的,可使用help @类型名词查看3、Redis 基本数据类型以前是 5 种数据类型,现在是 8 种啦~String(字符类型) Hash(散列类型) List(列表类型) Set(集合类型) SortedSet(有序集合类型,简称zset) Bitmap(位图) HyperLogLog(统..原创 2022-03-24 10:46:40 · 1051 阅读 · 0 评论