内存数据库
1. Redis产生背景
随着互联网+大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量,这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O压力,来解决系统性能上的瓶颈。
2. Redis是什么?
Redis是开源的,高性能,C语言开发的,键值对(k-v)存储数据的NoSQL数据库。
Redis是分布式的内存数据库,读取速度每秒能达到10W左右。而且用redis-benchmark可以测试机器性能。执行redis-benchmark也可以看出Redis的读取性能。Redis默认有16个数据库,用select可以切换Redis的数据库,下角标是从0开始的。在redis.conf文件中也可以找到databases 16。Redis默认端口6379。
2.1 NoSQL数据库是什么?
NoSQL:Not noly SQL,泛指非关系型数据库,例如MongoDB、Redis
3. 数据库应用的发展历史
(1).在互联网大数据时代来临之前,企业的一些内部信息管理系统,一个单一数据库实例可以应付系统的需求
❦单数据库实例
(2).随着系统访问量用户的增多,数据量的增大,单个数据库实例已经瞒住不了系统读取数据的需求
❦缓存(memcache)+数据库实例
(3).缓存可以缓解数据库的读取压力,但是数据量的写入压力持续增大,可以采取数据库主从进行读写分离
❦缓存+主从数据库+读写分离
(4).数据量再次增大,读写分离以后,主数据库的写库压力出现瓶颈
❦缓存+主从数据库集群+读写分离+分库分表
(5).互联网+大数据时代来临,关系型数据库不能很好的存取一些并发性大,实时性高而且格式不固定的数据
❦NoSQL+主从数据库集群+读写分离+分库分表
4. Redis有什么用?
redis的主要作用:快速存取
Redis的应用场景?
单点登录/直播平台在线好友列表/抢购/秒杀/商品的排行/点赞/数据过期
Redis怎么用?
官网地址:redis,io
命令地址:http://doc.redisfans.com/
***版本:3.2.9
应用版本:3.0.4
5. Redis的五大数据类型以及应用场景
*String类型
k-v格式中V的数据类型是String,一个redis字符串value最多可以存512M
应用场景:秒杀商品/点赞
设值 set key value
取值 get key
删除 del key
incr key 递增加1
decr key 递减减1
incrby key 2 递增加 2
decrby key 2 递减减2
*Hash类型
k-v格式中V的数据类型是hash。
应用场景:电商网站中的商品详细信息
设值:hset mobile id 1 设值mobile id 为1
取值:hget mobile id
批量设值:hmset mobile_huawei id 1 name huaweip10 price 5600
批量取值:hgetall mobile_huawei
删除 del key
*List类型
k-v格式中V的数据类型是List。
应用场景:获取分页/商品评论表
从左边插入记录:lpush comment:1 1 2 3
从右边插入记录:rpush comment:1 4 5 6
插入后comment:1 的数据为:3 2 1 4 5 6
从左边弹出记录:lpop comment:1 弹出3
从右边弹出记录:rpop comment:1 弹出6
获取分页:lrangge comment:1 start end
rpush list01 1 1 2 2 3 3 4 4 插入数据
删除:lrem list01 2 3 删除2个3
*Set类型
k-v格式中V的数据类型是set和list不同是:list是有序的,set是无序的,且具有唯一性
应用场景:微信朋友圈查看权限/独立IP投票限制
增加:sadd set01 1 1 2 2 3 3
去掉重复数据添加1 2 3,因为set具有唯一性。插入重复数据直接会过滤掉
添加朋友圈juran sadd friends:juran a b c
添加朋友圈xxxx sadd friends:xx b c
查看集合的交集:sinter friends:juran friends:xx
*Zset类型
k-v格式中v的数据类型是zset,有序的
应用场景:商品的销售排行
增加 zadd mobile:sales 100 huawei 99 ipx 98 vivo 97 oppo
从小到大获取商品:zrange moblie:sales 0 -1
从大到小获取商品:zrevrange mobile:sales 0 -1
如果想带上数量可以加上参数,withscores