一、Redis简介
是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求。(区别于MYSQL的二维表格的形式存储)。和Memcache类似,但是很大程度上拟补了Memcache的不足。和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,这就表示,一断电或者重启,内存清空,数据丢失,所以Memcache的应用场景适用于缓存无需持久化的数据。而Redis不同的是它会周期性的把更新的数据写入磁盘或者把修改操作过的写入追加的记录文件,实现数据的持久化。
二、Redis特点
原子。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。 支持多种数据结构:String、list、hash、set(集合)、zset(有序集合) 持久化,主从复制(集群) 提供了键过期功能,可以用来实现缓存 提供了发布订阅功能,可以用来实现消息系统 支持Lua脚本功能,可以利用Lua创造出新的redis命令 提供简单的事务功能,能再一定程度上办证事务特性 提供了流水线(pipeline)功能,这样客户端能将一批命令一次性传到redis,减少了网络的开销
优点:
对数据高并发读写
对海量数据的高效率存储和访问
对数据的可扩展行和高可用性
缺点:
Redis处理简单
无法做到太复杂的关系数据库模型
三、Redis与Memcache的区别
1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过Memcache还可用于缓存其他东西,例如图片、视频等等。
2、Redis不仅仅支持简单的k-v类型的数据,同时还提供list、set、hash等数据结构的存储。
3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value交换到磁盘
4、过期策略--Memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire设定,例如expire name 10
5、分布式--设定Memcache集群。利用magent做一主多从;Redis可以一主多从,也可以一主一从。
6、存储数据安全--Memcache挂掉后,数据就没有了;Redis可以定期保存到磁盘(持久化)
7、灾难恢复--Memcache挂掉后,数据不可恢复;Redis数据丢失后可以通过AOF恢复
8、Redis支持数据的备份,即master-slave模式的数据备份。
四、Redis书读快的原因
1、Redis是纯内存数据库,一般都是简单的存取操作
2、Redis采用了单线程模型,保证了每个操作的原子性,减少了线程的上下文切换和竞争。
3、Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。
五、Redis的持久化
Redis提供两种持久化方式:RDB和AOF,即可以用两种策略将内存的数据保存在硬盘中,这样就保证了数据的可持久性。
六、Redis的应用场景
1、数据缓存(提高访问性能)
2、会话缓存
3、排行榜
4、计数器
等等
原文地址:https://www.cnblogs.com/yfb918/p/10772998.html