初识Redis与Memcached

来源:互联网 发布:自学编程用什么语言 编辑:程序博客网 时间:2024/06/07 03:44
一、Redis与Memcached区别(初识版):
1、Memcached只提供String一种value类型;而Redis除了支持String数据类型,同时还提供Hash、List、Set、Sorted Set等数据类型。
2、Memcached最大键长250个字符,键值最大容量1MB;Redis一个键值对的最大容量512MB。
3、Memcached是纯Cache,所有数据全部保存在内存中;而Redis除了内存缓存,还支持两种持久化方式Snapshotting快照与Append-Only追加。
4、Redis支持主从复制。

二、Redis支持的数据结构及其特点
  1. Key String——Redis使用字符串存储key,但key中不能包括空格与"\n"字符。
  2. Value String——最常用的数据结构,一个key对应一个字符串或数值 value,一个键最大能存储512MB(一个英文字符或数字1B,一个中文字符2B),且是二进制安全的(没有特殊字符被转义,存入二进制文件前和读取二进制文件后,结果完全一致)。因此redis可以方便的存储图片、视频二进制文件、CSS文件或者序列化的对象(php中可以通过序列化对象,或转为Json格式存储对象、数组等)。
  3. Hash——方便地存储对象等结构化数据。底层实现为一个HashMap(但元素较少时,为了节省内存,直接使用zipmap存储)。
  4. List——很重要的数据结构,有重复元素,有序队列,可在头部、尾部或者某一元素前后插入。底层实现为一个双向链表(更方便地支持反向查找遍历)。一般用于一些关注列表、粉丝列表、消息队列等功能。
  5. Set——集合,无重复元素,会自动使用hash排序,Redis提供指令可以求多个Set的交集、并集、差集。底层实现为一个value为null的HashMap。对有存储多个非重数据时或有求交并补集需求时推荐使用,更实际的情况时,由于Set的非重特性,它常常被应用于记录做过某事,比如注册账号时,判断用户名是否已占;或投票系统中,判定用户是否投过票等。
  6. Sorted Set——非常有用的数据结构,有序集合,与Set功能类似,只是Set的排序是通过Hash,而Sorted Set需要提供一个score权重以供排序(如果用发表时间作为score排序,那么数据可以自动根据时间排序)。底层实现为HashMap与跳跃表,HashMap用于提供快速根据hash查找数据的score,跳跃表根据score有序保存所有数据。主要可用于顶帖等功能。

各个数据结构的“增删改查”操作指令可参看博客:http://www.cnblogs.com/liuconglin/p/5847568.html

三、Memcached与Redis适用场景
    相对于Memcached,Redis面世时间更短且具有更多的功能,一般被视作为“Memcached”的增强版,所以Redis通常是首选方案,但在如下两种情况时,Memcached可能更具优势:
  1. 在缓存只进行读取操作的数据时,如缓存HTML、CSS、与其他的一些缓存周期内无需更新的数据时,Memcached是更具效率的。
  2. 缓存系统需要水平拓展、建立集群时,Memcached相较于Redis实现难度更低。
原创粉丝点击