1、Redis 支持的数据类型
- string:最基本的数据类型,二进制安全的字符串,最大512M
- list:按照添加顺序保持顺序的 字符串列表
- set:无序的字符串集合,不存在重复的元素
- sorted set:已排序的字符串集合
- hash:key/value对的一种集合
2、Redis是单进程的是单线程的
Redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。
3、Redis为什么是单线程的
多线程处理会涉及到锁,而且多线程处理会设计到线程切换而消耗CPU。因为CPU不会Redis的瓶颈,Redis的瓶颈最有可能是机器内存或者网络带宽。单线程无法发挥多核CPU性能,不过可以通过在单机开启Redis实例来解决。
4、Redis的优势
- 速度快。因为数据存储于内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
- 支持丰富的数据类型,支持string,list,set,sorted set,hash
- 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
- 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
5、Redis和memcached相比有哪些优势
- memcached所有的值均是简单的字符串,Reids作为其替代者,支持更为丰富的数据类型
- Redis的速度比memcached快很多
- Redis可以持久化其数据
- Redis支持数据的备份,即master/slave模式的数据备份
6、Redis key的过期时间和永久有效分别设置命令
EXPIRE和PERSIST命令。
7、为什么Redis需要把所有数据放到内存中?
Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。 如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。
8、Redis哈希槽的概念
Redis集群没有使用一致性hash,而是引入了哈希槽的概念,Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。
9、Redis中的管道的作用
一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。
这就是管道(pipelining),是一种几十年来广泛使用的技术。例如许多POP3协议已经实现支持这个功能,大大加快了从服务器下载新邮件的过程。
10、Redis 事务相关的命令
MULTI、EXEC、DISCARD、WATCH
持续更新中....