栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis历险

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis历险

redis的特性:

 1. 单线程
 2. 纯内存访问
 3. 支持数据持久化
 4. 非阻塞的I/O

redis的应用场景:
一般使用redis做缓存的较多
可以做队列 网站访问统计 分布式session 应用排行榜 以及一些社交关系图

redis的不同版本介绍:

2.8版本```
 主从断线重连之后,采取的是部分复制(PSYNC)  只复制断线         之后的数据
  redis sentinel stable (哨兵)

3.0版本
redis cluster 

3.2版本
GEO

4.0版本
提供模块系统方便第三方拓展
非阻塞del和flushall/flushdb功能
RDB和AOF混合持久化模式
redis cluter兼容NAT和Docker

redis的结构及其内部编码:

基本数据类型:
字符串(string) : 包括整型(int)  embstr编码的简单动态字符串  简单动态字符串
列表(list) : 包括链表(linkedlist)和快速列表(quicklist)
哈希(hash): 包括哈希表(hashtable)和压缩表(ziplist)
集合(set):  包括整型集合(intset)和哈希表(hashtable)
有序集合(zset): 包括压缩表(ziplist)和跳跃表(skiplist)


其他数据类型:
bitMap
hyperloglog
GEO

持久化:

持久化:
RDB: 
 1. 内存快照
 2. 恢复速度快,持久化性能高,但是存在数据丢失风险

AOF:
 1. 日志文件追加记录
 2. 实时持久化,数据安全性高,持久化效率低

复制:

 原理:  同步RDB文件,    复制到缓冲区
 类型:  redis版本在2.8版本之后出现增量数据复制(Psync)和全量数据复制(Sync)
 拓扑:  有一下两种方式
        星型:主-从(单节点)
            主-从(多节点)
        树型:主-从(主)-从
 

高可用:

高可用主要:
redis sentinel (哨兵模式)
redis cluster(集群自带高可用)
keepalived    基本原理是:Keepalive通过脚本检测master的存活,然后通过漂移VIP(Virtual IP)完成主从切换。

分布式:

方案:
 集群:  redis cluter
 中间件分片: twemProxy   和   codisProxy
 客户端分片:  业务程序


原理:
客户端分片 : 一次性哈希算法
codis :  虚拟槽分区(1024个槽)
         集群内部数据节点独立运行,无需互相通信
redis cluter (集群): Gossip协议-- 集群数据节点内部相互通信
 					Raft算法 -- 集群内选主
 					虚拟槽分区(16384个槽)

阻塞

持久化阻塞 :  
    fork子进程 (RDB持久化 和AOF文件重写)
命令阻塞 : 
 1. keys *
 2. smembers
 3. lrange
 4. hgetall
 

内存:

A. 内存消耗:
 1. 对象内存 
     1.存储所有数据
 2. 缓冲内存
     1.客户端缓冲  : 通过参数client-output-buffer-limit控制
     2.复制积压缓冲区 : 根据repl-backlog-size参数控制
     3.AOF缓冲区	 : 用于在Redis重写AOF文件期间保存的最近写入的命令
 3. 内存碎片 : 可采用数据对齐和安全重启等方式规避内存碎片的问题 
 
B.内存回收策略
	1. 惰性删除
	2. 定时删除
	 
C.内存优化
	1. 缩减键值对象的长度
	2. 共享对象池
	3. 字符串优化
	4. 编码优化(使用ziplist编码能节约内存,但是会提高耗时- 空间换时间)
	5. 控制键的数量(使用hash结构重构字符串结构)   

客户端 :

jedis
redis-py
redigo

辅助功能:

慢查询 : (slowquery)
管道 : (pipeline)

存在问题:

 1. 缓冲无底洞
 2. 缓冲穿透
 3. 缓冲击穿
 4. 缓冲雪崩
 5. 热点key倾斜
 6. 热点key重建

优化:

vm.overcommit_memory =1
vm.swapiness =1
关闭THP特性
调大ulimit
调大TCP Backlog
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270604.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号