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

系部网站建设太仓做网站公司

系部网站建设,太仓做网站公司,动漫设计好学吗,wordpress在php下安装教程视频总结了某公司面试遇到的值得整理记录的面试题#xff0c;比较侧重于Redis方面。 目录 Redis持久化配置 RDB AOF Redis rdb日志文件路径编辑 命令行参数设置 Redis事务 Redis事务介绍 Redis事务阶段 watch监听 Mysql隔离级别 1.READ UNCOMMITTED 2.READ COMMITTED … 总结了某公司面试遇到的值得整理记录的面试题比较侧重于Redis方面。 目录 Redis持久化配置 RDB AOF Redis rdb日志文件路径编辑 命令行参数设置 Redis事务 Redis事务介绍 Redis事务阶段 watch监听 Mysql隔离级别 1.READ UNCOMMITTED 2.READ COMMITTED 3.REPEATABLE READ 4.SERIALIZABLE App登录验签 踢出并保持30分钟不能登录实现方案 Redis磁盘空间满清理冷数据 删除过期的键 使用LFU算法删除冷门键 使用volatile-lru或volatile-lfu策略控制过期键的删除 定期进行数据持久化 Redis 确定哪些是热key 缓存雪崩 产生原因 影响 防范策略 设置不同的过期时间 使用热备份 数据预热 使用限流和熔断机制 缓存击穿 产生原因 影响 防范策略 设置热点数据永不过期 使用互斥锁 缓存穿透 产生原因 影响 防范策略 缓存空值 使用布隆过滤器 来源分组 只要十个分组 一条sql计算两种条件的数量 总结 Redis持久化配置 Redis支持两种持久化方式RDBRedis DataBase和AOFAppend Only File。 RDB 根据配置定时将内存中的数据快照保存到磁盘的一个压缩二进制文件中。 Redis的redis.conf配置文件中相关的RDB持久化配置参数 # 是否开启RDB持久化save seconds changes# 例如如下配置表示900秒内至少1个键被修改则触发保存save 900 1# RDB文件名dbfilename dump.rdb# RDB文件和AOF文件的保存位置dir /path/to/your/redis/directory# 是否在导出.rdb文件时使用LZF压缩rdbcompression yes AOF 每个写命令都通过append操作保存到文件中。 Redis的redis.conf配置文件中相关的AOF持久化配置参数 # 是否开启AOF持久化appendonly yes# AOF文件名appendfilename appendonly.aof# AOF文件的保存位置dir /path/to/your/redis/directory# AOF文件的更新频率appendfsync everysec# 是否在AOF重写期间对新写操作进行同步no-appendfsync-on-rewrite no# AOF文件大小超过此值时触发重写auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb 注意 开启AOF时appendfsync的设置对性能影响较大everysec为推荐配置即每秒同步一次。 Redis rdb日志文件路径编辑 在redis的配置未见redis.conf中可以找到以下配置项 # 默认的RDB名称dump.rdbdbfilename dump.rdb 可以将dbfilename配置为自定义的RDB名称例如 dbfilename mydata.rdb 命令行参数设置 在启动Redis的命令行中可以使用参数--dbfilename来设置RDB名称例如 redis-server --dbfilename mydata.rdb Redis事务 事务是指一个完整的动作要么全部执行要么什么也没有做。Redis 事务不是严格意义上的事务只是用于帮助用户在一个步骤中执行多个命令。单个 Redis 命令的执行是原子性的但 Redis 没有在事务上增加任何维持原子性的机制所以 Redis 事务的执行并不是原子性的。 Redis事务介绍 Redis 事务可以理解为一个打包的批量执行脚本但批量指令并非原子化的操作中间某条指令的失败不会导致前面已做指令的回滚也不会造成后续的指令不做。 redis事务的主要作用就是串联多个命令防止别的命令插队。 Redis 在形式上看起来也差不多MULTI、EXEC、DISCARD 这三个指令构成了 redis 事务处理的基础。 MULTI用来组装一个事务从输入Multi命令开始输入的命令都会依次进入命令队列中但不会执行直到输入Exec后redis会将之前的命令依次执行。 EXEC用来执行一个事务。 DISCARD用来取消一个事务。 Redis事务阶段 redis事务分2个阶段组队阶段、执行阶段 组队阶段只是将所有命令加入命令队列 执行阶段依次执行队列中的命令在执行这些命令的过程中不会被其他客户端发送的请求命令插队或者打断。 所有的指令在 exec 之前不执行而是缓存在服务器的一个事务队列中服务器一旦收到 exec 指令才开执行整个事务队列执行完毕后一次性返回所有指令的运行结果。因为 Redis 的单线程特性不用担心自己在执行队列的时候被其它指令打搅可以保证他们能得到的有顺序的执行。 watch监听 WATCH在执行multi之前先执行watch key1 [key2 …]可以监视一个或者多个key若在事务的exec命令之前这些key对应的值被其他命令所改动了那么事务中所有命令都将被打断即事务所有操作将被取消执行。 unwatch取消 WATCH 命令对所有 key 的监视。如果在执行 WATCH 命令之后 EXEC 命令或 DISCARD 命令先被执行了的话那么就不需要再执行UNWATCH 了。 Mysql隔离级别 在 MySQL中事务的隔离级别有以下 4 种 读未提交READ UNCOMMITTED 读已提交READ COMMITTED 可重复读REPEATABLE READ 序列化SERIALIZABLE MySQL 默认的事务隔离级别是可重复读这4种隔离级别的说明如下。 1.READ UNCOMMITTED 未提交读该隔离级别的事务可以看到其他事务中未提交的数据。该隔离级别因为可以读取到其他事务中未提交的数据而未提交的数据可能会发生回滚因此把该级别读取到的数据称之为脏数据把这个问题称之为脏读。 2.READ COMMITTED 提交读该隔离级别的事务能读取到已经提交事务的数据因此它不会有脏读问题。但由于在事务的执行中可以读取到其他事务提交的结果所以在不同时间的相同 SQL查询中可能会得到不同的结果这种现象叫做不可重复读。 3.REPEATABLE READ 可重复读是MySQL的默认事务隔离级别它能确保同一事务多次查询的结果一致。但也会有新的问题比如此级别的事务正在执行时另一个事务成功的插入了某条数据但因为它每次查询的结果都是一样的所以会导致查询不到这条数据自己重复插入时又失败因为唯一约束的原因。明明在事务中查询不到这条信息但就是插入不进去这就叫幻读 Phantom Read。 4.SERIALIZABLE 序列化事务最高隔离级别它会强制事务排序使之不会发生冲突从而解决了脏读、不可重复读和幻读问题但因为执行效率低所以真正使用的场景并不多。 App登录验签 踢出并保持30分钟不能登录实现方案 账号密码登录后通过设置的字符串中取得部分字符串加上通过uniqid函数获得的唯一字符串及随机数字组合成token。设置此token为当前用户的cookie。 并把用户信息数组进行非对称加密处理后返回客户端。 验证是否登录时客户端需把登录返回的信息进行解密后获取token和用户id及加盐字符串组合后通过hash生成一个签名。并把签名和登录token和用户id组合设置为cookie。通过https协议发送给后端后端通过相同方式进行验证以判断请求是否合法及是否登录。 踢出登录设置用户的状态为禁用并设置禁止登录的最终时间戳为当前的30分钟后时间戳 Redis磁盘空间满清理冷数据 当Redis的空间满了需要进行清理工作以确保其正常运行。以下是几种常见的清理方法 删除过期的键 Redis支持设置键的过期时间一旦过期键会自动被删除。可以使用EXPIRE或PEXPIRE命令设置键的过期时间或使用TTL命令查看键的剩余过期时间。可以编写一个定时任务来定期检查并删除过期的键。 使用LFU算法删除冷门键 Redis还支持使用LFU最近最少使用算法来删除键可以在配置文件中设置maxmemory-policy为allkeys-lfu。这样当Redis的内存空间快要满时会优先删除最近最少使用的键。 使用volatile-lru或volatile-lfu策略控制过期键的删除 可以在配置文件中设置maxmemory-policy为volatile-lru或volatile-lfu来控制删除过期键时使用的算法。这样Redis会优先删除设置了过期时间的键以便为新的键腾出空间。 定期进行数据持久化 可以使用Redis的RDB或AOF持久化方式将数据写入到磁盘上。这样即使Redis的内存空间满了数据仍然可以从磁盘上读取避免数据丢失。可以根据实际需求来决定数据持久化的频率和是否进行压缩。 总的来说清理Redis的空间可以通过删除过期键、使用LRU或LFU算法删除冷门键、控制过期键的删除策略以及进行数据持久化等方式来实现。根据实际情况和需求选择适当的清理方法以确保Redis的正常运行。 Redis 确定哪些是热key 可以通过分析redis的访问日志或使用redis自带的监控工具来实现。 1.使用info命令获取当前的统计信息包括所有的key访问次数 2.分析这些信息找出访问频率高的key redis-cli info state | grep keyspace 这个命令会列出所有key的访问次数。 然而redis本身不会跟踪每个key的具体访问频率。 要更具体需要在应用程序层面进行跟踪列如通过记录每个key的访问次数。 在应用程序中通过中间件或拦截器来记录每个key的访问次数并定期将这些信息发送到后台服务进行统计分析。 缓存雪崩 缓存雪崩是指在某一时刻大量的缓存数据同时失效导致大量的请求直接打到数据库上从而引发数据库的压力激增可能导致整个系统的崩溃这种现象被称为缓存雪崩。 产生原因 缓存雪崩通常由于缓存的过期策略或者缓存服务器的故障导致。例如如果我们将大量的缓存数据设置为在同一时间点过期那么在这个时间点这些缓存数据将同时失效导致大量的请求直接打到数据库上从而可能引发缓存雪崩。 影响 缓存雪崩的影响是灾难性的。由于大量的请求直接打到数据库上数据库的压力激增可能导致数据库崩溃从而影响整个系统的正常运行。在极端情况下可能导致整个系统的崩溃。 防范策略 防止缓存雪崩的策略主要有以下几种 设置不同的过期时间 通过为每个缓存项设置稍微不同的过期时间可以避免大量的缓存数据同时失效。 使用热备份 可以使用热备份的缓存服务器当主缓存服务器出现问题时可以立即切换到备份服务器。 数据预热 在缓存数据过期前提前将数据加载到缓存中避免缓存数据的同时失效。 使用限流和熔断机制 通过限流和熔断机制可以防止数据库被大量的请求打垮。 缓存击穿 缓存击穿是指一个存在的数据在缓存中过期导致所有的请求都直接打到数据库造成数据库短时间内压力过大。这种现象被称为缓存击穿。 产生原因 缓存击穿通常发生在一个热点数据的缓存过期的时候。由于这个数据非常热门所以在缓存过期的瞬间大量的请求会直接打到数据库。 影响 缓存击穿会导致大量的请求直接访问数据库从而增加数据库的负载可能会导致数据库性能下降甚至崩溃。 防范策略 防止缓存击穿的策略主要有以下几种 设置热点数据永不过期 对于一些访问频率非常高的热点数据可以设置为永不过期这样就可以避免因为缓存过期而导致的缓存击穿。 使用互斥锁 当缓存失效的时候不是立即去load db而是先使用缓存工具的某些带成功操作返回值的操作比如Redis的SETNX或者Memcache的ADD去set一个mutex key当操作返回成功时再去load db。这样可以防止大量的并发请求去数据库加载数据。 缓存穿透 缓存穿透是指查询一个数据库中不存在的数据由于缓存中也没有所以每次查询都会直接访问数据库。如果有大量此类请求就会对数据库造成很大压力这种现象被称为缓存穿透。 产生原因 缓存穿透通常发生在查询一个数据库中不存在的数据时。由于缓存中也没有这个数据所以每次查询都会直接访问数据库。如果有大量此类请求就会造成缓存穿透。 影响 缓存穿透会导致大量的请求直接访问数据库从而增加数据库的负载可能会导致数据库性能下降甚至崩溃。 防范策略 防止缓存穿透的策略主要有以下几种 缓存空值 即使数据库中没有某个值也可以在缓存中存储一个空值或特殊标记这样当查询这个值时就可以直接从缓存中获取而不需要访问数据库。 使用布隆过滤器 布隆过滤器是一种空间效率极高的概率型数据结构可以用来判断一个元素是否在一个集合中。我们可以将所有可能存在的数据哈希到布隆过滤器中当查询一个数据时先判断它是否在布隆过滤器中如果不在就可以直接返回而不需要访问数据库。 来源分组 只要十个分组 SELECT source FROM service_order GROUP BY source limit 10; 一条sql计算两种条件的数量 SELECT count(case when to_state 2 THEN 0 end) as num1, count(case when to_state0 THEN 0 end) as num2 FROM service_order; 总结 这家公司的技术似乎比较擅长Redis领域的技术。
http://www.w-s-a.com/news/391400/

