- NoSQL
- 泛指非关系型数据库,作为关系型数据库的补充
- 作用:应对海量用户和海量数据前提下的数据处理问题
- 特征
- 可扩容、可伸缩
- 大数据量下高性能
- 灵活的数据模型
- 高可用
- 常见的NoSQL数据库
- Redis
- memcache
- HBase
- MongoDB
- Redis
- 一种高性能键值对数据库
- 特征
- 数据间没有必然的关联关系
- 内部采用单线程机制进行工作
- 高性能
- 多数据类型支持
- 持久化支持,可以进行数据灾难恢复
- 应用
- 为热点数据加速查询
- 任务队列
- 即时信息查询
- 时效性信息控制
- 分布式数据共享
- 消息队列
- 分布式锁
- 基本操作
- 信息添加:set key value
- 信息查询(不存在为null):get key
- 清楚屏幕信息:clear
- 帮助
- help 命令名称
- help @组名
- 退出
- quit
- exit
- [esc键]
- 数据类型
- redis自身是一个map,其中所有的数据都是采用key:value形式存储
- 数据类型指的是存储数据的类型
- string
-
存储的是单个数据
-
存储数据的格式:一个存储空间保存一个数据
-
存储内容:通常使用字符串,如果字符串以整数形式展示,可以作为数字操作使用
-
基本操作
- 添加/修改数据:set key value
- 获取数据:get key
- 删除数据 del key
- 添加修改多个数据:mset key1 value1 key2 value2 …
- 获取多个数据:mget key1 key2 …
- 获取数据字符个数:strlen key
- 追加信息到原始信息后部:append key value
- 设置数值数据增加指定范围的值
- incr key
- incrby key increment
- incrbyfloat key increment
- 设置数值数据减少指定范围的值
- decr key
- decrby key increment
- 设置数据具有指定的生命周期
- setax key seconds value
- psetax key milliseconds value
-
应用场景
-
- hash
- 新的存储需求:对一系列存储的数据进行编组
- 需要的存储结构:一个存储空间保存多个键值对数据
- hash类型:底层使用哈希表实现数据存储
- hash存储结构优化
- 如果field数量较少,存储结构优化成类数组结构
- 如果field数量较多,存储结构使用HashMap结构
- 基本操作
- 添加/修改数据
- hset key field value
- 获取数据
- hget key field
- hgetall key
- 删除数据
- hdel key field1 (field2)
- 添加/修改多个数据
- hmset key field1 value1 field2 value2 …
- 获取多个数据
- hmget key field1 field2 …
- 获取哈希表中字段的数量
- hlen key
- 获取哈希表中是否存在指定的字段
- hexists key field
- 获取哈希表中所有字段名
- hkeys key
- 获取哈希表中所有字段值
- hvals key
- 设置指定字段数据数值增加指定范围的值
- hincrby key field increment
- hincrbyfloat key field increment
- 为不存在的字段赋值:
- hsetnx key field value
- 添加/修改数据
- 注意
- hash类型下value只能存储字符串
- 如果数据未获取到,值为nil
- 每个hash可以存储2^32-1个键值对
- hash类型十分贴近对象的数据存储形式,并且可以灵活删除对象属性,但hash设计初衷不是为了存储大量对象而设计的,不可滥用,更不可以将hash作为对象列表使用
- hgetall可以获取全部属性,如果内部field过多,整体遍历数据效率就会很低
- 应用场景
- 购物车
- 抢购
- list
- 存储多个数据,通过数据体现进入顺序
- 底层使用双向链表存储结构
- 基本操作
- 添加/修改数据
- lpush key value1 [value2] …
- rpush key value1 [value2]…
- 获取数据
- lrange key start stop
- lindex key index
- llen key
- 获取并移除数据
- lpop key
- rpop key
- 规定时间内获取并移除数据
- blpop key1 [key2] timeout
- brpop key1 [key2] timeout
- 移除指定数据
- lrem key count value
- 添加/修改数据
- 注意
- list保存的数据都是string类型的
- 具有索引概念,但通常以队列或栈的形式操作的
- 获取全部数据操作结束,索引设置为-1
- 可以对数据进行分页操作
- 应用场景
- 具有顺序的特征对信息进行管理
- 使用队列模型解决多路信息汇总合并的问题
- 使用栈模型解决最新消息的问题