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

网站打开慢什么原因城乡住房和城乡建设部网站首页

网站打开慢什么原因,城乡住房和城乡建设部网站首页,长沙装修公司排名榜,网站建设能干什么一、NoSql#xff08;非关系型数据库#xff09; NoSQL#xff1a;NoSQL Not Only SQL 非关系型数据库 ​ NoSQL#xff0c;泛指非关系型的数据库。随着互联网web2.0网站的兴起#xff0c;传统的关系数据库在应付web2.0网站#xff0c;特别是超大规模和高并发的SNS类型…一、NoSql非关系型数据库 NoSQLNoSQL Not Only SQL 非关系型数据库 ​ NoSQL泛指非关系型的数据库。随着互联网web2.0网站的兴起传统的关系数据库在应付web2.0网站特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心暴露了很多难以克服的问题而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战尤其是大数据应用难题。 1.1 优点 高可扩展性 分布式计算 低成本 架构的灵活性半结构化数据 没有复杂的关系 1.2 缺点 没有标准化 有限的查询功能到目前为止 1.3 分类 类型代表特点列存储Hbase、Cassandra、Hypertable顾名思义是按列存储数据的。最大的特点是方便存储结构化和半结构化数据方便做数据压缩对针对某一列或者某几列的查询有非常大的IO优势。文档存储MongoDB、CouchDB文档存储一般用类似json的格式存储存储的内容是文档型的。这样也就有有机会对某些字段建立索引实现关系数据库的某些功能。key-value存储Berkeley DB、MemcacheDB、Redis可以通过key快速查询到其value。一般来说value可以是任何格式。图存储Neo4J、FlockDB图形关系的最佳存储。使用传统关系数据库来解决的话性能低下而且设计使用不方便。对象存储db4o、Versant通过类似面向对象语言的语法操作数据库通过对象的方式存取数据。xml数据库Berkeley DB XML、BaseX高效的存储XML数据并支持XML的内部查询语法比如XQuery,Xpath。 二、Redis与网站架构 2.1什么是Redis? Remote Dictionary Server 缩写 是个基于内存的网络存储系统 丰富的数据结构(sets, sorted sets,hashes, list ...) 本质是key-value但是与memcached不同的是value的类型得到了扩展 一个普通的问题列表需求 问题本身的数据(标题投票等等) 问题的作者数据(另 张单独的 张数据表通过某个键值关联) 问题的标签(本身单独一张数据表通过一个中间关系表与问题产生 对多的关系) 一条sql语句解决问题 too young too simple 多次查询让你怀疑人生 冗余字段过多会让你看起来很傻 为啥不试试Redis 2.2 与sql比较 大大减少了查询数量提高了效率 redis的API更加人性化再也不需要构建SQL语句节省了SQL的解析时间 三、Redis 3.1简介 Redis 是完全开源免费的遵守BSD协议是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点 Redis支持数据的持久化可以将内存中的数据保存在磁盘中重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value string类型的数据同时还提供listsetzsethash等数据结构的存储。 Redis支持数据的备份即master-slave模式的数据备份。 3.2 优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的同时Redis还支持对几个操作全并后的原子性执行。 丰富的特性 – Redis还支持通知, key过期等等特性。 3.3和其他的key-value存储有什么不同 Redis有着更为复杂的数据结构并且提供对他们的原子性操作这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明无需进行额外的抽象。 Redis运行在内存中但是可以持久化到磁盘所以在对不同数据集进行高速读写时需要权衡内存因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是相比在磁盘上相同的复杂的数据结构在内存中操作起来非常简单这样Redis可以做很多内部复杂性很强的事情。同时在磁盘格式方面他们是紧凑的以追加的方式产生的因为他们并不需要进行随机访问。 3.4 redis 为什么能够持久化存储 因为 RDB 和 AOF RDB [RDB 将数据库的快照snapshot以二进制的方式保存到磁盘中。] 在运行情况下 Redis 以数据结构的形式将数据维持在内存中 为了让这些数据在 Redis 重启之后仍然可用 Redis 分别提供了 RDB 和 AOF 两种持久化模式。 在 Redis 运行时 RDB 程序将当前内存中的数据库快照保存到磁盘文件中 在 Redis 重启动时 RDB 程序可以通过载入 RDB 文件来还原数据库的状态。 RDB 功能最核心的是 rdbSave 和 rdbLoad 两个函数 前者用于生成 RDB 文件到磁盘 而后者则用于将 RDB 文件中的数据重新载入到内存中 RDB 本质上是个文件 每隔一段时间 在redis配置文件中进行设置 将内存中的数据存入文件中 如果数据过大 也容易造成数据丢失 AOF [ 则以协议文本的方式将所有对数据库进行过写入的命令及其参数记录到 AOF 文件以此达到记录数据库状态的目的。] AOF 将命令追加到文件中 将原有的内容替换掉 记录到 AOF 文件 以此达到记录数据库状态的目的 为了方便起见 我们称呼这种记录过程为同步。 3.5 安装redis sudo apt-get install redis-server 安装完成后Redis服务器会自动启动我们检查Redis服务器程序 ps -aux|grep redis 或者 netstat -nlt | grep 6379 ​ #看见 port 6379 就成功启动了redis服务 文件名称作用redis-serverredis 服务端redis-cliredis 客户端redis-benchmarkredis性能测试工具redis-check-aofaof修复工具redis-check-rdbrdbredis-sentinel哨兵服务器 2.8版本之后才有 【redis-sentinel】监控你管理的作用来提高集群的高可用性 redis-cli客户端使用方式 redis-cli -p  #端口 -h  #主机 链接上   redis-cli -p 6379 127.0.0.1:6379 ping PONG 127.0.0.1:6379   #ping之后 pong来了就是成功了 离开客户端请输入quit ​ 服务管理 启动/停止/重启redis有三种方式 1) systemctl start/stop/restart redis-server.service 2) service redis-server start|restart|stop 3) cd /etc/init.d./redis-server  start/stop/restart 【redis的配置文件】 配置文件在/etc/redis/redis.conf sudo vim /etc/redis/redis.conf # 常用配置项 requirepass 你的密码   # 服务器远程连接密码 bind 127.0.0.1     # 绑定ip port 5379 # 指定端口 daemonize yes # 是否以守护进程执行如果以守护进程执行不会在命令行下阻塞 dbfilename dump.rdb   #数据文件 dir /var/lib/redis   #数据文件存储路径 ​ ​ #如果指定了密码启用客户端时需要加上-a 密码 redis-cli -a 密码 四、redis数据类型 Redis支持五种数据类型string字符串hash哈希list列表set集合及zset(sorted set有序集合)。 redis常用命令请参考http://redis.cn/commands.html 4.1 string 是最简单的类型你可以理解为一个key 对应一个value。string 类型是二进制安全的。意思是redis 的string 可以包含任何数据比如jpg 图片或者序列化的对象。string类型是Redis最基本的数据类型一个键最大能存储512MB。 设置键 命令SET key value #设置单键值对 set h1 100 #设置h1的值为100 ​ 命令mset key value [key value] #设置多个键值对 mset name 王宝强 age 30 gender 男 ​ 命令setex   key seconds value #设置键值及过期时间秒单位 setex age 100 20 #设置年龄的值为20过期时间100秒 获取键 命令get key #获取单个键 get h1 ​ 命令mget key1 key2 key3 #获取多个键 mget name age sex 查看过期时间 命令ttl key ttl a1 #查看a1的过期时间 运算 原来的值必须是数值字符串 命令incr key #将对应的key 加1 命令decr key #将对应的key值减1 命令incrby key num   #将对应的key加指定值 命令decrby key num   #将对应的key的值减去指定值 其它操作 命令append key value #追加值redis中值都是字符串追加就是字符拼接 append name hello #如果原来的值是tom,那么现在就是tomhello ​ 命令strlen key #获取值得长度 4.2 hash Redis hash 是一个键值(keyvalue)对集合。Redis hash是一个string类型的field和value的映射表hash特别适合用于存储对象。每个 hash 可以存储 2的32次方 -1 键值对40多亿。存储形式 key {name:tom,age: 18} 设置值 命令hset key field   value #设置key所指对象的指定属性的值 命令hmset key field   value [field value] #设置key所指对象的多个属性值 命令hsetnx key field value #当field字段不存在时 设置key所指对象的field属性值 ​ hset person name 二狗子 hmset person age 20 sex 男 hsetnx person maried 未婚 获取值 命令 hget key field #获取key指定的对象的属性值 命令 hmget key field [field] #获取key指定对象的多个属性值 命令 hgetall key   #获取key所指对象的所有属性的名称和值 命令 hkeys   key   #获取key所指对象的所有属性名 命令 hvals   key   #获取key所指对象是的所有属性值 命令 hlen key     #获取key所指对象的属性个数 其它操作 命令hincrby key   field   increment #为key所指对象的指定字段的整数值加上increment 命令hincrbyfloat key field increment #为key所指对象的指定字段的实数值加上increment 命令hexists key field #判断当前的字段是否存在在在返回1 否则返回0 命令hdel key field [field] #删除字段和值 4.3 list redis 列表是简单的字符串列表按照插入顺序排序。你可以添加一个元素到列表的头部左边或者尾部右边。列表最多可存储 2的32次方 - 1 元素 (4294967295, 每个列表可存储40多亿)。 常应用于1、对数据量大的集合数据删减 2、任务队列 添加数据 命令lpush key   value [value]   #头部插入数据 命令lpushx key value           #如果列表存在则在列表头部插入数据 命令rpush key value [value]   #在列表尾部添加数据 命令rpushx key value           #如果列表存在则在尾部添加数据 命令linsert key before|after value value #在指定值前或后插入数据 命令lset key index value       #设定指定索引元素的值 注意索引的值从左边开始向右增加左边第一个是0从右边向左索引编号为-1 -2... 获取数据 命令lpop key               #左侧出队并返回出队元素 命令rpop key               #右侧出队并返回出队元素 命令lindex key   index   #返回指定索引的值 命令lrange key start end #返回存储列表中的指定范围的元素[start,end] 命令lrem key count value     #从列表里移除前 count 次出现的值为 value 的元素count 0: 从头往尾移除值为 value 的元素。count 0: 从尾往头移除值为 value 的元素。count 0: 移除所有值为 value 的元素。 其它操作 命令llen key #获取列表长度 命令ltrim key start stop #裁剪列表 保留start到stop之间的元素其它都删除ltrime mylist -3 -1 #从索引为-3到-2的保留 以外的全部删除 4.4 set 无序的集合 Redis的Set是string类型的无序集合元素具有唯一性 不重复。集合是通过哈希表实现的所以添加删除查找的复杂度都是O(1)。 常应用于对两个集合间的数据进行交集、并集、差集运算 添加元素 sadd key member [member] #添加多个元素 获取元素 smembers key #获取集合中所有的元素scard key #返回集合元素的个数srandmember key [count] #返回集合中随机元素的值可以返回count个其它操作 spop key [count] #移除集合中随机的count个元素,并返回 srem key member1 [member2] #移除集合中 一个或者 多个 成员 sismember key member #判断元素是否在集合中 存在返回1 不在返回0集合操作 求多个集合的交集 sinter key [key...] 求多个集合的差集 (注意比较顺序)sdiff key [key...] 求 多个集合的并集 sunion key [key....]4.5 zset 有序从大到小排序 Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。 常应用于排行榜 添加元素 zadd key score member [score member] #添加多个元素 zincrby key increment member #对指定的成员增加权重increment获取元素 zrange key start end #返回指定范围的元素 zcard key #返回元素的个数 zcount key min max #返回有序集合中权重在min和max之间的元素的个数 zscore key member #返回有序集合中 member(元素) 的权重(score) zrange key start end withscores #返回当前key中 所有的权重(score)和元素(member)4.6 数据库切换 redis默认带有16个数据库编号从0-15。进入redis后默认数据库是0可以使用select num进行切换 客户端不显示中文的处理打开客户端的时候添加参数:--raw redis-cli --raw4.7 其他 keys * #查看所有的key keys u* #查以u开始的key keys n??? 查找以n为开头长度为4个的key keys n 查找 包含 n 的所有的key支持的正则表达式: - h?llo 匹配第二位为任意的字符 - h*llo 匹配第二位为任意字符 0个 或多个 - h[ab]llo 匹配第二位为 a或者b的字符的key - hello 匹配第二位除了e字符以外的任意的key - h[a-z]llo 匹配第二位为a-z的小写字母的keyexists key #判断键是否存在 type key #查看key对应的value的类型 del key #删除指定key expire key 10 #设置过期时间秒 persist key #移除key的过期时间 rename key newkey #修改key的名称(如果新的key的名字存在 则会把存在的key的值 覆盖掉) randomkey #随机返回一个 key move key db 将键移动到指定库flushdb #清空当前库所有key flushall #清空所有库里的keyexit #退出redis客户端 quit 退出客户端查看服务器信息 info dbsize 当前库中有多少key五、redis备份和还原 redis支持持久化的方式有两种RDB和AOF RDB备份 查看备份目录 #1查看配置文件 cd /etc/redis vim redis.conf# 当后台进程执行save出错时停止redis的写入操作。 stop-writes-on-bgsave-error yes rdbcompression yes # 将rdb文件进行压缩 rdbchecksum yes # 对rdb文件进行校验 dbfilename dump.rdb # rdb文件命名 dir /var/lib/redis # rdb文件备份存储目录#使用命令查看 进入redis客户端 127.0.0.1:6379 config get dir 1) dir 2) /var/lib/redis #备份目录备份 命令行下执行redis-cli save 阻塞主进程 命令行下执行redis-cli bgsave 不阻塞主进程 查看备份时间命令行下执行 time redis-cli save 还原 只要将备份的dump.rdb文件覆盖原来的文件就可以还原 六、主从复制 当数据量变得庞大的时候读写分离还是很有必要的。同时避免一个redis服务宕机导致应用宕机的情况我们启用sentinel(哨兵)服务实现主从切换的功能。redis提供了一个master,多个slave的服务。 角色ipmaster主10.20.100.186slave从10.20.100.106master主配置 sudo vim /etc/redis/redis.conf #找到# bind 127.0.0.1 修改为 bind 127.0.0.1 10.20.100.186#找到# requirepass 将其修改为 这是修改的是服务器远程连接密码 requirepass 123slave从配置 bind 127.0.0.1 10.20.100.106 #10.20.100.106从服务器网络地址 daemonize yes #是否是守护进程 slaveof 10.20.100.186 6379 #主服务器的ip和端口 masterauth 123 # 主服务器的密码重启master和slave的服务然后登录从服务器执行 pythonubuntu:/etc/redis$ redis-cli -p 6380 -a 123 127.0.0.1:6380 info replication # Replication role:slave master_host:10.20.100.186 master_port:6379 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:1444 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0
http://www.sadfv.cn/news/213714/

