Redis内存数据库
Redis内存数据库
一、背景
随着互联网+和大数据时代的来临,传统的关系型数据库已经不再能满足中大型网站日益增长的访问量和数据量,这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力,来解决系统性能上的瓶颈。
二、Redis是什么
Redis是一个开源的,高性能的,C语言开发,键值对(Key-value)存储数据的NoSql数据库。
NoSql:NotOnlySql泛指非关系型数据库Redis/MongoDB/Hbase
关系型数据库:Oracle、Mysql、Sybase、Sqlserver
三、数据库应用的发展历史
- 1、单数据库实例:在互联网大数据时代来临前,企业的一些内部信息管理系统,一个单个数据库实例就可以应付系统的需求。
- 2、缓存(ehCache/Memcached)+数据库实例:随着系统访问量用户的增多,数据量的增大,单个数据库实例已经满足不来系统读取数据的需求。
- 3、缓存+主从数据库读取+读写分离:缓存可以缓解数据库的读取压力,但数据库的写入压力持续增大,可以采取数据库主从进行读写分离(主负责写,从负责读)。
- 4、缓存+主从数据库读取集群+读写分离+分库分表:数据量再次增大,读写分离以后,主数据的写库压力出现瓶颈。
- 5、NoSql数据库+主从数据库读取集群+读写分离+分库分表:数据库互联网+大数据时代来临,关系型数据库不能很好的存取一些并发性大、实时性高,而且格式不固定。
四、Redis有什么用
Redis的主要作用:快速存取
以电商平台为例,Redis在系统架构中的位置
Redis的应用场景:
单点登陆/直播平台里面在线好友列表/抢购秒杀/商品排行榜/点赞/数据过期
五、Redis怎么用
官网:https://redis.io/
最新版本:4.0.9
应用版本:3.0.4
Redis的五大数据类型以及应用场景
String/Hash/list/Set/Zset
- *String
k-v格式中v的数据类型是String
设值:setkeyvalue/msetk1v1msetk2v2
取值:getkey
删值:delkey
应用场景:秒杀商品/点赞
- *Hash
k-v格式中v的数据类型是hash,其实就是java里边的Map<Object,Object>
设值:hsetmobile_huaweiid1批量:hmsetmobileid1namehuawei9price2999
取值:Hgetmibile_huaweiid批量:hgetallmibile_huawei
删值:delkey
应用场景:电商网站中的商品详细信息
- *List
k-v格式中v的数据类型是List,其实类似java里边的LinkedList(有序列表)
把这个有序列表看成一根竹子,可以从两边插入数据
从左边插入记录lpushcomment:1123
从右边插入记录rpushcomment:1456
321456
从左边弹出记录lpoopcomment:11
从左边弹出记录rpoopcomment:11
获取分页:lrangecomment:1startend
应用场景:商品的评论表
- *Set
k-v格式中v的数据类型是set,和list不同的是list是有序的,set就是无序的,且具有唯一性
增saddfriend:keventdsjuglearuroclyulouchun
删sremfreinds:kevventds
查看smemberfrends:keven
两个集合的交集sinterfriend:kevenfriend:tds
应用场景:微信好友查看权限/独立IP投票限制
- *Zset(sortedset)
k-v格式中v的数据类型是zset,zset是有序的,且具有唯一性
增加zaddmobile:sales100huawei99iphone98vivo97oppo
删除zremmobile:salesoppo
从小到大获取zrangemobile:sales010从小到大
从大到小获取zrevrangemobile:sales010从大到小
应用场景:商品的销售排行榜