1.Redis简介
Redis是一个使用C语言开发的数据库,但与传统数据库不同的是,它存储在内存中,也就是说它是一个内存数据库,因此具有非常快的读写速度。缓存方向。
除了缓存之外,Redis 还常用于分布式锁定和消息队列。
Redis提供了多种数据类型来支持不同的业务场景。 Redis还支持事务、持久化、Lua脚本和各种集群解决方案。
优势:
极高的读写性能
支持数据持久化
支持办公室工作
丰富的数据结构
主/从复制支持
丰富的功能
坏处:
数据库容量受物理内存限制,无法用于大量数据的高性能读写。因此,Redis 的适用场景主要局限于高性能操作和少量数据的计算。
主机已停机。在机器宕机之前,部分数据无法同步到从机。切换IP后,会出现数据不一致,系统可用性降低。
2. 缓存数据处理流程
如果用户请求的数据在缓存中,则直接返回。
如果缓存中不存在,请检查数据中是否存在。
如果数据库中不存在,则更新缓存中的数据。
如果数据库中不存在则返回空数据。
3.Rsdis通用数据库
A.字符串类型String
String数据结构是一种简单的键值类型,可以存储各种数据,包括二进制数据、序列化数据、JSON化数据,甚至图像。最大512M
常用命令:set、get、strlen、exists、dec、incr、setex
应用场景: 计数器:记录播放量、记录访问量(Redis记录总数、MySQL日志)、登录确认码
B.列表类型列表
是一个按插入顺序排序的简单字符串列表,元素可以重复。您可以将元素添加到列表的开头或结尾。底层结构是一个链表。实现的是双向链表,可以支持向后查找和遍历,使操作更加方便,但代价是增加了额外的内存开销。
常用命令:rpush、lpop、lpush、rpop、lrange、llen
应用场景:消息队列、慢查询。
C.集合类型设置
String 类型的无序、唯一集合。
常用命令:sadd、spop、smembers、scard
应用场景:需要存储的数据不能重复、需要对多个数据源进行交集、并集等。
D. hash类型hash
哈希是字符串类型字段和值的映射表,特别适合存储对象。
常用命令:hset、hget、hgetall
应用场景: 系统中存储对象
E.有序集类型zset(排序集)
有序集合zset和set集合一样,是字符串类型元素的集合,不允许有重复的成员。不同之处在于zset 中的每个元素都与一个分数相关联(分数可以重复),redis 使用分数对集合中的成员从小到大进行排序。
常用命令:zadd、zscore、zcard、zrange
应用场景:需要按照特定权重对数据进行排序的场景。
4.Redis单线程模型
Redis 的文件事件处理器以单线程模式运行。
文件事件处理程序的四个部分:
多个套接字(客户端连接)
IO多路复用器(支持多个客户端连接的关键)
文件事件调度程序(将套接字与相应的事件处理程序相关联)
事件处理程序(连接响应处理程序、命令请求处理程序、命令恢复处理程序)
为什么单线程运行这么快?
纯内存操作
避免不必要的上下文切换
避免多个线程之间的争用和切换消耗CPU,避免各种锁定操作。
Redlock是一种Redis分布式锁算法,可以实现多节点分布式锁。
这种方法的特点:
互斥访问:即在任何给定时间只有一个客户端可以获取锁。
避免死锁:客户端最终可能会获得锁,即使锁定资源的服务崩溃或分裂,该锁也会被释放。
容错性:只要大多数Redis 节点(超过一半)保持活动状态,就可以照常提供服务。
14.Redis如何进行内存优化?
控制key的数量:当使用Redis存储大量数据时,通常会有很多key,而太多的key也会消耗大量的内存。
减少键和值对象:减少Redis内存使用最直接的方法是减少键和值的长度。
编码优化:Redis提供了string、list、hash、zet、set等外部类型。然而,Redis内部有不同类型编码的概念,所谓编码是指用于实现它的特定底层数据结果。编码的差异直接影响内存的使用和数据的读写效率。
15、如果你目前有一个读并发非常高的系统,并且可以使用Redis来承受大部分读请求,你会如何设计?
如果读并发较高,首先检查并发量级。 Redis单机上的读取QPS在万级别,每秒几万就可以了,而且由于是单master缓存架构,可以使用多个slave+Sentinel集群来获得每秒10W的读取执行,实现master。 -从机复制,读写分离。
使用哨兵集群的主要目的是提高缓存架构的可用性,解决单点故障问题。主库负责写,多个从库负责读。添加的Redis从实例数量根据读请求的QPS确定。如果您的读取并发量持续增加,您只需添加更多Redis 实例即可。
如果需要缓存1T+的数据,假设每个主节点都存储一部分数据,那么只有n*32G=1T主节点才能支持1T+的存储。数据量巨大。
版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。