相关文章:

  • 英文网站导航 源码1688网站简介
  • 做网站首选九零后网络wordpress文章目录
  • 家具网站模板下载吉林移动网站
  • 自建站需要多少钱玉林网站seo
  • 青海网站建设价格wordpress调用文章缩略图
  • 购物网站 系统设计seo是搜索引擎营销
  • 网站asp文件只读wordpress 提示插件安装插件
  • 制作网站软件哪个好北京企业网站制作哪家好
  • 举报不良网站信息怎么做怎么创建网站平台
  • 湖南企业做网站中国建筑模板十大名牌
  • wordpress文学主题青岛网站seo诊断
  • 广州建立网站的公司网站成都建设网站哪些公司好
  • 房地产类的网站建设网站建设网络
  • 个人静态网站首页怎么做培训心得体会800字
  • 用手机可以做网站商城网站建设运营合同
  • 阿里云网站注册如何建立一个个人博客网站
  • 大连免费建站模板南京网络营销公司
  • 南京做电商网站的公司简介平台运营需要多少钱
  • 影楼网站模板用自己的计算机做服务器建网站
  • 南京高端模板建站WordPress文章添加灯箱
  • 网站优化排名资源公司网站后台管理教程
  • 南京网站建设网手机网站菜单栏怎么做
  • 旅行网站建设的规划书网站建设亿玛酷技术
  • 资产管理公司网站建设费用怎么入账南头外贸网站建设公司
  • 网站建设分工案例移动端网站模板
  • 国内优秀企业网站设计西安高风险调整
  • 自己做商务网站有什么利弊企业网站推广推广阶段
  • 苏州的网络企业什么公司适合做seo优化
  • 金华网站建设优化技术海南房产
  • 什么公司做网站出名电商网站备案