面试题-Redis简介

1.主流应用框架
在这里插入图片描述

概念:
穿透查询:数据库中的名词,与逐层查询不同,通过超链接可直接查询想要的结果,更加方便快捷
熔断机制:指软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施,所以很多地方把熔断亦称为过载保护。很多时候刚开始可能只是系统出现了局部的、小规模的故障,然而由于种种原因,故障影响的范围越来越大,最终导致了全局性的后果。

2.memcache与redis的区别:
memcache:代码层次类似hash
支持简单数据类型;
不支持数据持久化存储;
不支持主从;不支持分片

redis:
数据类型丰富;
支持数据持久化存储;
支持主从;支持分片

3.redis为什么那么快?
在这里插入图片描述
分析:
Redis采用的是单进程,单线程模型的kv数据库。由c语言编写,将数据存储在内存里,读写数据时候不受硬盘IO的限制,所以速度极快。
Redis不使用表,它的数据库不会预定义或者强制去要求用户对redis存储的不同数据进行关联。因此性能相对于关系型数据库高出不止一个量级。其存储结构就是键值对,类似于hashmap,hashmap的优势查找和操作的时间复杂度都是O(1).
一般在面对多并发请求的时候,首先想到的采用多线程来处理。将IO线程跟业务线程分开,业务线程使用线程池来避免频繁创建和销毁线程。即便是一次线程阻塞,也不会影响到其他请求。Redis的单线程结构是指其主线程是单线程。这里主线程包括IO事件的处理,以及IO对应的相关请求的业务处理。此外,主线程还负责过期键的处理。复制协调,集群协调等等。这些除了IO线程的逻辑,会被封装成周期性的任务,由主线程周期性的处理。对于客户端的所有读写请求,都由一个主线程串行的处理,因此多个客户端对同一个键进行写操作的时候,就不会有并发的问题。避免了频繁的上下文切换,以及锁竞争。使redis执行起来效率更高。

这里的单线程是指在处理我们的网络请求的时候,只有一个单线程在处理。

多路复用的I/O模式:
在这里插入图片描述

多路I/O复用模型中最重要的就是select系统调用。可以同时监控多个文件描述符的可读可写情况,selector会根据情况返回可读,可写的文件描述符的个数。
Redis会根据平台不同选择不同的IO多路复用函数。
基于React设计模式实现文件事件处理器。文件事件处理器使用IO多路复用模块,同时监听多个FD。当相应的事件产生时,文件事件处理器就会回调FD绑定的事件处理器。在单线程上处理。

4.Redis常用数据类型
在这里插入图片描述
String可以存储任意类型的数据。(包含图片)
命令:set ,get
Hash操作
hmset,hget,hgetall

List操作:似于栈。大约能存储40亿个成员。
命令:lpush,lpop,lrange , rpush

Set操作:Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)并且集合无序,值不允许重复.利用redis提供的set数据结构可以存储一些集合型的数据。因为Redis为集合提供了求交集,并集,差集等操作,那么非常容易实现共同关注,共同喜好等功能(微博等设计账号可用。)
命令:sadd,smembers

Sorted set操作:不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。添加,删除,查找的复杂度都是 O(1)
命令:zadd,zrangebyscore

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值