先导知识: Memcache
Memcache 是一个高性能的分布式内存对象缓存系统, 代码类似于 Hash.
已经有了 Memcache, 为什么还要用 Redis 呢?
下面 Memcache 的缺点:
不支持数据持久化存储
不支持主从
不支持分片
而对比 Redis 数据库, 以上三点都支持, 所以要使用 Redis.
问题一: 为什么 Redis 能这么快?
Redis 的访问速度可达 10 万 + QPS(query per second, 每秒内查询次数).
完全基于内存: 绝大部分请求是纯粹的内存操作, 不受限于硬盘读取速度, 故而执行效率高
数据结构简单, 是 (key,value) 形式, 对数据的操作也简单
采用单线程也能处理高并发请求
相对于传统的阻塞 I/O,Redis 使用多路 I/O 复用模型, 非阻塞 I/O
具有原子性操作.
问题二: Redis 采用的多路 I/O 复用函数?
多路 I/O 复用函数有: epoll,kqueue,evport,select 链接: 多路 I/O 复用技术
因地制宜, 有的系统只有 select
优先选择时间复杂度为 O(1)的函数作为底层实现
以时间复杂度为 O(n)的 select 作为保底
基于 reactor 设计模式监听 I/O 事件
问题三: Redis 的数据类型有哪些?(重点!!)
string: 最基本的数据类型, 二进制安全, 可以存储任何格式的数据(jpg 图片, 序列化的对象)
hash:string 元素组成的字典, 适合用于存储对象
list: 列表, 特点: 先进先出, 有序(按添加顺序), 可重复
set:string 元素组成的无序集合, 通过 hash 实现, 不允许重复
sorted set: 通过分数来为集合的成员进行从小到大的排序
用于计数的 HyperLogLog
用于支持存储地理位置信息的 Geo
Redis 的底层数据类型基础:
1, 简单动态字符串; 2, 链表; 3, 字典; 4, 跳跃表
5, 整数集合; 6, 压缩列表; 7, 对象
来源: https://www.cnblogs.com/yonghome/p/redis1.html