1 redis与memcache
redis与memcache的主要区别:
(1) 数据的一致性
由于memcache将数据全部放在内存中,所以一旦宕机或者系统出现问题,数据将会丢失;而且mecache也无法保证数据不丢失。
(2)数据的持久化
memcache没有数据的持久化功能,而redis有数据的持久化功能。redis数据的持久化功能主要有以下两种:
一是 快照。快照的意思是说内存中的数据会在某一时间段内将内存中的数据会写到硬盘上以及相应的操作记录追加到磁盘上。这种持久化的方式性能高,但是会造成数据的的丢失。
二是 RBD。RDB的意思是当缓存中的数据发生变化时,会根据配置文件的设定(立刻更新还说是隔多长时间进行更新),将数据更新到硬盘。
(3) 系统的性能
redis的所有操作都是原子性的,而且它会把几个操作全合并后进行原子操作。redis是单进程单线程高性能服务器(公司如何做的集群???),单机qps达到10w;二memcache支持多线程,
(4) 支持类型的多样性
redis支持五大类型的结构:String、hash、list、set、有序set这五种。所以,redis在操作上有更所的灵活性和选择的自由。
(5)支持主从同步
2 redis的缺陷
(1)内存管理开销大 (2)buffer io造成系统OOM(为什么)。
3 redis的应用场景
(1)数据比较重要,对数据一致性有一定要求的业务。
(2)当需要除key/value之外的更多的数据类型时,使用redis。
(3)需要提供主从同步以及负载均衡的分布式应用的场景(redis主从同步)
4 redis重要参数
redis使用的版本是2.8.
起redis用的命令是redis -server 配合文件的路径 &
vm.overcommit_memory的值的概念:
(1)vm.overcommit_memory=0:当用户空间请求更多的内存时,内存尝试估算出剩余可用的内存。
(2)内核允许超量,直到使用内存用完为止。
(3)内核会使用一个绝不过量使用内存的算法,即系统整个内存地址空间不能超过swap+50%的RAM值,50%的参数的设定是在overcommit_ratio中设定。
5 数据类型的选择
(1) String
(2) hashMap
(3)list
(4)set
(5)sortedset