目录
1.redis简介
介绍Redis之前,先了解下NoSQL (Not noly SQL)不仅仅是SQL,属于非关系型数据库;Redis就属于非关系型数据库。传统的Mysql ,oracle ,sql server 等 都是关系型数据库。NoSQL产品有MongoDB Redis等等,Redis目前主流。Redis是C语言开发的一个开源的(遵从BSD协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。它是一种NoSQL(not-only sql,泛指非关系型数据库)的数据库。
Redis作为一个内存数据库。1、性能优秀,数据在内存中,读写速度非常快,支持并发10W QPS;2、单进程单线程,是线程安全的,采用IO多路复用机制;3、丰富的数据类型,支持字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等;4、支持数据持久化。可以将内存中数据保存在磁盘中,重启时加载;5、主从复制,哨兵,高可用;6、可以用作分布式锁;7、可以作为消息中间件使用,支持发布订阅
为什么需要NoSQL,主要应对以下问题:
- High performance -高并发读写
- Huge Storage-海量数据的高效率存储和访问
- High Scalablility && High Availability 高可扩展性和高可用性
NoSQL的特点
- 易扩展
- 灵活的数据模型
- 大数据量,高性能
- 高可用
2.五种数据类型
- 字符串类型
- 列表类型
- 有序集合类型
- 散列类型
- 集合类型
首先redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:type表示一个value对象具体是何种数据类型,encoding是不同数据类型在redis内部的存储方式。比如:type=string表示value存储的是一个普通字符串,那么encoding可以是raw或者int。
3.Redis的应用场景
- 缓存
- 任务队列
- 网站访问统计
- 数据过期处理
- 应用排行榜
- 分布式集群架构中的session分离