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

php做外贸网站好吗网站排名优化化快排优化

php做外贸网站好吗,网站排名优化化快排优化,制作网站 服务器配置,晋城企业网站建设价格1.什么是redis,是用来做什么的? redis是一个c语言编写的nosql数据库,支持网络,基于内存,可持久化的,key-value类型的数据库. 使用场景 缓存计数器 点赞排行榜 zset可以排序数据排重 set不能存储重复数据消息队列 list先进先出,先进后出分布式锁 共享数据 2.redis的基…

1.什么是redis,是用来做什么的?

redis是一个c语言编写的nosql数据库,支持网络,基于内存,可持久化的,key-value类型的数据库.

使用场景

  1. 缓存
  2. 计数器  点赞
  3. 排行榜  zset可以排序
  4. 数据排重  set不能存储重复数据
  5. 消息队列  list先进先出,先进后出
  6. 分布式锁  共享数据

2.redis的基本数据结构

1.String字符串,一个key对应一个value,value可以是字符串,数字或二级制数据常用于缓存用户信息,配置参数,计数器
2.List列表,简单的字符串列表,按照插入顺序排序,可以从列表的两端进行插入和删除操作适用于存储有序的元素集合,如消息队列,任务队列
3.hash哈希,包含键值对的无序散列表,适合存储对象,将对象的字段和值分别作为哈希的FIELD和value常用于存储和管理用户信息和商品信息
4.set集合,无序的字符串集合,集合的元素不唯一,不允许重复用于存储不重复的元素集合如标签和兴趣爱好
5.Sorted Set有序集合,类似与集合,但是每个元素都关联一个分数,通过分数来对元素进行排序常用于排行榜,推荐系统等场景

3.redis的线程模型

redis6.0之前是单线程模型的,在redis服务端只有一个线程进行处理,既要处理客户端的连接还要执行客户端发送的命令

redis6.0之后,采用多线程模型,处理客户端连接请求是一部分模型在处理,还有线程专门来处理客户端发送的命令,执行命令的线程只是一个,是并发安全的

为什么设计为单线程速度也很快?

1.操作都是在内存中的,所以性能是比较高的

2.底层是一个哈希表,可以通过key的哈希值快速定位到存储的位置,hash值可以在O(1)时间内被算出

3.由于单线程模型不存在上下文切换问题,节省了切换的开销

4.redis的持久化

redis是一个内存数据库,数据保存在内存中,但是内存中的数据变化是很快的,也容易发送丢失,所以redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和 AOF(Append Only File)。

RDB方式

指在指定的时间间隔内将内存中的数据以快照的形式写入磁盘,存储到RDB 文件中(dump.rdb).

在我们安装了 redis 之后,所有的配置都是在 redis.conf 文件中,里面保存了 RDB 和 AOF 两种持久化机制的各种配置。当符合一定条件时 Redis 会自动将内存中的数据进行快照并持久化到硬盘。
save:这里是用来配置触发 Redis 的 RDB 持久化条件,也就是什么时候将内存中的数据保存到硬盘。比如"save m n"。表示 m 秒内数据集存在 n 次修改时,自动触发 bgsave。
如下配置:
        save 900 1 :表示 900 秒钟内至少 1 个键被更改则进行快照。
        save 300 10 :表示 300 秒内至少 10 个键被更改则进行快照。
        save 60 10000 :表示 60 秒内至少 10000 个键被更改则进行快照。
如果不需要持久化,那么你可以注释掉所有的 save 行来停用保存功能.
也可以在客户端通过 save 命令触发 rdb 持久化.
 

AOF方式

以日志的形式记录每个写操作,将redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据.

AOF这种方式redis默认是没有启用的,
appendonly no 改为yes启用
appendfsync always 每次修改都会保存,消耗性能
appendfsync everysec 每秒执行一次,可能在这一秒丢失

5.redis事务

redis事务本质是一次操作中多条命令能够作为一个整体执行,执行过程中间不被插入其他命令执行,这时就应该开启事务

multi命令开启事务
发送命令1   只是命令组队并不执行
发送命令2
...
exec  执行这个命令时才会执行事务中的多个命令

该事务不保证命令执行的原子性,多条命令中,如果有某一条命令执行失败,其他命令成功,那它执行成功的命令依然有效,失败的命令未成功. 

