
Redis
文章平均质量分 85
小狐憨憨
公众号:小柯贤,尽量每天都更新知识
展开
-
Redis分布式锁的原理与面试细节
这里就讲了下怎么加锁的,很多原理的问题小伙伴们,可用百度下分布式锁,看图中我特别在加锁与删除锁的时候还有俩个指向就特别说下这俩个问题我们加锁的时候为了防止死锁的问题都在加锁的时候会带上 锁过期时间的问题我们使用Redis提供的设置值的时候跟设置过期时间是原子性的操命令SETNX EX加锁时候的原子性问题我们解决了,我们知道分布式锁就是只有一个线程才能抢到锁位,那其他线程怎么处理呢?有些文章可能都只说了一些流程却忘记了很多坑加锁失败的几个解决办法【这也叫锁冲突的问题】直接抛弃,前端提醒用户该.原创 2021-03-26 11:19:05 · 753 阅读 · 0 评论 -
决战紫禁之巅之Redis面试
Redis单线程为什么那么快?redis的速度非常快,速度快的原因主要有以下几点:完全基于内存操作C语言实现,优化过的数据结构,基于几种基础的数据结构,redis做了大量的优化,性能极高使用单线程,无上下文的切换成本基于非阻塞的IO多路复用机制请说说常用的Redis基本类型类型底层实现场景String (字符串)SDS动态字符串,小于多少的时候是采用压缩存储的1.验证码时间判断 2.分布式锁,3.去重等List(链表结构,双向链表)LinkedLIst双.原创 2021-03-25 21:38:33 · 254 阅读 · 1 评论 -
Redis的哨兵集群是怎么通信的
在我们对Redis的sycn与psync的区别中说了读写分离,但是故障切换的问题还没有说到,这次我们就说一个Redis的高可用的方案Redis的哨兵什么是哨兵:在我们刚写项目的时候,可能看开发文档上面写着请编写的变量能从字面意思就理解了。我们从哨兵的字面意思看,什么是哨兵呢?M78星云怎么没有人放哨呢,又被贝利亚给杀进来了,哨兵就是入侵前的预警,但是Redis中的哨兵就不是预警了而是可以打赢贝利亚的奥特曼。如:主从master挂了,可以把slave提升为master角色,继续对外提供业务,来实现高可用原创 2021-03-24 11:54:37 · 1215 阅读 · 0 评论 -
Redis的持久化机制原理
面试的经典问题就是会问:Redis为什么快呢?我们都知道Redis是基于内存的数据库,数据都在内存中不需要跟磁盘交互,Redis采用的是多路复用IOReids的通信协议是 RESP网络协议,Redis的数据结构就基本数据类型的字符串底层也对C语言默认的字符串类型优化成动态字符串…上面我们说了Redis的数据都是在内存中,当Redis实例挂了,数据不就丢失了?所以Redis他就有一种机制来保证Redis实例的数据不会因为故障而导致丢失数据就Redis的持久化机制Redis的持久化Redis原创 2021-03-24 11:00:39 · 303 阅读 · 0 评论 -
为什么 Redis 的事务不支持回滚?
对于关系型数据库来说,事务这个面试的时候最开头的就是什么是事务?事务的ACID,事务的隔离级别,当说完可能就讲什么是MVCC机制了等等,但是在Redis中的事务是没有原子性的,了解Redis的管道机制的小伙伴应该会知道,管道机制主要为了多次提交而发生的读写,通过批量的方式减少命令传输的次数,而Redis的事务就像管道机制提交的命令一样是提交的命令集合,Redis事务的命令主要是 multi(开启事务) exec(执行事务) discard(丢弃事务)当我们开启事务后就可以同时执行一组命令,根据顺序一原创 2021-03-21 19:48:01 · 735 阅读 · 0 评论 -
深入理解Redis的sync和psync的
在日常开发中我们可能拿单台Redis测试,可能完全没有啥问题,当线上Reids读压力大的时候,我们可能会搭建Redis的主从,所有的服务都不是百分百可靠的,所以我们可能会往高可用方向发展如:哨兵,集群,在我们这些高可用的架构中都会有主服务器,主服务器下面可能有一台从服务器或者多台从服务器,这些都是为了避免单点故障和把master跟slave读写分离,提高相应速度,在高可用的架构中当有服务器故障的时候,其他的服务器也可以对外提供,提供了系统的可用性,避免了单点故障的问题。Redis能实现读写分离又能实现故障原创 2021-03-21 15:26:37 · 1401 阅读 · 1 评论 -
Redis的渐进式hash
redis的底层存储redis把所有的key都存储在一个大字典中,学过python的小伙伴应该就会知道字典这个数据结构,但是这个数据结构跟python的数据结构不一样,这个字典跟java里面的HashMap像似,如图所示:我们可以看到是数组+链表的结构,我们知道的Java中的HashMap每次扩容方式是当大于LoadFactor阈值时,就需要重新分配一个2倍的数组,就需要把所有元素都重新计算hash值操作(rehash)挂载到新的数组中, 数组的大小是2,空间大小加倍 就变成了2渐进式hash是什原创 2021-03-20 21:36:53 · 782 阅读 · 0 评论 -
Redis-布隆过滤器
Redis-布隆过滤器布隆能解决哪些问题?举个例子 : 有50亿个电话号码,现在给你10万个电话号码,如何快速准确的判断出这些号码是否存在?方案A: DB ? ----> 50亿的电话号码,这查询效率 ?方案B: 内存 ? —> 就按1个电话号码8个字节 , 50亿*8字节= 40G 内存…方案C: hyperloglog? ----> 准确率有点低类似的问题还有很多,比如垃圾邮件过滤文字处理软件(比如word)错误单词检测网络爬虫重复URL检测hbase 行过滤转载 2020-12-09 18:34:05 · 409 阅读 · 0 评论 -
Centos安装Redis学习入门
RedisRedis介绍Redis是一个开源的、基于内存的非关系型数据库。非关系型数据库NoSql 链接参考Redis的安装安装reids的依赖 gccRedis是C语言开发的 按装之前先安装下依赖环境gcc(可以gcc -v)查看是否安装了**yum install -y gcc **下载并解压压缩包**wget **http://download.redis.io/releases/redis-5.0.3.tar.gztar -zxvf redis-5.0.3.t原创 2020-11-21 12:05:53 · 441 阅读 · 0 评论