Redis内存数据库

BitTigerio 2018-04-03

Redis内存数据库

一、背景

随着互联网+和大数据时代的来临,传统的关系型数据库已经不再能满足中大型网站日益增长的访问量和数据量,这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力,来解决系统性能上的瓶颈。

二、Redis是什么

Redis是一个开源的,高性能的,C语言开发键值对Key-value)存储数据的NoSql数据库。

NoSqlNotOnlySql泛指非关系型数据库Redis/MongoDB/Hbase

关系型数据库:OracleMysqlSybaseSqlserver

三、数据库应用的发展历史

  • 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

应用场景:秒杀商品/点赞

Redis内存数据库
  • *Hash

k-v格式中v的数据类型是hash,其实就是java里边的Map<Object,Object>

设值:hsetmobile_huaweiid1批量:hmsetmobileid1namehuawei9price2999

取值:Hgetmibile_huaweiid批量:hgetallmibile_huawei

删值:delkey

应用场景:电商网站中的商品详细信息

Redis内存数据库
  • *List

k-v格式中v的数据类型是List,其实类似java里边的LinkedList(有序列表)

把这个有序列表看成一根竹子,可以从两边插入数据

从左边插入记录lpushcomment:1123

从右边插入记录rpushcomment:1456

321456

从左边弹出记录lpoopcomment:11

从左边弹出记录rpoopcomment:11

获取分页:lrangecomment:1startend

应用场景:商品的评论表

Redis内存数据库
  • *Set

k-v格式中v的数据类型是set,和list不同的是list是有序的,set就是无序的,且具有唯一性

saddfriend:keventdsjuglearuroclyulouchun

sremfreinds:kevventds

查看smemberfrends:keven

两个集合的交集sinterfriend:kevenfriend:tds

应用场景:微信好友查看权限/独立IP投票限制

Redis内存数据库
  • *Zset(sortedset)

k-v格式中v的数据类型是zsetzset是有序的,且具有唯一性

增加zaddmobile:sales100huawei99iphone98vivo97oppo

删除zremmobile:salesoppo

从小到大获取zrangemobile:sales010从小到大

从大到小获取zrevrangemobile:sales010从大到小

应用场景:商品的销售排行榜

Redis内存数据库

六、Java操作Redis--jedis

七、Redis的高级知识:Redis的持久化Redis主从复制Redis集群

相关推荐