建设网站需要两种服务支持网站建设公司的岗位职责
web/
2025/10/1 21:25:02/
文章来源:
建设网站需要两种服务支持,网站建设公司的岗位职责,新网站如何做搜索引擎收录,wordpress如何修改电子邮箱目录
今日良言#xff1a;有志者自有千计万计#xff0c;无志者只感千难万难
一、简介
二、Redis的安装
三、Redis的简单使用
四、Redis相关知识点
1.缓存分类
2.五大基本数据类型使用
3.持久化
4.常见面试题 今日良言#xff1a;有志者自有千计万计#xff0c;无…目录
今日良言有志者自有千计万计无志者只感千难万难
一、简介
二、Redis的安装
三、Redis的简单使用
四、Redis相关知识点
1.缓存分类
2.五大基本数据类型使用
3.持久化
4.常见面试题 今日良言有志者自有千计万计无志者只感千难万难 一、简介
先来介绍一下什么是缓存
缓存是一个高速数据交换的存储器使用它可以快速的访问和操作数据。
对于程序来说如果没有使用缓存程序的调用流程如下 但是随着公司的业务发展逐步变成了多个程序调用一个数据库的情况了: 当公司业务发展到一定规模之后最可能出现性能拼劲的地方就是数据库了为了防止数据库被过渡的浪费就引入了缓存避免程序直接访问数据库加入缓存后流程如下 加入缓存以后所有的程序不会直接调⽤数据库而是会先调用缓存当缓存中有数据时会直接返回当缓存中没有数据时才去查询数据库这样就大大的降低了数据库的压力并加速了程序的响应速度。 缓存优点 1. 缓存一般都是使用key-value 查询数据的因为不像数据库还有查询的条件等因素所以查询的性能一般会比数据库高。 2. 缓存的数据是存储在内存的而数据库的数据是存储在磁盘中的因为内存的操作性能远远大于磁盘因此缓存的查询效率会高很多 3.缓存更容易做分布式部署而数据库很难实现分布式部署因此缓存的负载和性能更适合平行扩展和增加。 Redis 是常见的分布式缓存。
二、Redis的安装
1. yum 命令安装 redis 使用以下命令直接将 redis 安装到 linux 服务器: yum -y install redis 2. 启动 redis
使用以下以后台运行方式启动 redis redis-server /etc/redis.conf 这里的redis.conf 是redis的配置文件可以在这个配置文件中修改 redis的相关配置
3. 操作redis
使用以下命令启动 redis 客户端: redis-cli 如果修改了 redis 的默认端口号6379启动 redis 客户端使用如下命令 redis-cli -p xxxx -p后面是修改后的端口号 4. 设置远程连接 1将 redis 配置文件下载到本地redis 配置文件是 linux 下的 /etc/redis.conf 先切到 etc 目录下然后找redis.conf 文件 2将 redis.conf 配置文件中的 “bind 127.0.0.1” 注释。 打开 redis.conf 文件然后找到 bind 127.0.0.1 并注释 3将 redis.conf 中的“protected-mode yes” 改为“protected-mode no” 4.将修改后的 redis.conf 文件上传到 etc目录下 5.使用 命令 redis-cli shutdown 先关闭服务 再使用 redis-server /etc/redis.conf 启动 redis 服务 注
远程连接后redis 的默认端口容易被入侵云服务器也会被入侵这就导致会有人使用你的服务器攻击别人如下图博主被搞了好久天天攻击别人 所以为了安全起见可以修改一下 redis 的端口还是下载 redis.conf 文件然后修改里面配置找到 port修改默认端口 6379 为别的端口 修改了端口号以后需要在云服务器的防火墙那里开放这个端口。 然后再新增一个密码
找到 requirepass foobared 然后注释掉再新增 requirepass 你的密码 然后再重复 上述 4) 5) 步。
此时使用 redis-cli -p 端口号 打开客户端 此时还需要输入密码
auth 后面跟上刚才新增的密码 出现 OK 后即可使用本地redis 可以使用如下软件远程连接 redis 打开后 然后即可连接成功。 三、Redis的简单使用 四、Redis相关知识点
1.缓存分类 缓存大致可以分类两类: 本地缓存 本地缓存也叫单机缓存也就是说可以应用在单机环境下的缓存。所谓的单机环境是指将服务部署到⼀台服务器上如下图: 本地缓存的特征是只适用于当前系统。 常见本地缓存有Spring Cache、MyBatis 的缓存等。 分布式缓存 分布式缓存是指可以应⽤在分布式系统中的缓存。所谓的分布式系统是指将⼀套服务器部署到多台服务器并且通过负载分发将⽤户的请求按照⼀定的规则分发到不同服务器如下图 常见的分布式缓存有 Redis 和 Memcached。 Redis 和 Memcached 的区别如下 1. 存储方式不同memchched 把数据全部存到内存之中断电后会挂掉数据不能超过内存大小。redis 有部分存到硬盘中这样能保持数据的持久性。 2. 数据支持类型 memcached 对数据类型支持相对简单redis 有复杂的数据类型。 3. 存储值大小不同redis 最大可以达到 512mbmemcached 只有 1mb。 通常情况下如果是单机 Spring 项⽬会直接使⽤ Spring Cache 作为本地缓存如果是分布式环境⼀般会使⽤ Redis。 2.五大基本数据类型使用
Redis 有五大基本数据类型 String 字符串类型 Hash 字典类型 List 列表类型 Set 集合类型 ZSet 有序集合类型 其中最常用的是 字符串类型和 字典类型。 String 字符串类型 字符串类型它是以键值对 key-value 的形式进行存储的根据 key 值获取 value 值它的使用相对比较简单但是实际项目中应用非常广泛。 字符串的使用如下 Hash 字典类型 字典类型又被称为散列表或者是哈希表类型它是将一个键值 key 和一个特殊的“哈希表”关联起来这个“哈希表”包含两列数据字段和值它就相当于 Java 中的 MapString,MapString,String 结构同时这里的字典类型又很像 Java 中的会话。 字典类型的使用如下: 通常情况下字典类型会使用数组的方式来存储相关的数据但发生哈希冲突时才会用链表的结构来存储数据。 List 列表类型 列表类型是一个使用链表结构存储的有序结构它的元素插入会按照先后顺序存储到链表结构中因此它的元素操作插入和删除时间复杂度为O(1)所以相对而言它的速度还是比较快的但是它的查询操作的时间复杂度为 On因此查询可能会比较慢。 列表类型的使用如下: 列表的典型使用场景有两个 1消息队列 2文章列表 Set 集合类型 集合类型 是一个无序并唯一的键值集合。 集合类型的使用如下: 集合类型和列表类型的区别如下 1列表可以存储重复元素集合只能存储非重复元素。 2列表是按照先后顺序存储元素的而集合是无序方式存储元素的。 ZSet 有序集合类型 有序集合类型Sorted Set相比于集合类型多了一个排序属性 score分值对于有序集合 ZSet 来说每个存储元素相当于有两个值组成的一个是有序集合的元素值一个是排序值。有序集合的存储元素值是不能重复的但分值是可以重复的。 有序集合类型的使用如下: 有序集合的使用场景如下: 1学生成绩排名。 2粉丝列表根据关注的先后时间排序。 3.持久化
所谓的持久化就是将数据从内存保存到磁盘的过程它的目的就是为了防止数据丢失。 redis 的持久化方式有三种: 1快照方式RDB,Redis DataBase 将某一时刻的内存数据以二进制的方式写入磁盘。 RDB 的优点: aRDB 的内容为二进制的数据占用内存更少更紧凑更适合做备份文件。 bRDB 对容灾恢复非常有用它是一个紧凑的文件可以更快的传输到远程服务器进行 Redis 服务恢复。 c与AOF 的格式相比RDB 文件可以更快的重启。 RDB 的缺点: a因为 RDB 只能保存某个时间间隔的数据如果中途 Redis 服务被以外终止了则会丢失一段时间的 Redis 数据。 bRDB 需要经常 fork() 才能使用子进程将其持久化到磁盘上如果数据集很大fork() 可能很耗时并且如果数据集很大且 CPU 性能不佳则会导致 Redis 停止为客户端服务几毫秒甚至一秒钟。 2文件追加方式AOF,Append Only File 记录所有的操作命令并以文本的形式追加到文件中。 AOF 的优点 aAOF 持久化保存的数据更加完整AOF 提供了三种保存策略每次操作保存、每秒钟保存一次、跟随系统的持久化策略保存其中每秒保存一次从数据的安全性和性能两方面考略是一个不错的选择也是 AOF 默认的策略即使发生了意外情况最多只会丢失 1 s的数据。 bAOF 采用的是子命令追加的写入方式所以不会出现文件损坏的问题即使由于某些以外原因导致了最后操作的持久化数据写⼊了⼀半也可以通过 redis-check-aof 工具轻松的修复。 cAOF 持久化文件非常容易理解和解析它是把所有的 Redis 键值操作命令以文件的方式存入了磁盘即使不小心使用 fullshall 命令删除了所有键值信息只要 AOF 文件删除最后的 fullshall 命令重启 Redis 即可恢复之前误删的数据。 AOF 的缺点 a对于相同的数据集来说AOF 文件要大于 RDB 文件。 b在 Redis 负载比较高的情况下RDB 比 AOF 性能更好。 cRDB 使用快照的形式来持久化整个 Redis 数据而 AOF 只是将每次执行的命令追加到 AOF 文件中因此RDB 比 AOF 文件更健壮。 3混合持久化方式 Redis 4.0 之后新增的方式混合持久化是结合了 RDB 和 AOF 的优点在写入的时候先把当前的数据 以 RBD 的形式写入文件的开头再将后续的操作命令以 AOF 的形式存入文件这样既能保证 Redis 重启时的速度又能降低数据丢失的风险。 混合持久化的优点 结合了 RDB 和 AOF 的优点开头为 RDB 的格式使得 Redis 可以更快的启动同时结合了 AOF 的优点降低了大量数据丢失的风险。 混合持久化的缺点 aAOF 文件中添加了 RDB 格式的内容使得 AOF 文件的可读性变得很差。 b兼容性差如果开启混合持久化那么此混合持久化 AOF 文件就不能用在 Redis 4.0 之前的版本。 4.常见面试题
接下来介绍一下Redis 的相关面试题
1缓存雪崩
缓存雪崩指的是在短时间内大量缓存同时过期导致大量的用户请求直接操作数据库从而对数据库造成了很大的压力严重情况下可能会导致数据库宕机这种情况称为缓存雪崩。 缓存雪崩的解决方案 a加锁排队 加锁排队可以起到缓冲的作用方式大量的用户请求同时操作数据库但它的缺点是增加了系统的响应时间降低了系统的并发量牺牲了一部分用户的体验。 b随机化过期时间 为了避免缓存同时过期在设置缓存的时候添加随机过期时间这样就可以极大的避免大量缓存同时失效。 c设置二级缓存 二级缓存指的是除了 Redis 本身的缓存之外再设置一层缓存当 Redis 失效之后先去查询二级缓存并非直接查询数据库。 2缓存穿透
缓存穿透指的是查询缓存和数据库无结果由于数据库查询无结果出于容错考虑不会将结果保存到缓存中因此每次请求都会去查询数据这种情况就叫做缓存穿透。 缓存穿透的解决方案 缓存空结果 每次将数据库查询的数据都保存到缓存中为了提高前台用户的使用体验解决长时间内查询不到任何信息的情况可以将空结果的缓存时间设置的短一些例如3-5分钟。 3缓存击穿
缓存击穿指的是某一热点缓存在某一时刻过期此时大量用户请求直接操作数据库会给数据库造成巨大的压力这种情况就叫做缓存击穿。 缓存击穿的解决方案 a加锁排队 和解决缓存雪崩的加锁排队的方法类似都是在查询数据库的时候加锁排队避免大量用户同时请求数据库以此来减少数据库的压力。 b设置永不过期 对于热点缓存可以设置永不过期这样就能包含保证数据的稳定性。但是需要注意每次数据库的数据更改以后需要更新热点缓存的数据不然就会造成查询结果的误差。 4缓存预热
缓存预热并不是一种问题而是使用缓存时的一个优化方案它可以提高前台用户的使用体验。
缓存预热指的是在系统启动的时候先把查询结果预存到缓存中以便用户后面查询时可以直接从缓存中读取节约用户的等待时间。 缓存预热的实现思路有三种 a把需要缓存的方法写到系统初始化方法中这样系统在启动的时候就会自动的加载数据并缓存数据。 b把需要缓存的方法挂载到某个页面或者后端接口上手动触发缓存预热。 c设置定时任务定时自动进行缓存预热。 补充
最后介绍一下 Redis 集群
随着业务的不断发展单机 Redis 的性能已经不能满足需求了此时需要将单机 Redis 扩展为多机服务Redis 多机服务 主要包含以下3个内容 1Redis 主从同步 2Redis 哨兵模式 3Redis 集群服务(Redis 3.0新增功能) 1主从同步
主从同步主从复制是 Redis 高可用服务的基石也是多机运行中最基础的一个。把主要存储数据的节点叫做主节点master把其它通过复制主节点数据的副本节点叫做从节点从节点如下图 在Redis 中一个主节点可以拥有多个从节点一个从节点也可以是其它服务器的主节点如下图 主从同步优点 a性能方面 有了主从同步之后可以把查询任务分配给从服务器用主服务器来执行写操作这样极大的提高了程序运行的效率把所有压力分摊给各个服务器。 b高可用 当有了主从同步之后当主服务器节点发生宕机之后可以迅速的把从节点提升为主节点为 Redis 服务器的宕机恢复节省了宝贵时间。 c防止数据丢失 当主服务器的磁盘坏掉之后其他从服务器还保留着相关的数据不至于数据全部丢失。 主从同步的缺点 当主节点崩溃之后需要人工干预才能恢复 Redis 的正常使用。 2Redis 哨兵模式
当主从服务器发生宕机的节点比较多的情况下如果需要人工恢复这样的难度和花费时间是很大的因此需要一个自动的工具——Redis Sentinel哨兵模式来把手动的过程变成自动的让 Redis 拥有自动容灾恢复的能力。
使用哨兵模式可以用来监控主从服务器节点并在主从服务器出现问题的时候自动容灾恢复。
哨兵模式如下图 3Redis 集群服务(Redis 3.0新增功能)
Redis 集群Redis Cluder是 Redis 多机运行最完美的解决方案它是 Redis 3.0之后推出的服务它的出现可以让我们完全抛弃主从同步和哨兵模式来实现 Redis 多机运行。
Redis 集群 是无代理模式去中心化的运行模式客户端发送的绝大多数命令会直接交给相关节点执行这样大部分请求命令无需转发或者仅转发一次的情况下就能完成请求和响应所以集群单个节点的性能与单机 Redis 服务器的性能是非常接近的因此在理论情况下当水平扩展一倍的主节点就相当于请求处理的性能也提高了一倍所以 Redis 集群的性能是非常高的。
Redis 集群如下图 Redis 集群可以有无数个主从节点而 Redis 的主从同步只能有一个主节点因此Redis 集群拥有更强大的平行扩展能力也就是说当 Redis 集群拥有两个主节点时从理论上来说Redis 的性能比单机服务来说性能提高了 2 倍。 以上就是 Redis 的相关内容。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85262.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!