• Redis 数据库


    1、Redis支持的数据类型?

    string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)

    2、缓存穿透、缓存雪崩、缓存击穿

    缓存穿透:指查询一个数据库一定不存在的数据。
    缓存雪崩:指在某一个时间段,缓存集中过期失效。
    缓存击穿:指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。

    3、什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?

    持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。

    Redis 提供了两种持久化方式:RDB(默认,Redis DataBase) 和AOF (Append-only file)

    存储结构:

      内容是redis通讯协议(RESP )格式的命令文本存储。

    比较

    1、aof文件比rdb更新频率高,优先使用aof还原数据。

    2、aof比rdb更安全也更大

    3、rdb性能比aof好

    4、如果两个都配了优先加载AOF

    4、一致性hash 算法

    环形Hash空间

    按照常用的hash算法来将对应的key哈希到一个具有2^32次方个桶的空间中,即0~(2^32)-1的数字空间中。现在我们可以将这些数字头尾相连,想象成一个闭合的环形。如下图1

     

    把数据通过一定的hash算法处理后映射到环上
    在采用一致性哈希算法的分布式集群中将新的机器加入,其原理是通过使用与对象存储一样的Hash算法将机器也映射到环中(一般情况下对机器的hash计算是采用机器的IP或者机器唯一的别名作为输入值),然后以顺时针的方向计算,将所有对象存储到离自己最近的机器中。

       

                          机器节点添加                                                       机器节点删除   

    如果节点因为故障需要删除,按照顺时针,故障节点数据移动到下一个节点。

    但这样有可能导致下一个节点数据增多,容易产生数据倾斜。怎么解决?
    在一致性哈希算法中,为了尽可能的满足各个节点数据均衡,引入了虚拟节点。
    虚拟节点( virtual node )是实际节点(机器)在 hash 空间的复制品( replica ),一实际个节点(机器)对应了若干个“虚拟节点”,这个对应个数也成为“复制个数”,“虚拟节点”在 hash 空间中以hash值排列。
    比如有3台机器,每台机器映射2个虚拟节点,共把6个虚拟节点映射到环上。如下图:
    在redis3.0 之前版本,redis 集群搭建需要借助外力,通过中间件实现 一致性hash算法,维护虚拟节点 与 实际节点的映射表。

    5、哈希Slot的优缺点:

            缺点:每个redis 节点无备用节点,一旦某个节点挂掉了,redis集群会停止运作;
            优点:将Redis的写操作分摊到了多个节点上,提高写的并发能力,扩容简单。
  • 相关阅读:
    GetIPAddress——获得本地IP地址信息
    NetTime——c++实现计算机时间与网络时间的更新
    redis 面试
    jstat命令
    bug 调试
    redis & memcache
    Java进阶知识点:不要只会写synchronized
    Java进阶知识点:并发容器背后的设计理念
    Java进阶知识点:服务端高并发的基石
    Java进阶知识点:不可变对象与并发
  • 原文地址:https://www.cnblogs.com/yangms/p/14040067.html
Copyright © 2020-2023  润新知