Redis系列1——概述

1. 简介

  Redis,key-value内存存储的数据库,全称“”Remote Dictionary Service(Sever)“”,默认端口号:6379redis

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

  Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用做数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不一样级别磁盘持久化功能,同时经过Redis Sentinel提供高可用,经过Redis Cluster提供自动分区。缓存

2. 特色

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操做。
  • 原子性 – Redis的全部操做都是原子性的,同时Redis还支持对几个操做全并后的原子性执行。
  • 持久化-Redis支持数据的持久化,能够将内存中的数据保持在磁盘中,重启的时候能够再次加载进行使用。
  • 数据备份-Redis支持数据的备份,即master-slave模式的数据备份。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过时等等特性。
  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恢复

3. 应用

  (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(计数器);
相关文章
相关标签/搜索