Redis知识点

Redis作为J2EE体系内一款常用的分布式缓存服务,具有高并发,高吞吐量,支持多种数据结构等特性,其工作原理在这里做一些简单的分析

  • 分布式一致性Raft协议
    • Raft协议包含的角色
    • Leader:所有请求的处理者,Leader副本接受client的更新请求,本地处理后再同步至多个其他副本;
    • Follower:请求的被动更新者,从Leader接受更新请求,然后写入本地日志文件
    • Candidate:如果Follower副本在一段时间内没有收到Leader副本的心跳,则判断Leader可能已经故障,此时启动选主过程,此时副本会变成Candidate状态,直到选主结束。
    • Raft协议的三种状态
      • leader election 选举
      • log replication 日志复制,同步
      • safety 安全性
    • Raft协议在选主日志同步过程中与ZAB协议的区别,保守主义,冒险主义
  • 一致性Hash算法,用于分布式存储的Sharding
    • 1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。
    • 2、单调性(Monotonicity):单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到原有的或者新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。
    • 3、分散性(Spread):在分布式环境中,终端有可能看不到所有的缓冲,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓冲上时,由于不同终端所见的缓冲范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓冲区中。这种情况显然是应该避免的,因为它导致相同内容被存储到不同缓冲中去,降低了系统存储的效率。分散性的定义就是上述情况发生的严重程度。好的哈希算法应能够尽量避免不一致的情况发生,也就是尽量降低分散性。
    • 4、负载(Load):负载问题实际上是从另一个角度看待分散性问题。既然不同的终端可能将相同的内容映射到不同的缓冲区中,那么对于一个特定的缓冲区而言,也可能被不同的用户映射为不同 的内容。与分散性一样,这种情况也是应当避免的,因此好的哈希算法应能够尽量降低缓冲的负荷。
  • Redis实现原理
    • Redis线程模型,单线程避免了上下文切换,监听器IO复用,创建客户端的socket连接,将socket送入同步队列,dispatchHandler分派处理每一个套接字,从命令表获取执行器,执行套接字内容同时返回
    • Redis对外数据类型:string,list,hash,set,sorted set
    • Redis内部存储结构:dict,sds,ziplist,quicklist,skiplist,这里一定要清楚Redis为什么要重复发明内部存储结构的轮子,有点在哪儿,解决了什么问题,对效率是否有提升
    • Reids持久化的过程分析:http://www.jianshu.com/p/81421cfa30a7
    • Redis稳定集群部署方式,3个节点,主备–主从
    • Redis事务实现原理,队列
    • Redis数据过期策略
    • Redis的cluster模式以及一致性hash算法的实现方案,参考文章:http://blog.csdn.net/dc_726/article/details/48552531
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值