当前位置: 首页 > news >正文

企业网站模板中文 产品列表wordpress admin plugin

企业网站模板中文 产品列表,wordpress admin plugin,快速域名网站备案,学做网站知识Redis线程模型 redis是基于内存运行的高性能k-v数据库#xff0c;6.x之前是单线程, 对外提供的键值存储服务的主要流程 是单线程#xff0c;也就是网络 IO 和数据读写是由单个线程来完成#xff0c;6.x之后引入多线程而键值对读写命 令仍然是单线程处理的#xff0c;所以 …Redis线程模型 redis是基于内存运行的高性能k-v数据库6.x之前是单线程, 对外提供的键值存储服务的主要流程 是单线程也就是网络 IO 和数据读写是由单个线程来完成6.x之后引入多线程而键值对读写命 令仍然是单线程处理的所以 Redis 依然是并发安全的 Redis为什么快 完全基于内存操作避免了传统的磁盘io读取内存这部分的消耗 数据结构简单基于哈希表结构可以在 O(1)的时间内计算出 hash 值并且找到对应的 entry位置entry 里面是一个一个 key 指针和 value 指针这也是 redis 之所以性能高的原因之一 采用单线程避免线程切换的事件不存在竞争条件也不会出现死锁而造成性能消耗 Redis多线程 1、Redis6.0 之前为什么一直不使用多线程 Redis使用单线程的可维护性高。多线程模型虽然在某些方面表现优异但是它却引入了程序执行顺序的不确定性带来了并发读写的一系列问题增加了系统复杂度、同时可能存在线程切换、甚至加锁解锁、死锁造成的性能损耗。 2、Redis6.0 为什么要引入多线程呢 因为Redis的瓶颈不在内存而是在网络I/O模块带来CPU的耗时所以Redis6.0的多线程是用来处理网络I/O这部分充分利用CPU资源减少网络I/O阻塞带来的性能损耗。 3、Redis6.0 如何开启多线程 默认情况下Redis是关闭多线程的可以在conf文件进行配置开启 4、多线程模式下是否存在线程并发安全问题 如图一次redis请求要建立连接然后获取操作的命令然后执行命令最后将响应的结果写到socket上。 在redis的多线程模式下获取、解析命令以及输出结果着两个过程可以配置成多线程执行的因为它毕竟是我们定位到的主要耗时点但是命令的执行也就是内存操作依然是单线程运行的。所以Redis 的多线程部分只是用来处理网络数据的读写和协议解析执行命令仍然是单线程顺序执行也就不存在并发安全问题。 Redis持久化 Redis 是一个内存数据库数据保存在内存中但是我们都知道内存的数据变化是很快的也容易发生丢失。Redis 还为我们提供了持久化的机制分别是RDB(Redis DataBase)和 AOF(Append Only File) RDB方式 RDB 持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式这种方式是就是将内存中数据以快照的方式写入到二进制文件中默认的文件名为 dump.rdb。 在我们安装了 redis 之后所有的配置都是在 redis.conf 文件中里面保存了 RDB 和 AOF 两种持久化机制的各种配置。当符合一定条件时 Redis 会自动将内存中的数据进行快照并持久化到硬盘。 触发时机 1save命令触发 该命令会阻塞当前Redis服务器执行save命令期间Redis不能处理其他命令直到RDB完成为止如果数据量大的话会造成长时间的阻塞所以线上环境一般禁止使用。 2bgsave命令触发 执行该命令时Redis会在后台异步进行快照操作快照同时还可以响应客户端请求。具体流程如下 执行bgsave命令时Redis主进程会fork一个子进程来完成RDB的过程会先将数据写入到一个临时二进制文件中待持久化过程都结束了再用这个临时文件替换上次持久化好的文件可以理解为Copy On Write机制。Redis主进程阻塞时间只有fork阶段的那一下。相对于save阻塞时间很短。基本上 Redis 内部所有的RDB操作都是采用 bgsave 命令。 fork的作用是复制一个与当前进程一样的进程。新进程的所有数据变量、环境变量、程序计数器等数值都和原进程一致但是是一个全新的进程并作为原进程的子进程。 3自动触发 自动触发是可以在redis.conf配置文件中修改默认达到以下三种条件就会自动触发持久化触发后底层调用的其实还有bgsave命令 AOF方式 以日志的形式来记录每个写操作将 Redis 执行过的所有指令记录下来读操作不记录只许追文件但不可以改写文件redis 启动之初会读取该文件重新构建数据换言之redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作 Redis双写一致性 延时双删 1先淘汰缓存 2再写数据库 3休眠1秒再次淘汰缓存 异步队列 增加消息队列将redis更新操作交给kafka由消息队列保证可靠性再搭建一个消费服务来异步更新redis 订阅binlog 通过订阅binlog来更新redis把搭建的消费服务作为mysql的一个slave订阅binlog解析出更新内容再更新到redis Redis事务 Redis 事务本质是一组命令的集合,一个事务中的所有命令都会被序列化在事务执行过程的中会按照顺序执行. 所有的命令在事务中并没有直接被执行. 只有发起执行 exec 命令的时候才会执行. 事务在执行的过程中不会被其他客户端发送来的命令请求所打断。但是事务不保证同一事物中多条命令执行的原子性,即使命令有错误也会添加到队列中,执行报错也不影响其他命令执行 、MULTI 用于标记事务块的开启。MULTI执行之后Redis会将后续的命令逐个放到一个缓存队列中当EXEC命令被调用时所有队列中的命令才会被原子化执行。 2、EXEC 在一个事务中执行所有先前放入队列的命令然后恢复正常的连接状态。当使用WATCH命令时只有当受监控的键没有被修改时EXEC命令才会执行事务中的命令。 3、DISCARD 放弃事务清除事务队列中的命令然后恢复正常的连接状态。如果使用了UNWATCH命令那么DISCARD命令就会取消当前连接监控的所有键。 主从复制 主从复制是指将一台 Redis 服务器的数据复制到其他的 Redis 服务器。前者称为主节点(master)后者称为从节点(slave),数据的复制是单向的只能由主节点到从节点 1、Redis为什么需要主从复制 使用Redis主从复制的原因主要是单台Redis节点存在以下的局限性 1Redis虽然读写的速度都很快单节点的Redis能够支撑QPS大概在5w左右如果上千万的用户访问Redis就承载不了成为了高并发的瓶颈。 2单节点的Redis不能保证高可用当Redis因为某些原因意外宕机时会导致缓存不可用 3CPU的利用率上单台Redis实例只能利用单个核心这单个核心在面临海量数据的存取和管理工作时压力会非常大。 2主从复制的好处 1数据冗余主从复制实现了数据的热备份是持久化之外的一种数据冗余方式。 2故障恢复如果master宕掉了使用哨兵模式可以提升一个 slave 作为新的 master进而实现故障转移实现高可用 3负载均衡可以轻易地实现横向扩展实现读写分离一个 master 用于写多个 slave 用于分摊读的压力从而实现高并发 3、主从复制的缺点 由于所有的写操作都是先在Master上操作然后同步更新到Slave上所以从Master同步到Slave服务器有一定的延迟当系统很繁忙的时候延迟问题会更加严重Slave机器数量的增加也会使这个问题更加严重 哨兵机制 哨兵模式是一种特殊的模式首先 Redis 提供了哨兵的命令哨兵是一个独立的进程作为进程它会独立运行。其原理是哨兵通过发送命令等待 Redis 服务器响应从而监控运行的多个 Redis 实例。 key过期策略 惰性删除:惰性删除是指某个键值过期后此键值不会马上被删除而是等 到下次被使用的时候才会被检查到过期此时才能得到删除。所以惰性删除的 缺点很明显:浪费内存,还需要维护一个字典记录 key 是否过期。 定期删除:每隔一定的时间会扫描一定数量的数据库字典中一定数量的 key 并清除其中已过期的 key。通过调整定时扫描的时间间隔和每次扫描的限定耗 时可以在不同情况下使得 CPU 和内存资源达到最优的平衡效果。 Redis 中同时使用了惰性过期和定期过期两种过期策略 缓存穿透 key对应的数据不存在例如id-1 DB和Redis都没有数据 解决 参数校验 对空值进行缓存返回valuenull 布隆过滤器使用bitmap先将可以访问到的资源通过映射关系放入过滤器当请求到达时先走过滤器 缓存击穿 某个key再数据库存在但在redis中key过期 解决 提前对key做过期时间设置 监控数据 使用锁只有一个请求获得互斥锁然后db中将数据查询并返回到redis中之后所有请求从redis中查询 缓存雪崩 redis中大量key集体过期 解决 将失效时间分散生成随机数key 多级架构nginx缓存redis缓存 记录缓存标记如果过期会通知另一个线程更新 查不到加排他锁 缓存预热 1、什么是缓存预热 缓存预热是指系统上线后提前将相关的缓存数据加载到缓存系统。避免在用户请求的时候先查询数据库然后再将数据缓存的问题用户直接查询事先被预热的缓存数据。 如果不进行预热那么Redis初始状态数据为空系统上线初期对于高并发的流量都会访问到数据库中 对数据库造成流量的压力。 2、缓存预热解决方案 1数据量不大的时候工程启动的时候进行加载缓存动作 2数据量大的时候设置一个定时任务脚本进行缓存的刷新 3数据量太大的时候优先保证热点数据进行提前加载到缓存 缓存降级 缓存降级是指缓存失效或缓存服务器挂掉的情况下不去访问数据库直接返回默认数据或访问服务的内存数据。降级一般是有损的操作所以尽量减少降级对于业务的影响程度。 在项目实战中通常会将部分热点数据缓存到服务的内存中这样一旦缓存出现异常可以直接使用服务的内存数据从而避免数据库遭受巨大压力。
http://www.pierceye.com/news/315446/

