先导知识:Memcache

Memcache是一个高性能的分布式内存对象缓存系统,代码类似于Hash。

已经有了Memcache,为什么还要用Redis呢?

下面Memcache的缺点:

  • 不支持数据持久化存储
  • 不支持主从
  • 不支持分片

而对比Redis数据库,以上三点都支持,所以要使用redis。

 问题一:为什么redis能这么快?

  Redis的访问速度可达 10万+QPS(query per second,每秒内查询次数)。

  1. 完全基于内存:绝大部分请求是纯粹的内存操作,不受限于硬盘读取速度,故而执行效率高
  2. 数据结构简单,是(key,value)形式,对数据的操作也简单
  3. 采用单线程也能处理高并发请求
  4. 相对于传统的阻塞I/O,Redis使用多路I/O复用模型,非阻塞I/O
  5. 具有原子性操作。
问题二:Redis采用的多路I/O复用函数?

  多路I/O复用函数有:epoll、kqueue、evport、select    链接:多路I/O复用技术

  1. 因地制宜,有的系统只有select
  2. 优先选择时间复杂度为O(1)的函数作为底层实现
  3. 以时间复杂度为O(n)的select作为保底
  4. 基于reactor设计模式监听I/O事件
 问题三:Redis的数据类型有哪些?(重点!!)
  1. string:最基本的数据类型,二进制安全,可以存储任何格式的数据(jpg图片,序列化的对象)
  2. hash:string元素组成的字典,适合用于存储对象
  3. list:列表,特点:先进先出、有序(按添加顺序)、可重复
  4. set:string元素组成的无序集合,通过hash实现,不允许重复
  5. sorted set:通过分数来为集合的成员进行从小到大的排序
  6. 用于计数的HyperLogLog
  7. 用于支持存储地理位置信息的Geo
Redis的底层数据类型基础:

  1、简单动态字符串;2、链表;3、字典;4、跳跃表

  5、整数集合;6、压缩列表;7、对象

版权声明:本文为yonghome原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yonghome/p/redis1.html