1,redis是什么
![v2-c0317a9e9bc2c2d2c464a86adc7dfbf4_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-c0317a9e9bc2c2d2c464a86adc7dfbf4_b.jpg)
redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。
2,支持的语言
![v2-db6d0c39a56776541647acfcfa1dcc92_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-db6d0c39a56776541647acfcfa1dcc92_b.jpg)
3,redis的应用场景有哪些
1,会话缓存(最常用)
2,消息队列,比如支付
3,活动排行榜或计数
4,发布,订阅消息(消息通知)
5,商品列表,评论列表等
![v2-1aaf9940ef8967130c7e508eb69f994a_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-1aaf9940ef8967130c7e508eb69f994a_b.jpg)
4,redis数据类型
Redis一共支持五种数据类:
- string(字符串)
- hash(哈希)
- list(列表)
- set(集合)
- zset(sorted set有序集合)
(1)字符串(字符串)它是redis的最基本的数据类型,一个键对应一个值,需要注意是一个键值最大存储512MB。
![v2-7cf4fb539634520d119a5b4d9e21f971_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-7cf4fb539634520d119a5b4d9e21f971_b.jpg)
(2)hash(哈希)
redis hash是一个键值对的集合,是一个string类型的field和value的映射表,适合用于存储对象
![v2-9df098103781656360335263de957e98_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-9df098103781656360335263de957e98_b.jpg)
(3)表(列表)
是redis的简单的字符串列表,它按插入顺序排序
![v2-b0204dc3aa441a7befe5f6a1299f7e21_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-b0204dc3aa441a7befe5f6a1299f7e21_b.jpg)
(4)组(集合)
是字符串类型的无序集合,也不可重复
![v2-3a2db9ee35ab0617ea06ddfc5f5e58f7_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-3a2db9ee35ab0617ea06ddfc5f5e58f7_b.jpg)
(5)zset(sorted set有序集合)
是string类型的有序集合,也不可重复
有序集合中的每个元素都需要指定一个分数,根据分数对元素进行升序排序,如果多个元素有相同的分数,则以字典序进行升序排序,sorted set因此非常适合实现排名
![v2-bd676c764fb0e1ae8a60ba65cb04e1ce_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-bd676c764fb0e1ae8a60ba65cb04e1ce_b.jpg)
5,redis的服务相关的命令
![v2-ff59854c4c8573da254e7ae7637aba59_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-ff59854c4c8573da254e7ae7637aba59_b.jpg)
slect#选择数据库(数据库编号0-15)
退出#退出连接
信息#获得服务的信息与统计
monitor#实时监控
config get#获得服务配置
flushdb#删除当前选择的数据库中的key
flushall#删除所有数据库中的键
6,redis的发布与订阅
redis的发布与订阅(发布/订阅)是它的一种消息通信模式,一方发送信息,一方接收信息。下图是三个客户端同时订阅同一个频道
![v2-894c7da1dabb68ce0de85719f1d4051f_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-894c7da1dabb68ce0de85719f1d4051f_b.jpg)
下图是有新信息发送给频道1时,就会将消息发送给订阅它的三个客户端
![v2-9a95903d5a4d1fb7a6b3dbe14175aff7_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-9a95903d5a4d1fb7a6b3dbe14175aff7_b.jpg)
7,redis的持久化
redis持久有两种方式:快照(快照),仅附加文件(AOF)
快照(快照)
1,将存储在内存的数据以快照的方式写入二进制文件中,如默认dump.rdb中
2,保存900 1
#900秒内如果超过1个Key被修改,则启动快照保存
3,保存300 10
#300秒内如果超过10个Key被修改,则启动快照保存
4,保存60 10000
#60秒内如果超过10000个重点被修改,则启动快照保存
仅附加文件(AOF)
1,使用AOF持久时,服务会将每个收到的写命令通过写函数追加到文件中(appendonly.aof)
2,AOF持久化存储方式参数说明 appendonly yes
#开启AOF持久化存储方式 appendfsync always
#收到写命令后就立即写入磁盘,效率最差,效果最好 appendfsync everysec
#每秒写入磁盘一次,效率与效果居中 appendfsync no
#完全依赖操作系统,效率最佳,效果没法保证
8,redis的性能测试
自带相关测试工具
![v2-7dc9fd08872e4d12360702476af84f63_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-7dc9fd08872e4d12360702476af84f63_b.jpg)
实际测试同时执行100万的请求
![v2-ba6af0f7063335f46eeec9787f4ed8a8_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=8f13333c-802f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-ba6af0f7063335f46eeec9787f4ed8a8_b.jpg)