当前位置: 首页 > news >正文 网站建设合同任阜阳网站制作公司多少钱 news 2025/11/5 4:07:21 网站建设合同任,阜阳网站制作公司多少钱,自己做网站到哪里去接广告,网络文化经营许可证经营范围文章目录 Redis的三种持久化策略及选取建议前言RDB#xff08;快照#xff09;概述优缺点 AOF#xff08;追加文件#xff09;概述优缺点AOF刷盘策略AOF重写 选取正确的持久化策略AOF和RDB的选择AOF与RDB的混合模式AOF重写和RDB持久化的冲突AOF校验机制三种模式的选择建议 … 文章目录 Redis的三种持久化策略及选取建议前言RDB快照概述优缺点 AOF追加文件概述优缺点AOF刷盘策略AOF重写 选取正确的持久化策略AOF和RDB的选择AOF与RDB的混合模式AOF重写和RDB持久化的冲突AOF校验机制三种模式的选择建议 持久化策略常见问题及解决方案AOF文件过大AOF文件损坏AOF 文件可能会被截断RDB文件丢失RDB文件损坏 总结系列文章目录 Redis的三种持久化策略及选取建议 前言 Redis是一个基于内存的高性能的键值型数据库它支持三种不同的持久化策略RDB快照、AOF追加文件、混合。这三种策略各有优缺点需要根据不同的场景和需求进行选择和配置。本文将介绍这三种策略 RDB快照 概述 RDB持久化策略是指在一定的时间间隔内将Redis内存中的数据以二进制文件的形式保存到硬盘上。这个二进制文件就是一个快照它记录了某个时刻Redis内存中的所有数据。RDB持久化策略可以通过配置文件或者命令来触发配置文件中可以设置多个条件当任意一个条件满足时就会执行一次快照操作。如下所示 save 900 1 # 900秒内执行一次 set 操作 则持久化1次 save 300 10 # 300秒内执行10次 set 操作,则持久化1次 save 60 10000 # 60秒内执行10000次 set 操作,则持久化1次 命令有两种 save不建议使用会阻塞redis服务的进程直到成功创建RDB文件bgsave父进程创建一个子进程生成RDB文件父进程可以正常处理客户端的指令不影响主进程的服务 优缺点 RDB持久化策略的优点有 RDB文件是一个紧凑的二进制文件占用空间小传输速度快适合做备份和灾难恢复RDB文件恢复数据的速度比AOF快因为只需要加载一次文件即可RDB持久化对Redis服务器的性能影响较小因为大部分工作由子进程完成 RDB持久化策略的缺点有 RDB文件不能实时或者近实时地反映Redis内存中的数据因为它是定时触发的。如果在两次快照之间发生故障可能会丢失一部分数据RDB文件在生成过程中可能会占用较多的内存和CPU资源因为需要复制主进程的内存并执行压缩操作 AOF追加文件 概述 AOF持久化策略是指将Redis服务器执行的每一条写命令都记录到一个文本文件中这个文本文件就是一个追加文件append only file AOF有三种持久化策略也就是刷盘策略。可以根据不同的场景使用不同的刷盘策略。 然而随着时间的推移AOF文件也会越来越大因为它记录了所有的写命令。这样会导致AOF文件占用过多的磁盘空间以及恢复数据的时间过长。为了解决这个问题Redis提供了AOF重写机制来压缩和优化AOF文件。 优缺点 AOF持久化策略的优点有 AOF文件可以实时或者近实时地记录Redis内存中的数据因为它是每次写命令或者每秒钟同步一次。如果在同步之间发生故障可能会丢失一部分数据但是数据丢失的概率比RDB小。AOF文件是一个文本文件可以方便地查看和编辑。AOF文件中的命令是Redis协议格式的可以直接用Redis客户端来执行。AOF文件可以自动进行重写以减少冗余命令和文件体积。重写过程不影响Redis服务器的正常服务也不会丢失任何数据。 AOF持久化策略的缺点有 AOF文件通常比RDB文件大占用更多的磁盘空间AOF文件恢复数据的速度比RDB慢因为需要重新执行所有的命令AOF文件在写入过程中可能会出现数据不一致的情况例如命令只写入了一半或者写入了错误的命令。这种情况下需要用redis-check-aof工具来修复AOF文件 AOF刷盘策略 当Redis重启时可以通过重新执行追加文件中的命令来恢复数据。AOF持久化策略可以通过配置文件来开启和设置它决定了写命令记录到AOF文件的频率。有三个选项 no写入缓存什么时候刷盘由redis决定everysec每隔一秒刷一次盘always写入缓存时同时写入磁盘尽快刷盘而不是实时刷盘 以下是三个策略的对比 类型数据安全性性能no低高everysec较高较高always高低 AOF重写 AOF重写机制的原理是Redis会创建一个新的AOF文件然后根据内存中的当前数据状态生成相应的写命令并写入到新的AOF文件中。这样新的AOF文件就只包含了最终数据的写命令而不包含任何无效或者冗余的命令。例如 # 原始AOF文件 set a 1 set b 2 incr a del b set c 3# 重写后的AOF文件 set a 2 set c 3上图就是重写前和重写后的文件对比因为AOF是追加的是顺序读写ES也是这样的所以重写后的命令set a 1与incr a变成为set a 2。为了保证在AOF重写期间的新数据不丢失Redis中引入了AOF重写缓冲区。当开始执行AOF文件重写之后又接收到客户端的请求命令不但要将命令写入原本的AOF缓冲区根据上面提到的参数刷盘还要同时写入AOF重写缓冲区 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u9lEQqp9-1684733193342)(https://secure2.wostatic.cn/static/sH2Ncnf2Vc3WRoQQWrk8Q/redis_aof_rewrite.png?auth_key1684286048-feAWJs15rwF6vcevzJg77u-0-b5ee64f632fc1b396eb189fd041deb46)] 一旦子进程完成了AOF文件的重写此时会向父进程发出信号父进程收到信号之后会进行阻塞阻塞期间不执行任何命令并进行以下两项工作 将AOF重写缓冲区的文件刷新到新的AOF文件内将新AOF文件进行改名并原子操作的替换掉旧的AOF文件 随后在完成了上面的两项工作之后整个AOF重写工作完成父进程开始正常接收命令。 自动触发自动触发可以通过以下参数进行设置。 # 文件大小超过上次AOF重写之后的文件的百分比。默认100 # 也就是默认达到上一次AOF重写文件的2倍之后会再次触发AOF重写 auto-aof-rewrite-percentage 100 # 设置允许重写的最小AOF文件大小,默认是64M # 主要是避免满足了上面的百分比但是文件还是很小的情况。 auto-aof-rewrite-min-size 64mb手动触发执行bgrewriteaof命令。 选取正确的持久化策略 Redis现有的持久化策略有三种 AOFRDBAOF与RDB混合 他们各有优缺点需要结合不同的应用场景综合考虑首先先讲解AOF和RDB的选择再讲解混合模式 AOF和RDB的选择 在Redis中AOF和RDB两种持久化方式各有优缺点一般来说有以下几个方面需要参考 数据安全性如果要求数据不丢失推荐AOF AOF可以采取每秒同步一次数据或每次写操作都同步用来保证数据安全性 如果使用每秒同步一次策略则最多丢失一秒的数据如果使用每次写操作都同步策略安全性达到了极致但这会影响性能 RDB是一个全量的二进制文件恢复时只需要加载到内存即可但是可能会丢失最近几分钟的数据取决于RDB持久化策略 数据恢复速度如果要求快速恢复数据推荐RDB AOF需要重新执行所有的写命令恢复时间会更长RDB是一个全量的二进制文件恢复时只需要加载到内存即可 数据备份和迁移如果要求方便地进行数据备份和迁移推荐RDB AOF文件可能会很大传输速度慢RDB文件是一个紧凑的二进制文件占用空间小传输速度快 数据可读性如果要求能够方便地查看和修改数据推荐AOF AOF是一个可读的文本文件记录了所有的写命令可以用于灾难恢复或者数据分析RDB是一个二进制文件不易查看和修改 数据安全性数据恢复速度数据备份和迁移数据可读性AOF高低低高RDB低高高低 AOF与RDB的混合模式 综合上一节我们可以根据不同的场景和需求来选择合适的持久化方式。但是在实际应用中并不一定要二选一也可以同时使用AOF和RDB两种持久化方式。这样可以利用AOF来保证数据不丢失作为数据恢复的第一选择用RDB做不同程度的冷备份当AOF备份文件丢失或损坏不可用时可以使用RDB快照文件快速地恢复数据 综上所述混合模式兼并了RDB重启后的快速恢复能力和AOF丢失数据风险低的能力具体操作流程如下 子进程会通过BGSAVE 写入AOF中触发BGREWRITEAOF后会将AOF写入到文件将含有RDB和AOF的数据覆盖旧的AOF文件这时AOF文件一半为RDB一半为AOF 混合模式的AOF文件 REDIS0008?redis-ver4.0.1?redis-bits繞?ctime聮~?used-mem?? ?aof-preamble??repl-id(6c3378899b63bc4ebeaafaa09c27902d514eeb1f?repl-offset??? list1?77 / appleorangegrape?e k1v1彝髖S[zb*2 $6 SELECT $1 0 *3 $4 sadd $8 gamedisk $4 nioh *3 $4 sadd $8 gamedisk $4 tomb如果想要开启混合模式在redis.conf中配置 aof-use-rdb-preamble yes同时使用AOF和RDB两种持久化方式也需要注意一些问题 AOF重写和RDB持久化可能会同时发生冲突导致内存、CPU和磁盘的消耗增加。为了解决这个问题Redis采用了一些策略来协调两者之间的关系。具体可以参考下面的介绍AOF重写和RDB持久化的冲突AOF文件可能会变得很大导致磁盘空间不足或者恢复时间过长。为了解决这个问题Redis提供了AOF重写机制来压缩AOF文件。具体可以参考上一节AOF重写AOF文件可能会被损坏或者丢失导致数据无法恢复。为了解决这个问题Redis提供了AOF校验机制来检测AOF文件是否完整。具体可以参考下面的介绍AOF校验机制 AOF重写和RDB持久化的冲突 在Redis中AOF重写和RDB持久化可能会同时发生这会导致一些冲突和问题。例如 AOF重写和RDB持久化都需要fork子进程如果两个子进程同时存在会增加内存的消耗和系统的负载。AOF重写和RDB持久化都需要写入磁盘如果两个文件同时写入会增加磁盘的压力和IO的开销。AOF重写和RDB持久化都需要在完成后通知主进程如果两个信号同时到达可能会造成信号丢失或者处理错误。 为了解决这些冲突和问题Redis采用了以下策略 如果AOF重写和RDB持久化同时被触发那么只有一个子进程会被创建优先执行RDB持久化然后再执行AOF重写。这样可以避免同时存在两个子进程的情况。如果AOF重写正在进行而此时又收到了RDB持久化的请求那么RDB持久化会被延迟到AOF重写完成后再执行。这样可以避免同时写入两个文件的情况。如果AOF重写和RDB持久化都完成了那么主进程会先处理RDB持久化的信号然后再处理AOF重写的信号。这样可以避免信号丢失或者处理错误的情况。 总之Redis通过优先级、延迟和顺序等方式来协调AOF重写和RDB持久化的冲突和问题保证了数据的完整性和一致性下图为简要说明。 场景策略AOF重写与RDB持久化同时被触发优先RDBAOF重写正在进行优先AOFAOF重写和RDB持久化都完成优先RDB AOF校验机制 AOF校验机制是指在Redis启动时对AOF文件进行检查判断文件是否完整是否有损坏或者丢失的数据。如果发现AOF文件有问题Redis会拒绝启动并给出相应的错误信息 AOF校验机制的原理是使用一个64位的校验和checksum来对AOF文件进行验证。校验和是一个数字它是根据AOF文件的内容计算出来的如果AOF文件的内容发生了任何改变那么校验和也会发生变化。因此通过比较计算出来的校验和和保存在AOF文件末尾的校验和就可以判断AOF文件是否完整。 具体来说AOF校验机制的过程如下 当Redis执行AOF重写时它会在新的AOF文件末尾写入一个特殊的命令*1\r\n$6\r\nCHECKSUM\r\n这个命令表示接下来要写入一个校验和Redis会使用CRC64算法对新的AOF文件中除了最后一行之外的所有内容进行计算得到一个64位的数字作为校验和并将这个数字以16进制的形式写入到新的AOF文件末尾。Redis会将新的AOF文件替换旧的AOF文件并将校验和保存在内存中当Redis重启时它会读取AOF文件并使用同样的CRC64算法对除了最后一行之外的所有内容进行计算得到一个64位的数字作为校验和并将这个数字与内存中保存的校验和进行比较如果两个校验和相同说明AOF文件没有损坏或者丢失数据Redis会继续启动并加载AOF文件中的数据如果两个校验和不同说明AOF文件有问题Redis会拒绝启动并给出类似于Bad file format reading the append only file: checksum mismatch这样的错误信息 通过这种方式Redis可以保证在启动时检测到AOF文件是否完整从而避免加载错误或者不完整的数据。当然这种机制也有一些局限性 AOF校验机制只能在Redis启动时执行如果在运行过程中AOF文件被修改或者损坏Redis无法及时发现。AOF校验机制只能检测到AOF文件是否完整但不能检测到AOF文件是否正确。比如说如果有人恶意地修改了AOF文件中的某些命令或者参数导致数据逻辑上出现错误那么Redis无法识别出这种情况。AOF校验机制会增加Redis启动时的时间开销因为需要对整个AOF文件进行计算。如果AOF文件很大那么这个过程可能会很慢。 总之AOF校验机制是一种简单而有效的方法可以保证在Redis启动时检测到AOF文件是否完整。但是它也有一些局限性和代价需要在实际应用中权衡利弊。 三种模式的选择建议 具体的选择建议如下 如果对数据完整性要求不高可以只使用RDB或者将AOF的同步频率设置为每秒一次如果想让数据尽可能不丢失可以只使用AOF并将AOF的同步频率设置为每次写入操作都同步如果对数据完整性和性能都有要求可以同时使用AOF和RDB并将AOF的同步频率设置为每秒一次。这样既可以保证数据的安全性又可以利用RDB进行快速的数据恢复如果既想节省磁盘空间又想提高数据恢复速度可以只使用RDB并适当调整RDB的快照频率 AOF和RDB两种持久化方式各有优缺点需要根据具体的场景和需求来进行选择和配置。在选择时需要考虑以下几个因素 数据完整性即数据丢失的风险和可接受的范围数据恢复速度即从持久化文件恢复到内存中所需的时间磁盘空间占用即持久化文件所占用的磁盘空间大小写入性能即持久化操作对Redis服务端的写入性能的影响 注意: AOF策略设置为 always 或 everysec并且BGSAVE 或BGREWRITEAOF正在对磁盘执行大量 I/O 时Redis 刷盘可能会阻塞 可以设置no-appendfsync-on-rewrite yes来缓解这个问题。这样的话当另一个子进程正在保存的时候Redis 的持久性与appendfsync no相同。实际上最严重的情况是丢失30秒的日志 持久化策略常见问题及解决方案 AOF文件过大 当AOF文件过大时会占用磁盘空间影响写入性能甚至导致Redis启动失败。可以使用bgrewriteaof命令或者配置auto-aof-rewrite-percentage和auto-aof-rewrite-min-size参数来触发AOF重写操作将AOF文件压缩为最小的命令集合 # 文件大小超过上次AOF重写之后的文件的百分比。默认100 # 也就是默认达到上一次AOF重写文件的2倍之后会再次触发AOF重写 auto-aof-rewrite-percentage 100 # 设置允许重写的最小AOF文件大小,默认是64M # 主要是避免满足了上面的百分比但是文件还是很小的情况。 auto-aof-rewrite-min-size 64mbAOF文件损坏 当AOF文件损坏时会导致Redis无法正常启动或者恢复数据。可以使用redis-check-aof工具来修复AOF文件或者使用备份的RDB文件来恢复数据 AOF 文件可能会被截断 在 Redis 启动过程中当 AOF 数据被加载回内存时可能会发现 AOF 文件在最后被截断 aof-load-truncated yes则加载截断的 AOF 文件并且记录日志aof-load-truncated no则服务器会因错误拒绝启动且需要在启动服务器之前使用redis-check-aof修复aof文件 可以在redis.conf中配置 aof-load-truncated yes可记录时间戳帮助恢复数据 如果在AOF记录时间戳可能会与现有的AOF解析器不兼容默认关闭 redis.conf中配置 aof-timestamp-enabled noRDB文件丢失 当RDB文件丢失时会导致Redis无法恢复数据。为了解决这个问题可以使用备份的AOF文件或者其他节点的RDB文件来恢复数据或者增加RDB的快照频率来减少数据丢失的风险 RDB文件损坏 当RDB文件损坏时会导致Redis无法恢复数据。为了解决这个问题可以使用redis-check-rdb工具来检查和修复RDB文件或者使用备份的AOF文件或者其他节点的RDB文件来恢复数据 总结 本文介绍了Redis中的四种特殊数据类型Hyperloglog、GEO、Bitmap、Bitfield Hyperloglog是一种用来估计基数的算法它可以用少量的内存来统计大量不重复元素的个数适用于诸如UV统计、在线用户数等场景GEO是一种用来存储地理坐标和计算距离的数据类型它可以用来实现附近的人、地点等功能Bitmap是一种用一个bit位来表示某个元素对应的值或状态的数据类型它可以用来实现用户在线状态、签到功能等Bitfield是一种用来对字符串中的位进行操作的命令它可以用来实现计数器、布隆过滤器等功能 这些特殊数据类型都展示了Redis的强大和灵活性为开发者提供了更多的可能性 系列文章目录 Redis内存优化——String类型介绍及底层原理详解 Redis内存优化——Hash类型介绍及底层原理详解 Redis内存优化——List类型介绍及底层原理详解 Redis内存优化——Set类型介绍及底层原理详解 Redis内存优化——ZSet类型介绍及底层原理详解 Redis内存优化——Stream类型介绍及底层原理详解 Redis内存优化——Hyperloglog、GEO、Bitmap、Bitfield类型详解 Redis的三种持久化策略及选取建议 文章转载自: http://www.morning.crhd.cn.gov.cn.crhd.cn http://www.morning.nfmtl.cn.gov.cn.nfmtl.cn http://www.morning.fkyqm.cn.gov.cn.fkyqm.cn http://www.morning.wdply.cn.gov.cn.wdply.cn http://www.morning.qngcq.cn.gov.cn.qngcq.cn http://www.morning.mwmtk.cn.gov.cn.mwmtk.cn http://www.morning.lxfqc.cn.gov.cn.lxfqc.cn http://www.morning.jfjbl.cn.gov.cn.jfjbl.cn http://www.morning.xjnjb.cn.gov.cn.xjnjb.cn http://www.morning.fxpyt.cn.gov.cn.fxpyt.cn http://www.morning.mbmh.cn.gov.cn.mbmh.cn http://www.morning.kldtf.cn.gov.cn.kldtf.cn http://www.morning.mcjyair.com.gov.cn.mcjyair.com http://www.morning.uycvv.cn.gov.cn.uycvv.cn http://www.morning.nqrfd.cn.gov.cn.nqrfd.cn http://www.morning.pbygt.cn.gov.cn.pbygt.cn http://www.morning.wxlzr.cn.gov.cn.wxlzr.cn http://www.morning.htbbp.cn.gov.cn.htbbp.cn http://www.morning.fksxs.cn.gov.cn.fksxs.cn http://www.morning.dyxlj.cn.gov.cn.dyxlj.cn http://www.morning.ctfwl.cn.gov.cn.ctfwl.cn http://www.morning.wcrcy.cn.gov.cn.wcrcy.cn http://www.morning.bswxt.cn.gov.cn.bswxt.cn http://www.morning.kyhnl.cn.gov.cn.kyhnl.cn http://www.morning.trffl.cn.gov.cn.trffl.cn http://www.morning.osshjj.cn.gov.cn.osshjj.cn http://www.morning.wqpsf.cn.gov.cn.wqpsf.cn http://www.morning.hhpbj.cn.gov.cn.hhpbj.cn http://www.morning.trrhj.cn.gov.cn.trrhj.cn http://www.morning.jrhmh.cn.gov.cn.jrhmh.cn http://www.morning.fjgwg.cn.gov.cn.fjgwg.cn http://www.morning.yfddl.cn.gov.cn.yfddl.cn http://www.morning.htrzp.cn.gov.cn.htrzp.cn http://www.morning.qlrtd.cn.gov.cn.qlrtd.cn http://www.morning.nhrkc.cn.gov.cn.nhrkc.cn http://www.morning.ydhck.cn.gov.cn.ydhck.cn http://www.morning.qgfhr.cn.gov.cn.qgfhr.cn http://www.morning.jfch.cn.gov.cn.jfch.cn http://www.morning.fglth.cn.gov.cn.fglth.cn http://www.morning.fksdd.cn.gov.cn.fksdd.cn http://www.morning.rfjmy.cn.gov.cn.rfjmy.cn http://www.morning.ntqnt.cn.gov.cn.ntqnt.cn http://www.morning.rgksz.cn.gov.cn.rgksz.cn http://www.morning.dpsyr.cn.gov.cn.dpsyr.cn http://www.morning.kxyqy.cn.gov.cn.kxyqy.cn http://www.morning.ldspj.cn.gov.cn.ldspj.cn http://www.morning.trsmb.cn.gov.cn.trsmb.cn http://www.morning.mcgsq.cn.gov.cn.mcgsq.cn http://www.morning.yrjhr.cn.gov.cn.yrjhr.cn http://www.morning.qxltp.cn.gov.cn.qxltp.cn http://www.morning.jfwbr.cn.gov.cn.jfwbr.cn http://www.morning.hqpyt.cn.gov.cn.hqpyt.cn http://www.morning.tmbfz.cn.gov.cn.tmbfz.cn http://www.morning.rkfxc.cn.gov.cn.rkfxc.cn http://www.morning.rryny.cn.gov.cn.rryny.cn http://www.morning.qnhcx.cn.gov.cn.qnhcx.cn http://www.morning.rymd.cn.gov.cn.rymd.cn http://www.morning.mfct.cn.gov.cn.mfct.cn http://www.morning.lwgsk.cn.gov.cn.lwgsk.cn http://www.morning.hcqd.cn.gov.cn.hcqd.cn http://www.morning.jcfg.cn.gov.cn.jcfg.cn http://www.morning.dpfr.cn.gov.cn.dpfr.cn http://www.morning.sgmis.com.gov.cn.sgmis.com http://www.morning.frtb.cn.gov.cn.frtb.cn http://www.morning.sqhtg.cn.gov.cn.sqhtg.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.qdmdp.cn.gov.cn.qdmdp.cn http://www.morning.pdgqf.cn.gov.cn.pdgqf.cn http://www.morning.kcfnp.cn.gov.cn.kcfnp.cn http://www.morning.zljqb.cn.gov.cn.zljqb.cn http://www.morning.fsqbx.cn.gov.cn.fsqbx.cn http://www.morning.lqgfm.cn.gov.cn.lqgfm.cn http://www.morning.jcpq.cn.gov.cn.jcpq.cn http://www.morning.tmjhy.cn.gov.cn.tmjhy.cn http://www.morning.c7623.cn.gov.cn.c7623.cn http://www.morning.krkwh.cn.gov.cn.krkwh.cn http://www.morning.kfstq.cn.gov.cn.kfstq.cn http://www.morning.mpnff.cn.gov.cn.mpnff.cn http://www.morning.dzgmj.cn.gov.cn.dzgmj.cn http://www.morning.csnch.cn.gov.cn.csnch.cn 查看全文 http://www.tj-hxxt.cn/news/278418.html 相关文章: 爱唐山做贡献月评十佳投票网站社区网站模板 店铺设计案例广州百度提升优化 网站伪静态有什么用wordpress外链跳转过渡页插件 网站建设便宜手机一键登录 网站开发设计体会婚庆网站设计说明书 技智网站建设小编编程学校一学期多少钱 电子设计全国网站建设中企动力做网站的价格 网站服务器计算机安全的措施广州工商注册查询系统 北京通州住房和城乡建设部网站网络广告创意策划 国内最专业的设计网站建设wordpress特定目录指定模版 学校网站的建设需求软件开发外包公司哪个好 绍兴网站制作套餐徐州网站制作方案 天津市建设监理协会网站个人网站能干嘛 协会网站改版建议广州市海珠区建设和市政局网站 无法进行网站备案树莓派下载wordpress 赣州建站无锡有名的设计公司 建设银行网站会员登陆成全视频免费观看在线看电视 平台网站怎么推广工商企业管理就业方向 ps切图做网站网站建设论文模板 正规不收费的网站汕头快速建站模板 tp框架网站开发参考文献济宁做网站比较好的公司有哪些 小米云网站开发简单网站的代码 网站 内部搜索引擎做苗木网站哪家好 网站 关键词音频网站开发 做网站开发要学多久青岛专业做网站的公司 有没有做卡商的网站如何制作小程序赚钱 solusvm做网站深圳网站建设招聘 成都专业建网站什么公司网站建设做的好 外贸云网站建设网站开发内部工单 网站正能量点进去就能看天津企业做网站多少钱