Redis详解
一、redis是什么?
Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,Redis是一个Key-Value类型的内存数据库,Redis是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。它可以用作数据库、缓存和消息中间件,Redis 也经常用来做分布式锁。(Redis是以键值对形式存储在内存中的非关系型数据库)
二、Redis支持哪几种数据类型?
支持多种类型的数据结构
1.string: 最基本的数据类型,二进制安全的字符串,最大512M.
2.list: 按照添加顺序保持顺序的字符串列表。
3.set: 无序的字符串集合,不存在重复的元素
4.sorted set: 已排序的字符串集合
5.hash: key-value对的一种集合
三、Redis是单进程单线程的?
Redis是单进程单线程的,Redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销
四、使用Redis的优势?
1.速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是0(1
2.支持丰富数据类型,支持字符串、列表、集合、散列表、有序集合(string,list,set,hash,sorted set)
3.支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
4.丰富的特性: 可用于缓存,消息,按key设置过期时间,过期后将会自动删除
五、为什么redis需要把所有数据放到内存中?
Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。
如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。
六、Redis 如何做内存优化?
尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。比如你的 Web 系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的 key,而是应该把这个用户的所有信息存储到一张散列表里面。
七、Redis 的内存用完了会发生什么?
如果达到设置的上限,Redis 的写命令会返回错误信息(但是读命令还可以正常返回。)或者你可以将 Redis 当缓存来使用配置淘汰机制,当 Redis 达到内存上限时会冲刷掉旧的内容。
八、Redis都有哪些使用场景?
- Redis是基于内存的nosql数据库,可以通过新建线程的形式进行持久化,不影响Redis单线程的读写操作
- 通过list取最新的N条数据
- 模拟类似于token这种需要设置过期时间的场景
- 发布订阅消息系统
- 定时器、计数器
浙公网安备 33010602011771号