6.redis的过期策略

惰性删除:key中会维护一个状态,当过期时不会立即删除过期的key,会在下一次使用时发现key过期,此时才会删除过期的key

好处:不需要实时的扫描跟踪,但是会浪费一定的内存空间

定期删除:会定期扫描redis中过期的key,需要消耗一定的资源

好处:不会浪费空间

7.redis和mysql的一致性

1.先更新mysql数据,然后更新redis,在实际开发中,有可能更新redis时出现问题,导致redis数据更新失败,用户还是继续从redis查询数据,查询到的是旧数据

2.先删除redis中的数据,然后再更新mysql数据,虽然可以解决方式1 的问题,但是也可能出现问题,线程1删除了redis数据,正在更新mysql,此时线程2有可能正在查询,仍然查询到的是旧数据

3.延时双删,在更新前先删除redis中的数据,然后更新mysql,更新后等待再次删除redis中的数据

8.redis的缓存问题

数据查询处理流程:前台请求,后台先从缓存中取数据,取到直接返回结果,取不到从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,直接返回空结果

穿透:key对应的数据在数据库中并不存在,查询时,redis中也没有此数据,还是要到mysql中去查询,请求都到数剧库从而压垮数据库.比如通过id=-1获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。

解决方法:

1.在redis设置一对key-null,下次请求时,就可以从缓存中获取-1:null

2.对参数进行校验,不合法参数拦截.例如id=-1,数据库压根就没有这样的值,先进行验证

3.使用布隆过滤器

布隆过滤器:就是一个数组里面默认存储的都是0,主要用来判断某一个元素是否存在,我们可以把数剧向布隆过滤器冗余的进行存放,把一个值用多个哈希函数进行计算,算出多个位置,将对应的位置改为1,判断一个元素是否存在,只需要通过哈希函数算出位置,如果位置上都是1,则元素有可能存在,如果某个位置上的值为0,那么元素一定不存在.

击穿:某个key对应的数据在数据库中存在,在某一个时间节点上key刚好过期了,而且此时有大量的请求同时到达,都去mysql查询,也会击垮mysql.

解决方法:

1.key设置较长的过期时间

2.为查询mysql的方法加锁

雪崩:大量key过期或者redis出现故障,大量请求访问到mysql

解决方法:

1.随机设置key的过期时间,避免大量key集体失效

2.集群部署多台redis主从结构,其中一台怠机了,其他服务还可以用

3.跑定时任务,当key快过期时,更新失效时间

http://www.dtcms.com/wzjs/286817.html

相关文章:

  • 西安做网站的公司网络管理系统
  • 怎样制作网站教程哪家好注册推广赚钱一个80元
  • wordpress网页播放器插件seo模拟点击算法
  • 企业导航网站源码网站如何快速收录
  • 网站开发公司巨推网址申请注册
  • dede做招聘网站seo搜索引擎的优化
  • 青岛本地招聘网站3小时百度收录新站方法
  • 专业网站建设公司用织梦吗?武汉做搜索引擎推广的公司
  • 网购最便宜的软件网页优化
  • 网页特效代码免费网站百度手机助手苹果版
  • 南康做网站东莞seo软件
  • 网站 做内容分发资格2021最近比较火的营销事件
  • 举例常用动态网站开发技术考研培训班哪个机构比较好
  • jsp借书网站开发国内优秀网页设计赏析
  • dede复制网站百度网站优化方案
  • c2c网站都有哪些seo推广
  • 网站建设开发语言与平台营销模式都有哪些
  • 可以接项目做的网站百度软件商店下载安装
  • 苏州建网站要多少钱淘宝指数查询工具
  • 企业 备案 网站服务内容网络营销的内容
  • 郑州网站推广¥做下拉去118cr百度推广有用吗
  • 珠三角做网站网站制作教程视频
  • 学校二级网站建设自查情况seo专家招聘
  • 云主机 网站吗百度seo优化推广
  • 广州网站设计开发招聘河南网站顾问
  • 深圳网站建设公司联系系统优化是什么意思
  • 我想做卖鱼苗网站怎样做自己建个网站要多少钱
  • 做网站如何分类产品自己怎么注册网站
  • 建设银行官方网站购房贷款利率seo官网
  • 怀化公司网站建设今天新闻摘抄十条