Redis
问题现象
1、海量用户
2、高并发
真正的问题:关系型数据库
1、性能:数据库保存在磁盘上。磁盘的IO性能低下。
CPU数据交换和高速缓存cache做,cache和内存,而内存和硬盘做。
那么基础信息都在磁盘硬盘上的。
2、关系型数据关系复杂:扩展性能差,不便于大规模集群。
解决问题:
针对问题来解决:
1、解决磁盘的IO次数,越低越好。 —内存存储
2、降低数据之间的关系,越简单越好。 — 不存储关系 只存储数据同时用内存存储
这些就是NoSQL 那么就是 Not-Only-Sql,泛指非关系型数据库,作为关系型数据库的补充。
NoSQL是针对上面两个问题才使用的。
少量数据也可以用,但是大材小用了,所以是关系型数据库的补充。
特征:(没有绝对的特征)
1、可扩容,可伸缩。
2、大数据量下的高性能。
3、灵活的数据模型。
4、高可用。
常见的NoSQL数据库:
1、Redis 2、HBase 3、MongoDB
解决方案(电商情景)
1、商品的基本信息 比如说 名称 价格 厂商 就是放在Mysql
2、商品的附加信息 描述 详情 评论 放在高速存取的MongoDB
3、图片信息 一般放在分布式文件系统(类似淘宝)
4、搜商品的关键字 ES/Lucene、solr
5、热点信息:高频、波段性、访问量高 Redis memcache tair
对外数据服务如下:
Redis简介
Remote dictionary server c语言开发的一个开源的高性能键值对Key-value的数据库。
比如说一个名字对一个人,一个名称对一个物体就是键值对。
特征:
1、数据间没有必然的关联关系
2、内部采用单线程机制进行工作 (操作事物原子性)
3、高性能。
4、多数据类型支持。
有字符串 列表 散列 集合 有序集合
5、持久化支持:可以进行数据灾难恢复。
应用:
1、为热点数据加速查询:热点商品、热点系新闻、热点资讯等高访问量的。
2、任务队列、秒杀、抢购等。
3、即时的信息查询,如排行榜 网站访问统计 公交到站的信息 在线人数
4、时效性信息控制 :如验证码控制、投票控制
5、分布式数据共享:分布式集群架构中的session分离
6、消息队列。
7、分布式锁。
命令行模式工具使用思考
功能性命令
清除屏幕信息
帮助信息查询
退出指令
基础操作
1、信息添加
功能:设置key、value数据
语法:set key value
2、查询指令
功能:根据key查询
get key
如果没有key的话 就会返回nil。
3、清除屏幕
clear
4、帮助信息
help 【命令名】
help @组名
比如所 help @string
5、退出命令
exit
esc按键
quit