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