总结
redis 内存回收机制
volatile-lru 根据LRU算法 删除设置超时属性的key 直到腾出足够空间,如果没有可删除的key,则回退到noeviction策略
allkeys-lru 根据LRU算法 删除key 不管有没有设置过期时间,直到腾出足够空间
volatile-lfu 根据LFU 算法删除 设置超时属性的key
allkeys-lfu 根据LFU算法 删除key
volatile-random 随机删除过期key
allkeys-random 随机删除所有key
volatile-ttl 根据key的ttl属性,删除将要过期的数据
noeviction 不删除数据
LRU least Recently Used 最近最少使用
LFU least Frequently Used 最不常用
echo 没有返回值,输出一个或者多个字符串,不必使用括号 如果多个参数会报错
print 返回值是1 比echo 慢, 输出一个字符串,不必使用括号 如果多个参数会报错
print_r 返回值是返回字符串的长度,格式化输出字符串
memcache 100k-1m 效率更快 上限为1M
redis
key-value
一个键最大能存储512MB
获取字符串长度 strlen key
往字符串append内容 append key value
设置和获取字符串的某一段内容 substr key start end
设置及获取字符串的某一位(bit)
批量设置一系列字符串的内容 mset 会覆盖原值 msetnx 当且仅当所有给定键都不存在时, 为所有给定键设置值。
list
队列
set
关注列表,
zset
排名,排行榜
hash
存储部分变更数据,如用户信息等。
mysql
innoDB 支持事务,外键。行级锁,文件保存为.frm表定义文件 .inbd 数据文件
InnoDB(索引组织表)使用的聚簇索引、索引就是数据,顺序存储,因此能缓存索引,也能缓存数据
DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除
myisam .frm .myd .myi 索引文件 myd 文件存储,恢复方便
MyISAM(堆组织表)使用的是非聚簇索引、索引和文件分开,随机存储,只能缓存索引
数字转IP函数inet_ntoa()
IP转数字函数inet_aton()
phpize php的外挂模块,用phpize生成php的编译检测脚本
acme.sh --installcert -d www.xuexi365.club --key-file /mnt/ssl/nginx/xuexi365.club/xuexi365.club.key --fullchain-file /mnt/ssl/nginx/xuexi365.club/xuexi365.club.cer --reloadcmd "nginx -s reload"
http动词:
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
HEAD:获取资源的元数据。
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
http状态码:
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
GET POST的区别
GET把参数包含在URL中,POST通过request body传递参数。
GET在浏览器回退时是无害的,而POST会再次提交请求。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。