相关文章:

  • 商务网站的功能和建设制作外贸网站模板
  • 如何防止网站挂黑链怎么购买国外的域名
  • 企业官方网站地址怎么填微信页面设计网站
  • 国外购物网站有哪些郑州网站搜索排名
  • seo网站优化推广费用装饰行业网站建设
  • idea的网站开发登录页面做网页的
  • 寻找大连网站建设wordpress换模板 seo
  • 二手房公司网站源码网站的维护步骤
  • 衡水企业网站建设公司wordpress 快速回复
  • 网站维护需要关闭网站么找哪些公司做网站
  • 阿里巴巴做轮播网站如何建设学校的微网站首页
  • 国内设计好的网站案例网店设计风格怎么写
  • 网站建设长沙创建网页需要多少钱
  • 南通电商网站建设网站背景怎么设置
  • 无锡网站托管aspnet通讯录网站开发
  • 卫计网站建设工作总结铜陵建设行业培训学校网站
  • 手机网站竞价网页界面设计遵循的原则
  • 徐州seo推广公司广州营销型网站优化
  • 小说网站首页模板安徽华力建设集团网站
  • 减肥网站如何做公司企业模板
  • 郑州网站建设搜q.479185700怎么在百度上推广自己的公司信息
  • 深圳住建设局官方网站大连在哪个省市
  • 吉林企业建站系统费用wordpress幻灯片加载很慢
  • com域名和网站小型企业网站排名前十
  • 网站内容 优化泉州网站开发公司
  • 假发外贸网站模板做图库网站需要多少钱
  • 网站建设公司 知道万维科技wordpress支持移动
  • 经典网站建设邢台网站建设策划
  • 系统数据库与建设网站网站提交入口大全
  • 网站做数据分析的意义西安网站建设kxccc