初识Redis与Memcached
Posted leeon_l
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识Redis与Memcached相关的知识,希望对你有一定的参考价值。
一、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支持的数据结构及其特点
- Key String——Redis使用字符串存储key,但key中不能包括空格与"\\n"字符。
- Value String——最常用的数据结构,一个key对应一个字符串或数值 value,一个键最大能存储512MB(一个英文字符或数字1B,一个中文字符2B),且是二进制安全的(没有特殊字符被转义,存入二进制文件前和读取二进制文件后,结果完全一致)。因此redis可以方便的存储图片、视频二进制文件、CSS文件或者序列化的对象(php中可以通过序列化对象,或转为Json格式存储对象、数组等)。
- Hash——方便地存储对象等结构化数据。底层实现为一个HashMap(但元素较少时,为了节省内存,直接使用zipmap存储)。
- List——很重要的数据结构,有重复元素,有序队列,可在头部、尾部或者某一元素前后插入。底层实现为一个双向链表(更方便地支持反向查找遍历)。一般用于一些关注列表、粉丝列表、消息队列等功能。
- Set——集合,无重复元素,会自动使用hash排序,Redis提供指令可以求多个Set的交集、并集、差集。底层实现为一个value为null的HashMap。对有存储多个非重数据时或有求交并补集需求时推荐使用,更实际的情况时,由于Set的非重特性,它常常被应用于记录做过某事,比如注册账号时,判断用户名是否已占;或投票系统中,判定用户是否投过票等。
- Sorted Set——非常有用的数据结构,有序集合,与Set功能类似,只是Set的排序是通过Hash,而Sorted Set需要提供一个score权重以供排序(如果用发表时间作为score排序,那么数据可以自动根据时间排序)。底层实现为HashMap与跳跃表,HashMap用于提供快速根据hash查找数据的score,跳跃表根据score有序保存所有数据。主要可用于顶帖等功能。
三、Memcached与Redis适用场景 相对于Memcached,Redis面世时间更短且具有更多的功能,一般被视作为“Memcached”的增强版,所以Redis通常是首选方案,但在如下两种情况时,Memcached可能更具优势:
- 在缓存只进行读取操作的数据时,如缓存html、CSS、与其他的一些缓存周期内无需更新的数据时,Memcached是更具效率的。
- 缓存系统需要水平拓展、建立集群时,Memcached相较于Redis实现难度更低。
以上是关于初识Redis与Memcached的主要内容,如果未能解决你的问题,请参考以下文章