Redis
1.课程安排
2.redis入门-nosql介绍
问题现象
- 海量数据
- 高并发
罪魁祸首-关系型数据库
- 性能瓶颈:磁盘IO性能低下
- 扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群
解决思路
- 降低磁盘IO次数,越低越好 --内存存储
- 去除数据间关系,越简答越好 – 不存储关系,仅存储数据
Nosql
即Not-Only SQL(泛指非关系型的数据库),作为关系型数据库的补充。
作用:引用基于海量用户和海量数据前提下的数据初六问题。
特征:
- 可扩展、可伸缩
- 大数据量下高性能
- 灵活的数据模型
- 高可用
常见Nosql数据库:
- Redis
- memcache
- HBase
- MongoDB
解决方法(电商场景)
- 商品基本信息(mysql)
- 名称
- 价格
- 厂家
- 商品附加信息(MongoDB)
- 描述
- 详情
- 评论
- 图片信息(分布式文件系统)
- 搜索关键字(ES、Lucene、solr)
- 热点信息
- 高频
- 波段性
3.redis入门-redis简介
Redis
概念:Redis(Remote Dicionary Server)是用C语言开发的一个开源的高性能键值对(key-value)数据库。
特征
- 数据间没有必然的关联关系
- 内部采用单线程机制进行工作
- 高性能。官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s.
- 多数据类型支持
- 字符串类型—String
- 列表类型—list
- 散列类型—hash
- 集合类型—set
- 有序集合类型—sorted_set
- 持久化支持,可以进行数据灾难恢复
Redis的应用
- 为热点数据加速查询(主要场景),如热点商品、热点新闻、热点咨询、推广类等高访问量等
- 任务队列,如秒杀、抢购、购票排队等
- 即时信息查询,如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设备信号等。
- 时效性信息控制,如验证码控制、投票控制等。
- 分布式数据共享,如分布式集群架构中的session分离。
- 消息队列
- 分布式锁
4.redis入门-redis下载安装
Linux版(适用于企业级开发)
- Redis高级使用开始
- 以4.0版本作为主版本
Windows版本(适合零基础学习)
- Redis入门使用
- 以3.2版本作为主版本
- 下载地址:https://github.com/microsoftarchive/redis/tags
启动redis:
服务端:双击redis-server.exe
客户端:双击redis-cli.exe
5.redis入门-redis基础操作
命令行模式工具使用思考
- 功能性命令
- 清楚屏幕信息
- 帮助信息查阅
- 退出命令
信息添加
- 功能:设置key,value数据
- 命令:set key value
- 范例:set name itheima
信息查询
- 功能:根据key查询对应的value,如果不存在,返回空(nil)
- 命令:get key
- 范例:get name
清除屏幕信息
- 功能:清除屏幕中的信息
- 命令:clear
帮助
- 功能:获取命令帮助
- 命令
退出客户端命令
- 功能:退出客户端
- 命令:
quit
exit
<ESC>
6.数据类型-数据类型简介
业务数据的特殊性
作为缓存使用
- 原始业务功能设计
-
秒杀
-
618活动
-
双11活动
-
排队购票
- 运营平台监控的突发高频访问数据
-
突发时政要闻,被强势关注围观
- 高频、复杂的统计数据
- 在线人数
- 投票排行榜
附加功能
系统功能优化或升级
- 单服务器升级集群
- Session管理
- Token管理
Redis数据类型(5种常用)
- string String
- hash HashMap
- list LinkedList
- set HashSet
- sorted_set TreeSet
7.数据类型-string基本操作
redis数据存储格式
- redis自身是一个Map,其中所有的数据都是采用key:value的形式存储
- 数据类型指的是存储的数据的类型,也就是value部分的类型,key部分永远都是字符串
string类型
- 存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型
- 存储数据的格式:一个存储空间保存一个数据
- 存储内容:通常使用字符串,如果字符串以整数形式展示,可以作为数字操作使用
string类型数据的基本操作
- 添加/修改数据:set key value
- 获取数据:get key
- 删除数据:del key
1.删除数据成功,返回1
2.删除数据失败,返回0
string类型数据的基本操作
- 添加/修改多个数据:mset key1 value1 key2 value2…
- 获取多个数据:mget key1 key2…
- 获取数据字符个数(字符串长度):strlen key
- 追加信息到原始信息后部(如果原始信息存在就是追加,否则新建):append key value
8.数据类型-单指令操作与多指令操作
9.数据类型-数值增减操作
string类型数据的扩展操作
- 设置数值数据增加指定范围的值
incr key
incrby key increment
incrbyfloat key increment
- 设置数值数据减少指定范围的值
decr key
decrby key increment
string作为数值操作
- string在redis内部存储默认就是一个字符串,当遇到增减类型操作incr、decr时会转成数值型进行计算。
- redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响
- 注意:按数值进行操作的数据,如果原始数据不能转成数值,或超越了redis数值上限范围,将报错。9223372036854775807(Java中long型数据最大值,Long.MAX_VALUE)
持续更新中…