1.删除数据,能不做就不做。非要删除,备份是必须的。Delete id前,请先SELECT 下id数据,防止删错。
2.不要过于依赖REDIS,这东西是很好,但还是得以数据库为基本,你不能只把数据保存在REDIS,数据库也得保存,不然redis数据丢了,又或者显示的不对,到时候就有得你哭了。
3.每个程序都是精密的齿轮,不要觉得这个语句操作错误不可能发生,就不对语句的结果进行处理,万一出错,你很可能找不到错误在哪里。精密的程序才是合格的程序。
1.删除数据,能不做就不做。非要删除,备份是必须的。Delete id前,请先SELECT 下id数据,防止删错。
2.不要过于依赖REDIS,这东西是很好,但还是得以数据库为基本,你不能只把数据保存在REDIS,数据库也得保存,不然redis数据丢了,又或者显示的不对,到时候就有得你哭了。
3.每个程序都是精密的齿轮,不要觉得这个语句操作错误不可能发生,就不对语句的结果进行处理,万一出错,你很可能找不到错误在哪里。精密的程序才是合格的程序。
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#脚本文件请求的路径
fastcgi_param QUERY_STRING $query_string; #请求的参数;如?app=123
fastcgi_param REQUEST_METHOD $request_method; #请求的动作(GET,POST)
fastcgi_param CONTENT_TYPE $content_type; #请求头中的Content-Type字段
fastcgi_param CONTENT_LENGTH $content_length; #请求头中的Content-length字段。
fastcgi_param SCRIPT_NAME $fastcgi_script_name; #脚本名称
fastcgi_param REQUEST_URI $request_uri; #请求的地址不带参数
fastcgi_param DOCUMENT_URI $document_uri; #与$uri相同。
fastcgi_param DOCUMENT_ROOT $document_root; #网站的根目录。在server配置中root指令中指定的值
fastcgi_param SERVER_PROTOCOL $server_protocol; #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
fastcgi_param GATEWAY_INTERFACE CGI/1.1;#cgi 版本
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;#nginx 版本号,可修改、隐藏
fastcgi_param REMOTE_ADDR $remote_addr; #客户端IP
fastcgi_param REMOTE_PORT $remote_port; #客户端端口
fastcgi_param SERVER_ADDR $server_addr; #服务器IP地址
fastcgi_param SERVER_PORT $server_port; #服务器端口
fastcgi_param SERVER_NAME $server_name; #服务器名,域名在server配置中指定的server_name
#fastcgi_param PATH_INFO $path_info;#可自定义变量
# PHP only, required if PHP was built with --enable-force-cgi-redirect
#fastcgi_param REDIRECT_STATUS 200;
在php可打印出上面的服务环境变量
如:echo $_SERVER['REMOTE_ADDR']
转载地址
s.n. 命令和说明
1 hdel key field2 [field2]
删除一个或多个哈希字段
2 hexists key field
判断一个哈希字段存在与否
3 hget key field
获取存储在指定的键散列字段的值
4 hgetall key
让所有的字段和值在指定的键存储在一个哈希
5 hincrby key field increment
由给定数量增加的哈希字段的整数值
6 hincrbyfloat key field increment
由给定的递增量哈希字段的浮点值
7 hkeys key
获取所有在哈希字段
8 hlen key
获取哈希字段数
9 hmget key field1 [field2]
获得所有给定的哈希字段的值
注意:php 里面得这样写 $redis->hmget($key,array($field1,$field2)) 返回的是数组
10 hmset key field1 value1 [field2 value2 ]
设置多个哈希字段的多个值
11 hset key field value
设置哈希字段的字符串值
12 hsetnx key field value
设置哈希字段的值,仅当该字段不存在
13 hvals key
获取在哈希中的所有值
14 hscan key cursor [match pattern] [count count]
增量迭代哈希字段及相关值
s.n. 命令 & 描述
1 blpop key1 [key2 ] timeout
取出并获取列表中的第一个元素,或阻塞,直到有可用
2 brpop key1 [key2 ] timeout
取出并获取列表中的最后一个元素,或阻塞,直到有可用
3 brpoplpush source destination timeout
从列表中弹出一个值,它推到另一个列表并返回它;或阻塞,直到有可用
4 lindex key index
从一个列表其索引获取对应的元素
5 linsert key before|after pivot value
在列表中的其他元素之后或之前插入一个元素
6 llen key
获取列表的长度
7 lpop key
获取并取出列表中的第一个元素
8 lpush key value1 [value2]
在前面加上一个或多个值的列表
9 lpushx key value
在前面加上一个值列表,仅当列表中存在
10 lrange key start stop
从一个列表获取各种元素
11 lrem key count value
从列表中删除元素
12 lset key index value
在列表中的索引设置一个元素的值
13 ltrim key start stop
修剪列表到指定的范围内
14 rpop key
取出并获取列表中的最后一个元素
15 rpoplpush source destination
删除最后一个元素的列表,将其附加到另一个列表并返回它
16 rpush key value1 [value2]
添加一个或多个值到列表
17 rpushx key value
添加一个值列表,仅当列表中存在
1.使用explain语句去查看分析结果
如explain select * from test1 where id=1;
会出现:
id selecttype table type possible_keys key key_len ref rows extra各列。
其中,
type=const表示通过索引一次就找到了;
key=primary的话,表示使用了主键;
type=all,表示为全表扫描;
key=null表示没用到索引。type=ref,因为这时认为是多个匹配行,在联合查询中,一般为REF。
2.各个属性的含义
id
select查询的序列号
select_type
select查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。
table
输出的行所引用的表。
type
对表访问方式,表示MySQL在表中找到所需行的方式,又称“访问类型”。
常用的类型有: ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)
ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行
index: Full Index Scan,index与ALL区别为index类型只遍历索引树
range:只检索给定范围的行,使用一个索引来选择行
ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
eq_ref: 类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key或者 unique key作为关联条件
const、system: 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system
NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。
type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL**
一般来说,得保证查询至少达到range级别,最好能达到ref。
possible_keys
指出MySQL能使用哪个索引在该表中找到行。如果是空的,没有相关的索引。这时要提高性能,可通过检验WHERE子句,看是否引用某些字段,或者检查字段不是适合索引。
key
显示MySQL实际决定使用的键。如果没有索引被选择,键是NULL。
key_len
显示MySQL决定使用的键长度。如果键是NULL,长度就是NULL。文档提示特别注意这个值可以得出一个多重主键里mysql实际使用了哪一部分。
ref
显示哪个字段或常数与key一起被使用。
rows
这个数表示mysql要遍历多少数据才能找到,在innodb上是不准确的。
Extra
using index: 覆盖索引
using where:不用读取表中所有信息,仅通过索引就可以获取所需数据,这发生在对表的全部的请求列都是同一个索引的部分的时候,表示mysql服务器将在存储引擎检索行后再进行过滤
Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询,常见 group by ; order by
Using filesort:当Query中包含 order by 操作,而且无法利用索引完成的排序操作称为“文件排序”
如果此信息显示Using filesort或者Using temporary的话会很吃力,WHERE和ORDER BY的索引经常无法兼顾,如果按照WHERE来确定索引,那么在ORDER BY时,就必然会引起Using filesort,这就要看是先过滤再排序划算,还是先排序再过滤划算。