发表于: 2017-11-15 20:16:54

1 692


今天完成的事情:

①put和post的区别不是风格的问题,是语义的问题.
区别:
1:在http中,put被定义为idempotent的方法,post则不是

2:如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的.


举例:假如有一个博客系统,往这个URI发送一个http的put或者post请求.假如我们发送的是两个请求,服务端是什么样的行为?如果产生了两个博客帖子,那就说明这个服务不是idempotent的,因为多次使用产生了副作用;如果后一个请求把第一个请求覆盖掉了,那这个服务就是idempotent的.
也就是说,前一种情况应该使用post方法产生效果不一样,后一种情况应该使用put方法,产生效果一样

或许觉得差别不大,用错了也不会有什么问题,但服务一放到internet上,如果不遵从HTTP协议的规范,就可能带来麻烦,如果让一个不是indempotent的服务可以用indempotent的方法访问,那么你服务器的状态可能就会被crawler修改,这是不应该发生的


Redis,即REmote Dlctionary Server(Redis).是一个与memcached差不多的key-value存储系统(数据库)

Redis是一个开源的,使用ANSI C语言编写,遵守BSD协议,,支持网络,可基于内存亦可持久化的日志型的key-value数据库,并提供多种语言的API

它通常被称为数据结构服务器,因为值(value)可以是字符串(String),哈希(Map),列表(list),集合(set)和有序集合(zset)等类型


redis可以存储键与这五种不同数据结构类型之间的映射
Redis与其他key-value缓存产品的特点:
1:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
2:Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储

3:Redis支持数据的备份,即master-slave模式的数据备份


Redis优势
1:性能高-redis能读的速度是11w次/s,写的速度是8.1w次/s
2:丰富的数据类型-Redis支持二进制案例的String,lists,hashes,set以及ordered sets数据类型操作
3:原子-Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行

4:丰富的特性-Redis还支持publish/subscribe,通知,key过期等特性


Redis与其他key-value存储有什么不同?
1:Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径.Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象
2:Redis运行在内存中但是可以持久化到磁盘.
所以在对不同数据集进行高速读写时需要权衡内存因为数据量不能大于硬件内存.

在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,Redis可以做很多内部复杂性很强的事情.同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问.


Redis与memcahced比较:
1:两者都可以用于存储键值映射.Redis除了能存储普通的字符串键之外,还可以存储其他4种数据结构,而memcached只能存储普通的字符串键.
2:使用redis来解决问题,可以让代码更简短,易懂,易维护,而且还可以使代码运行的速度更快(因为用户不需要通过读取数据库来更新数据).
3:redis的效率和易用性比memcached这种关系数据库要好得多
4:使用redis可以将彼此相关的聚合数据放在同一个结构里面,这样访问聚合数据就会更为容易
5:使用redis可以将聚合数据放到有序集合里面,构建出一个实时的排行榜
6:redis的聚合数据可以是整数或者浮点数,而memcached的聚合数据只能整数


总结:

Redis能极大地加快对大数据库的查询时间.
Redis是一种非关系型数据库(nosql):Redis不使用表,它的数据库也不会预定义或者强制去要求用户对Redis存储不同数据进行关联


明天计划的事情:

重新写一个redis例子并尝试跑通


遇到的问题:

delete与post的区别好像查不到,还不理解什么时候可以用post来代替delete,什么时候不可以



收获:

了解post与put区别


返回列表 返回列表
评论

    分享到