01 Redis 简介与基本操作
1 Redis 简介
1.1 问题引出
-
问题现象
大型网站比如12306、淘宝、京东在特殊情况(海量用户、高并发)下存在崩溃的现象
-
罪魁祸首——关系型数据库
① 性能瓶颈:磁盘IO性能低下
② 扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群
-
解决思路
① 降低磁盘IO次数,越低越好 —— 内存存储
② 去除数据间关系,越简单越好 —— 不存储关系,仅存储数据
===> NoSQL
1.2 NoSQL
-
什么是 NoSQL?
NoSQL:即 Not-Only SQL( 泛指非关系型的数据库),作为关系型数据库的补充。
-
NoSQL 有什么用?
应对基于海量用户和海量数据前提下的数据处理问题。
-
NoSQL 的特征
① 可扩容,可伸缩
② 大数据量下高性能
③ 灵活的数据模型(针对不同的数据类型,有不同的数据结构存储)
④ 高可用
-
常见的 NoSQL 数据库
① Redis
② memcache
③ HBase
④ MongoDB
1.3 不同解决方案对应的应用场景(电商为例)
-
商品基本信息
① 名称
② 价格
③ 厂商
此类信息基本固定,唯一一份,通常存在 MySQL 中
-
商品附加信息
① 描述
② 详情
③ 评论
同样商品在不同商家的描述、评论信息往往不同,此类信息的访问需要一定性能,通常存在用来做文档处理的 MongoDB 中
-
图片信息
一般放到分布式文件系统中
-
搜索关键字
ES、Lucene、solr
-
热点信息
① 高频
② 具有波动性
上述信息都有可能是热点信息,通常放在Redis、memcache、tair
1.4 Redis 基本介绍
-
概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库
-
特征
① 数据间没有必然的关联关系
② 内部采用单线程机制进行工作
③ 高性能。官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s。
④ 多数据类型支持
- 字符串类型 string
- 列表类型 list
- 散列类型 hash
- 集合类型 set
- 有序集合类型 sorted_set
⑤ 持久化支持。可以进行数据灾难恢复
-
redis 的应用
- 为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等
- 任务队列,如秒杀、抢购、购票排队等
- 即时信息查询,如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设备信号等
- 时效性信息控制,如验证码控制、投票控制等
- 分布式数据共享,如分布式集群架构中的 session 分离
- 消息队列
- 分布式锁
2 Redis 的下载、安装与启动
2.1 Redis 的下载
-
Linux 版(适用于企业级开发)
① Redis 高级开始使用
② 以4.0 版本作为主版本
-
Windows 版本
① Redis 入门使用
② 以 3.2 版本作为主版本
③ 下载地址:https://github.com/MSOpenTech/redis/tags
2.2 安装 Redis
下载解压即可
2.3 启动 Redis
-
服务器启动
① redis-server.exe
② 或者 cmd 启动
端口号:6379
PID:随机生成
-
客户端连接
① redis-cli.exe
② 或者 cmd 启动
3 Redis 的基本操作
3.1 命令行模式工具需要掌握的四种指令
- 功能性命令
- 清除屏幕信息
- 帮助信息查阅
- 退出指令
3.2 信息添加
-
功能:设置 key,value 数据
-
命令
set key value
-
例子
set name dog
3.3 信息查询
-
功能:根据 key 查询对应的value,如果不存在,返回空(nil)
-
命令
get key
-
例子
get name
3.4 清除屏幕信息
-
功能:清除屏幕中的信息
-
命令
clear
3.5 退出客户端命令行模式
-
功能:退出客户端
-
命令
quit exit <ESC>
3.6 帮助
-
功能:获取命令帮助文档,获取组中所有命令信息名称
-
命令
help 命令名称 help @组名