NoSQL定义:
NoSQL是不同于传统的关系数据库的数据库管理系统的统称.其两者最重要的区别是NoSQL不使用SQL作为查询语言.NoSQL数据存储可以不需要固定的表格模式。NoSQL是基于键值对的,可以想象成表中的主键和值的对应关系.
redis定义:
Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件.它支持多种类型的数据结构,如 字符串(strings)、散列(hashes)、 列表(lists)、 集合(sets)、 有序集合(sorted sets)等。
redis和memcache的区别:
- 内存管理机制
Memcached默认使用Slab Allocaor机制管理内存,其主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块 以存储相应长度的key-value数据记录,以完全解决内存碎片问题.空闲列表进行判断存储状态,【类似于Java虚拟机对象的分配,空闲列表】
Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,【CPU内存是连续,类似于Java虚拟机对象的分配,直接内存分配 (指针碰撞)】
- 数据持久化方案
memcached不支持内存数据的持久化操作,所有的数据都以in-memory的形式存储.
redis支持持久化操作.redis提供了两种不同的持久化方法来讲数据存储到硬盘里面,第一种是rdb形式,一种是aof形式
- rdb:属于全量数据备份,备份的是数据
- aof:append only if,增量持久化备份,备份的是指令
- 缓存数据过期机制
Memcached在删除失效主键时也是采用的消极方法,即Memcached内部也不会监视主键是否失效,而是在通过Get访问主键时才会检查其是否已经失效.惰性删除:由用户触发,判断这个命令有没有过期,然后删除返给用户一个空值(这种删除方式容易引起内存泄露)
Redis定时、定期等多种缓存失效机制,减少内存泄漏
- 支持的数据类型
Memcached支持单一数据类型,[k,v]
redis支持五种数据类型
redis作为数据库的使用有什么优缺点
- 优点:没有Scheme约束,数据结构的变更相对容易,一开始确定数据类型,抗压能力强,性能极高,10万/qps(每秒查询率)
- 缺点:没有索引,没有外键,缺少int/data等基本数据类型,多条件查询需要通过集合内联和链接间实现,开发效率低,可维护性不佳
redis与mysql和memcache的区别
redis6.0
redis6.0
为什么使用多线程?
可以充分利用服务器 CPU 资源
多线程任务可以分摊 Redis 同步 IO 读写负荷
会不会引起多线程问题?
同时读或同时写,不会同时读写操作
IO 线程只负责读写 socket 解析命令,不负责命令处理
命令处理还是单线程的
查看更多文章移步