相关文章:

  • 兰州网站建设推广现代营销手段有哪些
  • 郴州网站seo优化网络安全哪个培训班比较好
  • 做网站需要记哪些代码企业网站建设思路
  • 重庆自助建站模板网络服务器配置与管理
  • 外贸网站怎样做小程序买量平台
  • 中山精品网站建设机构海外留学网站建设方案
  • 长春网站建设工作如何取消wordpress页脚
  • 忻府网站建设排名网络管理系统官网
  • 张家港外贸网站建设国医堂网站平台建设
  • 水冶那里有做网站的对于网站链接优化有哪些建议
  • 宝安中心地铁站是几号线化妆品网站做的好的
  • 海宁营销型网站设计企业融资是什么意思
  • 淘宝客做网站要钱吗网站开发试题库
  • 10g空间网站做视频网站网站建设找超速云
  • 一元购网站怎么做企业网站源码cms
  • 域名不变 网站改版临沂企业网站建站模板
  • 天河网站建设信科网络外包公司和公司直招哪个好
  • 网站制作哈尔滨聊天系统源码
  • 网站建设朋友圈素材青白江建设网站
  • 红酒网站设计软件设计文档
  • 如何创建网站目录网站申请支付宝接口
  • 网站做区块链然后往里面投钱品牌设计公司收费标准
  • 2022互联网+创新创业项目呼和浩特企业网站排名优化
  • 电子商务类网站建设山西自助建站系统怎么用
  • odoo做网站网站设置专栏有什么好处
  • 局域网内个人网站建设查询企业的网站有哪些
  • 网站建设属于技术开发吗网页制作团队
  • 做家常菜的网站哪个好哪个网站做图片外链
  • 眼科医院网站设计怎么做6深圳宝安是什么风险等级
  • 网站制作容易吗logo免费生成网站