原创

Redis 之 Redis 基础数据结构

Redis和Memcache区别

  • 1、redis可以用来做存储(storge), 而memccached是用来做缓存(cache).这个特点主要因为其有 “持久化” 的功能.

  • 2、性能方面:由于Redis只使用单核,而Memcached可以使用多核,所以在比较上,平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis。

    • 结论:二者在 每秒处理请求 的次数都不会成为瓶颈。
  • 3、内存使用效率:如果使用简单的key-value存储,Memcached的内存利用率更高。如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。当然,这与应用场景和数据特性有关。

  • 4、数据持久化:Redis具有。 这两个特性Memcached都不具备。

  • 5、网络IO模型方面

    • Memcached是多线程,分为监听线程、worker线程,引入锁,带来了性能损耗。
    • Redis使用单线程的IO复用模型,将速度优势发挥到最大,也提供了较简单的计算功能
  • 6、内存管理方面

    • Memcached使用预分配的内存池的方式,带来一定程度的空间浪费 并且在内存仍然有很大空间时,新的数据也可能会被剔除。
    • Redis使用现场申请内存的方式来存储数据,不会剔除任何非临时数据 Redis更适合作为存储而不是cache
  • 7、数据的一致性方面

    • Memcached提供了cas命令来保证.
    • Redis提供了事务的功能,可以保证一串命令的原子性,中间不会被任何操作打断

Redis数据类型

  • String
    • String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。
    • 常规key-value缓存应用;
  • Hash
    • Redis hash(散列)是一个string类型的field和value的映射表,hash特别适合用于存储对象。
    • 存储部分变更的数据,如用户信息等。
  • Set
    • set集合,集合的概念就是一堆不重复值的组合。利用Redis提供的set数据结构,可以存储一些集合性的数据。set中的元素是没有顺序的。
  • List
    • Redis的list是每个子元素都是String类型的双向链表,可以通过push和pop操作从列表的头部或者尾部添加或者删除元素,这样List即可以作为栈,也可以作为队列。
    • 使用List结构,我们可以轻松地实现最新消息排行等功能。
  • SortedSet
    • 有序集合,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。

Redis内部使用一个redisObject对象来表示所有的key和value.
redisObject最主要信息:

type代表一个value对象具体是何种数据类型,
encoding是不同数据类型在redis内部的存储方式

比如:type=string代表value存储的是一个普通字符串,那么对应的encoding可以是raw或者是int,如果是int则代表实际redis内部是按数值型类存储和表示这个字符串的.

Redis应用场景

显示最新的项目列表
删除与过滤
排行榜相关
按照用户投票和时间排序
处理过期项目
计数
特定时间内的特定项目
实时分析正在发生的情况,用于数据统计与防止垃圾邮件等
队列
缓存
Pub/Sub

~ end

正文到此结束
广告是为了更好的提供数据服务
本文目录