如何用redis/memcache做Mysql缓存层?
Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较:1、Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去 。
这大大增加了网络IO的次数和数据体积 。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效 。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择 。2、内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached 。
3、性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高 。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色 。
具体为什么会出现上面的结论,以下为收集到的资料:1、数据类型支持不同与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多 。最为常用的数据类型主要由五种:String、Hash、List、Set和Sorted Set 。Redis内部使用一个redisObject对象来表示所有的key和value 。
redisObject最主要的信息如图所示:type代表一个value对象具体是何种数据类型,encoding是不同数据类型在redis内部的存储方式,比如:type=string代表value存储的是一个普通字符串,那么对应的encoding可以是raw或者是int,如果是int则代表实际redis内部是按数值型类存储和表示这个字符串的,当然前提是这个字符串本身可以用数值表示,比如:”123″ “456”这样的字符串 。
只有打开了Redis的虚拟内存功能,vm字段字段才会真正的分配内存,该功能默认是关闭状态的 。1)String常用命令:set/get/decr/incr/mget等;应用场景:String是最常用的一种数据类型,普通的key/value存储都可以归为此类;实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr、decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int 。
2)Hash常用命令:hget/hset/hgetall等应用场景:我们要存储一个用户信息对象数据,其中包括用户ID、用户姓名、年龄和生日,通过用户ID我们希望获取该用户的姓名或者年龄或者生日;实现方式:Redis的Hash实际是内部存储的Value为一个HashMap,并提供了直接存取这个Map成员的接口 。
如图所示,Key是用户ID, value是一个Map 。这个Map的key是成员的属性名,value是属性值 。这样对数据的修改和存取都可以直接通过其内部Map的Key(Redis里称内部Map的key为field), 也就是通过 key(用户ID)field(属性标签) 就可以操作对应属性数据 。当前HashMap的实现有两种方式:当HashMap的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,这时对应的value的redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht 。
3)List常用命令:lpush/rpush/lpop/rpop/lrange等;应用场景:Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如twitter的关注列表,粉丝列表等都可以用Redis的list结构来实现;实现方式:Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构 。
推荐阅读
- 有没有人给t2贴过钢化膜啊
- 关于T2如何禁止软件后台自启动
- 什么挂pk牛逼,挂哥PK无敌战神
- 贪玩蓝月答题怎么领元宝,蓝月至尊版如何得到元宝
- 皮卡堂怎么快速得金币,4399游戏吧客服中心
- 安卓平板怎么样,安卓平板和ipad如何选择
- 怎么化妆品加盟,如何化妆品加盟
- 怎样快速提升酒店服务质量,酒店如何创造服务质量优势
- 提高小学数学成绩,小学数学如何培养能力
- 如何控制采购成本,为什么要控制采购成本