• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

浅谈大型分布式系统Redis内存数据库实践

技术杂谈 勤劳的小蚂蚁 4个月前 (01-12) 108次浏览 已收录 0个评论 扫描二维码
随着互联网的飞速发展和大数据云计算概念的普及 ,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量, 这个时候需要一种能够快速存取数据的组件来缓解传统数据库服务I/O的压力,解决系统性能上的瓶颈.
本篇文章的主要目的是为了让大家初步了解Redis内存数据是什么,在大型分布式系统架构中有什么作用,以及Redis内存数据库在实际项目中怎么应用。

 

分布式有什么用

 

 

1) 将系统功能模块化,且部署在不同的地方,对于底层模块,只要保持接口不变,
上层系统调用底层模块将不关心其具体实现,且底层模块做内部逻辑变更,上层系统
都不需要再做发布,可以极大限度的解耦合
2) 解耦合之后,可以复用共同的功能,且业务扩展更为方便,加快开发和发布的速度
3) 系统分开部署,充分利用硬件,可以提高系统性能
4) 减少数据库连接资源的消耗

 

 

Redis是什么 

 

Redis是一个开源的 ,高性能 ,C语言开发的,键值对(key-value)存储数据的NOSQL数据库。那接下来我们理清楚几个基本的概念和数据库应用的一个发展历史:

 

基本概念:NOSQl : Not Only Sql  泛指非关系数据库  Redis /MongoDB /Hbase
关系型数据库: Oracle/Mysql/Sybase /SqlServer

 

 

 

1

 

Redis 有什么用

 

 

1.1. Redis的作用和地位

 

Redis的主要作用一句话来概括就是 能够快速存取。
如下图所示:以电商平台架构为例,Redis在系统架构中的位置,它是挡在关系型数据库前面的一道快速读取数据的屏障,极大的缓解了关系型数据的读取压力,使整个系统的在数据存取的瓶颈得到了极大的改善。

 

1.2. Redis的应用场景

 

Redis在大型分布式系统架构中主要的一些应用场景包括 单点登陆系统的权限验证,直播平台的好友列表显示,商品秒杀活动的剩余商品数目,电商网站的商品排行,网站的访问数量统计等高并发访问的功能需求,接下来我们在介绍Redis支持的数据类型里面会一一介绍此些场景的操作。

 

 

2

 

Redis怎么用

 

Redis的官网地址:  https://redis.io/
Redis最新版本:3.2.9
Redis数据库服务启动: 在linux下面启动Redis数据库服务:./redis-server  /etc/redis.conf
Redis客户端:启动客户端链接数据库   ./redis-cli -h 127.0.0.1 -p 6379

 

2.1. Redis的五大数据类型以及应用场景

 

Redis一共有五种数据类型来支持各种应用场景,String /Hash/List/Set/Zset
接下来我们一一介绍。

 

 

2.1.1. String类型 

 

 

K-V格式中 V是一个字符串(数字)
基本的操作语法如下:
单个设值取值 : set k1 v1   get k1
多个设置取值  mset k1 v1 k2 v2  mget  k1 k2
删除key  del k1
注意: 当value是数字时,可以递增,可以进行递增递减操作 比如INCR K1, DECR K1 

 

实际应用场景: 如下图所示 秒杀商品数目或者点 zan 的操作。

 

 

2.1.2. Hash 数据类型

 

K-V格式中 V是一个Hash类型 ,类似于Java里面Map<Object,Object>
基本的操作语法如下:

 

设置对象的某个属性 hset student:001 id 1
设置对象的多个属性hmset student:001 id 1 name xiaoxi  sex boy height 180
获取对象的单个属性 hget student:001 id /hget strudent name
获取对象的多个属性 hmget student:001 id name
获取对象所有的属性 hgetall student
删除一个或多个字段 hdel  stduent   id  name

 

实际应用场景 : 如下图所示,电商网站中商品的详细信息可以存储在Redis中,不需要每次都访问关系型数据库。

 

 

2.1.3. list数据类型

 

 

K-V格式中 V是一个list类型 ,类似与java里面的LinkedList 有序列表
基本的操作语法如下:
从左边插入记录  lpush comment:1  1 2 3
从右边插入记录  rpush comment:1  4 5 6
把它看成一个竹子,从竹子两端插入数据 上面插入的记录排列如下。
3 2 1 4 5 6
删除就是弹出左边弹出,右边弹出 lpop commet:1 1/ rpop commet:1 1
获取list长度 llen comment:1
获取list lrange start end 适用分页

 

应用场景: 如下图所示: 商品的评论表,最新的评论显示在最前面,而且可以分页显示

 

 

2.1.4. set数据类型

 

K-V格式中 V是一个set类型,和list的不同的地方就是set是无序的而且里面的元素有唯一性
基本的操作语法如下:

 

增加元素 sadd keven_friends xiaoxi  xiaohei
  删除元素 srem keven_friends  xiaoxi
  查看元素 smember keven_friends
  查看元素个数 scard keven_friends
  是否存在某个元素 sisimember keven_friends xiaoxi
  集合运算 交集/并集 sinter key1 key2 / sunion key1 key2

 

应用场景: 如下图所示,set数据类型主要应用在 独立IP投票的限制/微信朋友quan的查看权限(共同好友)。
*  Zset (sorted set) 有序集合。
K-V格式中 V是一个有序set类型  怎么做到有序呢,其实就是给它增加一个分数。
基本的操作语法如下:
以上给大家介绍的一些内容仅仅是Redis的一些基础入门知识,同样Redis虽然是内存数据,但是也可以同其他数据库一样进行数据的持久化,以及进行主从分配和集群,在这里就不再详细描述 。

丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:浅谈大型分布式系统Redis内存数据库实践
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00