先导知识: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、对象

最新文章

  1. XidianOJ 1063 Chemistry Problem
  2. 常用CSS优化总结——网络性能与语法性能建议
  3. Laravel环境配置之安装Homestead
  4. poj 3264 Balanced Lineup (线段树)
  5. Android弹出选项框及指示箭头动画选择
  6. SVN弱密码扫描(Python)
  7. VS2010中的调试技巧
  8. How do I use a host name to look up an IP address?
  9. Java基础知识强化之集合框架笔记63:Map集合之HashMap嵌套ArrayList
  10. WAMP集成环境
  11. Android视频录制
  12. web 性能优化指南阅读笔记
  13. elementUI源码修改定制
  14. sql server对已创建的表增加属性(自动增序)
  15. HZNU ACM一日游 2019.3.17 【2,4,6-三硝基甲苯(TNT)】
  16. [C语言]数据类型与计算
  17. SQL TUNING——从近半小时到几十毫秒的一次优化
  18. linux命令(26):Bash Shell 获取进程 PID
  19. Linux内核分析 05
  20. jquery实现简单轮播

热门文章

  1. Java1变量数据类型和运算符
  2. python学习(3)关于交互输入及字符串拼接
  3. Yandex Big Data Essentials Week1 Unix Command Line Interface File System exploration
  4. pytorch之 RNN regression
  5. UI自动化框架搭建
  6. css沉默
  7. js 递归总结
  8. .net core 3 web api jwt 一直 401
  9. SOLID原则都不知道,还敢说自己是搞开发的!
  10. 微信小程序如何下载超过大小限制(10M)的视频?(苹果用户仔细看,安卓用户快速看)