Redis必须知道的

1.什么是Redis
答:Redis是一款内存高速缓存数据库,Redis是一个key-value存储系统(键值存储系统)。 

2.Redis常用的数据类型有什么
  答:Redis一共支持五种数据类型:String(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted  set有序集合)

  (1)String(字符串):Redis最基本的数据类型,一个键对应一个值,一个键值最大存储512MB

  (2)Hash(哈希):hash是一个键值对的集合,是一个String类型的field和value的映射表,适合用于存储对象

  (3)List(列表):是redis的简单的字符串列表,按插入顺序排序

  (4)Set(集合):是String字符串类型的无序集合,也不可重复

  (5)ZSet(sorted  set  有序集合)是String类型的有序集合,也不可重复。有序集合中的每个元素都需要指定一个分数,根据分数对元素进行升序排序。
  
 3.Reids的使用场景
 答: 众多语言都支持Redis,因为Redis交换数据快,在服务器中常用来存储一些需要频繁调取的数据,节省内存开销,也极大的提升了速度。

    将一些热点数据存储到Redis中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

    (1)会话缓存(最常用) 

    (2)消息队列(支付)

    (3)活动排行榜或计数

    (4)发布,订阅消息(消息通知)

    (5)商品列表,评论列表
 
 4.Redis的持久化

Redis持久有两种方式:快照(RDB),仅附加文件(AOF)

快照(RDB):1、将存储在内存的数据以快照的方式写入二进制文件中,默认dump.rdb中

         2、保存900 1               # 900秒内如果超过1个key被修改,则启动快照保存

         3、保存300 10            # 300秒内如果超过10个key被修改,则启动快照保存

         4、保存60 1000         # 60秒内如果超过10000个重点被修改,则启动快照保存

仅附加文件(AOF):1、使用AOF持久时,服务会将每个收到的写命令通过写函数追加到文件中(appendonly.aof)

                 2、AOF持久化存储方式参数说明

                                         appendonly  yes    #开启AOF持久化存储方式

                                         appendfsync   always   #收到写命令后就立即写入磁盘,效率最差,效果最好

                                         appendfsync   everysec     #每秒写入磁盘一次   效率与效果居中

                                          appendfsync   no               #完全依赖操作系统,效率最佳,效果没法保证
5.存储结构
答:(1)redis中以key-value的形式存储,key固定是字符串,使用字符串对象进行表示,value可以是字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(ZSet)。

(2)在内存中,每个Key-Value都被划分成DictEntry、RedisObject以及具体对象,DictEntry又分别包含指向Key和Value的指针,以及指向下一个DicEntry的指针,指向key和value的指针也是以RedisObject的形。
                                          
6.主从复制
答:主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

主从复制的作用

主从复制的作用主要包括:

数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

7.Redis的缓存穿透和缓存雪崩
答:缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,接着查询数据库也无法查询出结果,因此也不会写入到缓存中,这将会导致每个查询都会去请求数据库,造成缓存穿透;

缓存雪崩是指,由于缓存层承载着大量请求,有效的保护了存储层,但是如果缓存层由于某些原因整体不能提供服务,于是所有的请求都会达到存储层,存储层的调用量会暴增,造成存储层也会挂掉的情况。

8.Redis哨兵
答:答:Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,
自动将下线主服务器属下的某个从服务器升级为新的主服务器。    9.Redis集群 答:Redis集群提供一种方式自动将数据分布在多个Redis节点上。 10.redis的服务相关命令 答:slect#选择数据库(数据库编号0-15) 退出 # 退出连接 信息 # 获得服务的信息与统计 monitor # 实时监控 config get # 获得服务配置 flushdb # 删除当前选择的数据库中的key flushall # 删除所有数据库中的键 11.Redis特点 答:(1)Redis以内存作为数据存储介质,读写数据的效率极高。 (2)Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启,数据也不会丢失。 (3)Redis的存储分为内存存储、磁盘存储和log文件。 (4)Redis可以从磁盘重新将数据加载到内存中,也可以通过配置文件对其进行配置,因此,redis才能实现持久化。 (5)Redis支持主从模式,可以配置集群,更利于支撑大型的项目。
原文地址:https://www.cnblogs.com/liqinzhen/p/12786532.html