Redis-面试热点

作者: 汤汤汤汤汤雪林 | 来源:发表于2017-02-13 22:45 被阅读1591次

    一、使用Redis的好处
    1、速度快,数据存储在内存中,查找和操作的时间复杂度都是0(1)
    2、支持丰富数据类型
    3、支持事务,操作都是原子性(要么全部执行,要么全不执行)
    4、丰富的特性:可用于缓存、消息队列、按key设置timeout
    二、redis相比memcached有什么优势
    1、memcached所有的值都是简单的字符串,redis作为其代替者,支持更丰富的数据类型
    2、redis速度比memcached快很多
    3、redis可以持久化其数据
    三、redis常见性能问题和解决方案
    1、Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件
    2、如果数据比较重要,某个Slave开启AOF备份数据,策略为每秒同步一次
    3、为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内
    4、尽量避免在压力很大的主库上增加从库
    5、主从复制不要用图状结构,用单向链表结构更为稳定(这样的结构更方便解决单点故障问题,实现Slave对Master的替换,如果Master挂了,可以立即启用Slave做Master)
    四、如何保证 Redis中数据都是热点数据
    相关知识:redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
    redis提供6种数据淘汰策略:
    1、voltile-lru:从已设置过期时间的数据集(service.db[i].expires)中挑选最近最少使用的数据淘汰。
    2、volatile-ttl:从已设置过期时间的数据集(service.db[i].expires)中挑选将要过期 数据淘汰。
    3、volatile-random:从已设置过期时间的数据集(service.db[i].expires)中任意选择数据淘汰。
    4、allkeys-lru:从数据集(service.db[i].dict)中挑选最少使用的数据淘汰。
    5、allkeys-random:从数据集(service.db[i].dict)中任意选择数据淘汰。
    6、no-enviction(驱逐):禁止驱逐数据
    五、Memcache与Redis的区别有哪些
    1、存储方式区别
    Memcache存储内存,数据不能超过内存大小,断电挂掉;
    Redis有部分存储在硬盘,保持数据持久性。
    2、支持数据类型区别
    Memcache支持类型相对简单
    Redis支持更为复杂的数据类型。
    3、使用底层模型不同
    他们之间的底层实现方式以及客户端之间通信的应用协议不一样
    Redis直接构建了自己的VM机制,因为一般的系统调用和系统函数的话,会浪费一定的时间去移动和请求。
    4、value大小
    redis最大可达到1GB
    memcached最大1MB
    六、Redis最适用的场景
    1、会话缓存(Session Cache)
    最常用就是使用Redis做会话缓存。Redis相比与其他存储的优势在于可持久化。
    2、全页缓存(FPC)
    除基本的会话token之外,Redis还提供简便的FPC平台。即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度下降。
    3、队列
    Redis在内存存储引擎领域的最大一个优点就是提供list和set操作,这使得Redis能做为一个很好的消息队列平台来使用。
    4、排行榜/计数器
    Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(set)和有序集合(Sorted Set)也使得我们在执行这些操作时变得非常简单,Redis只是正好提供了这两种数据结构。
    5、发布/订阅
    Redis自带的发布/订阅功能可使用场景非常多。可以在社交网络连接中使用,还可以作为基于发布/订阅的脚本触发器,甚至可以用来建立聊天系统。

    相关文章

      网友评论

        本文标题:Redis-面试热点

        本文链接:https://www.haomeiwen.com/subject/ebvtwttx.html