- 基础
Redis是一个基于内存的key-value结构的数据库 相对于mysql redis的存取要更快一些 可以用作数据库、缓存、消息队列、分布式锁,键值对型数据库,一种非关系型数据库
- 优点
- 基于内存存储、读写性能高
- 适合存储热点数据
- redis高并发原理
- Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快
- Redis使用的是非阻塞io io的多路复用,使用了单线程来轮询描述符,将数据库开、关、读、写都转化为事件,减少了线程切换时上下文的切换和竞争
- Redis采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争
- Redis存储结构多样化,不同的数据结构对数据存储进行了了优化,如压缩表,对短数据进行压存储,再如,跳表,使用有序的数据结构加快读取的速度
- Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大
1、redis支持的数据类型
String、list、set、sorted、set、hashes
2、redis主要消耗什么物理资源?
Redis是一种基于内存高性能的数据库 --主要依赖于内存
3、Redis有哪几种数据淘汰机制
(1)Noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大部分的写入指令,但DEL和几个例外)
(2)allkeys-lru:尝试回收最少使用的键(LRU),使得新添加的数据有空间存放
(3)volatile-lru:尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放
(4)allkeys-random:回收随机的键使得新添加的数据有空间存放。volatile-random:回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键
(5)volatile-tt:回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放
4、为什么Redis需要把所有的数据存放到内存中
写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。
5、Redis集群的主从复制模型
集群使用了主从复制模型,每个节点都会有N-1个复制品
6、redis如何做内存优化
存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。比如你的web系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,而是应该把这个用户的所有信息存储到一张散列表里面.
7、Redis是单线程的,如何提高多核cpu的利用率
在某些时候,无论如何一个服务器是不够的, 所以,如果你想使用多个CPU,你可以考虑一下分片(shard)。