redis历险

本文详细介绍了Redis的主要特性,包括单线程、内存访问、持久化和非阻塞I/O。它常用于缓存、队列、统计、分布式session等场景。随着版本升级,Redis引入了哨兵、集群等高可用解决方案。文章还探讨了Redis的持久化策略(RDB和AOF)、复制机制、内存管理和优化、客户端工具以及存在的问题和优化措施。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值