Redis,key-value内存存储的数据库,全称“”Remote Dictionary Service(Sever)“”,默认端口号:6379redis
Redis是一个开源的使用ANSI C语言编写、遵照BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。数据库
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用做数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不一样级别磁盘持久化功能,同时经过Redis Sentinel提供高可用,经过Redis Cluster提供自动分区。缓存
Redis相比memcached有哪些优点?
底层模型不一样,它们之间底层实现方式 以及与客户端之间通讯的应用协议不同。Redis直接本身构建了VM 机制 ,由于通常的系统调用系统函数的话,会浪费必定的时间去移动和请求。 value大小:redis最大能够达到1GB,而memcache只有1MB 虚拟内存–Redis当物理内存用完时,能够将一些好久没用到的value 交换到磁盘 过时策略–memcache在set时就指定,例如set key1 0 0 8,即永不过时。Redis能够经过例如expire 设定,例如expire name 10 分布式–设定memcache集群,利用magent作一主多从; redis能够作一主多从。均可以一主一从 存储数据安全–memcache挂掉后,数据没了; redis能够按期保存到磁盘(持久化) 灾难恢复–memcache挂掉后,数据不可恢复; redis数据丢失后能够经过aof恢复
(1)会话缓存(Session Cache)安全
最经常使用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其余存储(如Memcached)的优点在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,好比:用户的购物车信息所有丢失。服务器
(2)全页缓存(FPC)网络
除基本的会话token以外,Redis还提供很简便的FPC平台。回到一致性问题,即便重启了Redis实例,由于有磁盘的持久化,用户也不会看到页面加载速度的降低,这是一个极大改进,相似PHP本地FPC。帮助你以最快速度加载你曾浏览过的页面。session
(3)队列数据结构
Reids在内存存储引擎领域的一大优势是提供 list 和 set 操做,这使得Redis能做为一个很好的消息队列平台来使用。Redis做为队列使用的操做,就相似于本地程序语言(如Python)对 list 的 push/pop 操做。分布式
(4)排行榜/计数器memcached
Redis在内存中对数字进行递增或递减的操做实现的很是好。集合(Set)和有序集合(Sorted Set)也使得咱们在执行这些操做的时候变的很是简单,Redis只是正好提供了这两种数据结构。
举个栗子:咱们要从排序集合中获取到排名最靠前的10个用户–咱们称之为“user_scores”,假定你是根据你用户的分数作递增的排序。若是你想返回用户及用户的分数,你须要这样执行:ZRANGE user_scores 0 10 WITHSCORES
(5)发布/订阅
Redis的发布/订阅功能。发布/订阅的使用场景确实很是多。我已看见人们在社交网络链接中使用,还可做为基于发布/订阅的脚本触发器,甚至用Redis的发布/订阅功能来创建聊天系统!
(6)分布式锁
补充: 1. 记录帖子的点赞数,评论数和点击数【hash】 2. 记录用户的帖子的标题、摘要、做者和封面信息,用于列表页显示。【hash】 3. 缓存近期热帖内容(帖子内容的空间占用比较大),减小数据库压力【hash】 4.记录帖子的相关文章ID,根据内容推荐相关帖子【list】 5. 收藏集和帖子之间的关系【zset】 6. 记录用户的帖子ID列表(排序),便于快速显示用户的帖子列表【zset】 7. 记录帖子的点赞用户ID列表,评论ID列表,用于显示和去重计数【zset】 8. 记录热榜帖子ID列表、总热榜和分类热榜。【zset】
9. 缓存用户行为历史,过滤恶意行为【zset hash】 10. 若是帖子ID是整数自增的,可使用Redis来分配帖子ID(计数器);