聊一聊Redis特点

在这里插入图片描述

为什么 redis单线程,效率这么高

1、纯内存操作

2、核心是基于非阻塞的IO多路复用机制

3、单线程反而避免了多线程的频繁上下文切换问题

一、特点:
1、支持持久化
2、丰富的数据类型
3、数据的备份 主从
4、速度极高,读的速到能到11w次/秒,写的速度8w/秒
5、具有原子性,并且还支持几个操作合并后的原子性执行
二、使用场景
1、取最新n个数据的操作
2、排行榜类似的应用
3、需要精准设定过期时间的应用
4、计数器的应用
5、做唯一性检查的操作
6、实时系统
7、缓存
三、Redis性能调优
	由于redis是单线程的,所有的命令都是有一个线程串执行的,所以redis对每条命令的执行效率比较铭感
1、确保没有让redis执行耗时长的命令
2、使用popelining将连续执行的命令组合执行
3、操作系统的Transparent huge pages功能必须关闭
4、尽可能在屋里机上直接部署redis,因为在虚拟机上可能天然就有虚拟机环境带来的股友延迟
5、考虑引入读写分离机制
6、检查持久化策略
7、不要把List当做列表使用,仅当做队列使用
8、可能得化,将排序,并集,交集的等操作放在客户端执行
9、绝对禁止使用KEYS命令
10、避免一次性遍历集合类型的所有成员。应该使用SCAN类的命令进行分批,游标式的遍历
	网络引发的延迟
1、尽可能使用长连接或连接池,避免频繁创建销毁连接
2、客户端进行批量操作时,应使用Pipleline特性在一次交互中完成
	数据持久化引发的延迟:
1、AOF+fsync always的设置虽然能够绝对保证数据安全,但每个操作都会触发一次fsync,会对Redis的性能有比较明显的影响
2、AOF+ fsync every second 是比较好的方案,每秒fsync一次
3、AOF+fsync never 会提供AOF持久化方案下的最优性能
4、使用RDB持久化通常比使用AOF有更高的性能,但是得注意配置RDB策略配置
5、每一ICRDB快照和AOF Rewrite 都需要Redis主进程进行fork操纵,fork操作本会可能会产生较高的耗时,与CPU和Redis占用的内存带下有关,避免过于频繁fortk带来的延迟
	Swap引发的延迟
1、当linux将Redis所用的内存分移至swap空间时,将会阻塞Redis的线程
主从复制:一个Master 实例处理所有写请求,Master将写操作同步至所有Slave
四、主从赋值与集群分片

主从复制:一个Master 实例处理所有写请求,Master将写操作同步至所有Slave
原理:Redis Cluster中共有16384个hash slot,Redis会计算没个key的CRC16,将结果与16384取模,来决定该key存储在哪个Hash slot中,同时需要制定Redis Cluster中没个数据分片负责的Solt数,Slot的分配在任何时间点都可以进行重新分配。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值