• Java核心知识盘点(二)- 缓存使用


    Redis有哪些数据类型

      String、Hash、List、Set、ZSet

      String:字符串

      Hash:哈希

      Set:集合

      List:列表

      ZSet:有序集合

    Redis内部结构

      1、Redis是专用于存储数据的,它对于计算机的主要消耗在内存上。

      2、Redis是用于在线访问的,对于单个请求的响应时间要求很高。

      3、Redis的性能瓶颈不在于CPU资源,而在于内存访问和网络IO。

      4、Redis的重要基础数据结构:dict,是一个用于维护key和value映射关系的数据结构。

    Redis 持久化

      两种持久化机制:Snapshotting(快照)、Aof()

      1、Snapshotting:快照是默认的持久化方式,这种方式就是以快照的方式写入到二进制文件中。默认的文件名为:dump.rdb

      2、在使用 aof 持久化方式时,redis 会将每一个收到的写命令都通过 write 函数追加到文件中(默认是 appendonly.aof)。当 redis 重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容

    Redis 集群方案与实现

      1、客户端分片:不使用第三方中间件,这种分片性能比代理式更好,缺点:不能平滑水平扩容,必须手动调整分片程序,出现故障不能自动转移。难以运维

      2、Twemproxy:运维成本低,业务方不用关心Redis实例,Proxy的逻辑和存储的逻辑是分离的。缺点:代理多了一次转发,性能所有损耗。出现故障不能自动转移,运维性差

      3、Redis Cluster:无中心节点,数据按照Slot存储分布在多个Redis实例上,平滑的进行扩容/缩容,自动故障转移降低运维成本。缺点:严重依赖外部Redis-Trib,缺乏管控管理。

      4、Proxy+Redis Cluster:减少了一层网络传输代理,效率比较高。提供一套Http Restful接口,隔离底层存储。

    Redis为什么是单线程

      突出自己功能的灵活性。在单线程基础上任何原子操作都可以几乎无代价地实现,多么复杂的数据结构都可以轻松运用

    缓存崩溃

      当服务器重启或程序异常崩溃时,Redis的数据就会全部丢失,就会出现缓存崩溃。

    缓存降级

      服务降级的目的,是为了防止Redis服务故障,导致数据库跟着一起发生雪崩问题。因此对于不重要的缓存数据,当发生Redis问题的时候,而不是从库里去数据,直接返回一个默认值。

    消息队列

      主要解决:应用耦合、异步消息、流量消峰、日志处理等问题

    消息的重发补偿解决思路

    参考:

    JMS消息传送机制

    消息的幂等性解决思路

    参考:

    MQ之如何做到消息幂等

    消息的堆积解决思路

    参考:

    Sun Java System Message Queue 3.7 UR1 管理指南

    自己如何实现消息队列

    参考:

    自己动手实现消息队列之JMS

    如何保证消息的有序性

    参考:

    消息队列的exclusive consumer功能是如何保证消息有序和防止脑裂的

  • 相关阅读:
    SharePoint开发
    SharePoint开发
    win32-如何识别哪个静态控件被点击
    win32
    win32-创建透明的图片按钮
    读取位图文件
    python--获得特定程序的屏幕截图并保存为文件
    win32--GetFileAttributes
    谈一下交换值之后并不能返回预料的结果
    链表--insert
  • 原文地址:https://www.cnblogs.com/cristin/p/9669015.html
Copyright © 2020-2023  润新知