|
|
|
|
移动端

不会这门技术也想年薪百万?Redis内存数据库知识精讲

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

作者:来源:数据库开发|2017-12-13 09:21

年前最后一场技术盛宴 | 1月27日与京东、日志易技术大咖畅聊智能化运维发展趋势!


不会这门技术也想年薪百万?Redis内存数据库知识精讲

内存数据库

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

【编辑推荐】

  1. Redis快速入门
  2. Redis的丰富扩展之高性能图数据库
  3. Redis源码学习之Redis事务
  4. Redis源码学习之事件驱动
  5. Redis 和 Memcached 的区别大吗?只选一个做缓存我们该选哪个?
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网管员必读—服务器与数据存储

《网管员必读—服务器与数据存储》全面、系统地介绍了在中、高级网络管理和网络工程实施中两个重要方面的主流技术和应用:硬件服务器和数据...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