redis 应用范围解析
来源:互联网 发布:c语言玫瑰花代码 编辑:程序博客网 时间:2024/05/16 11:11
Redis介绍
Redis的全称是Remote Dictionary Server,它是由Salvatore Sanfilippo写的Key-Value存储系统。但它提供了比Key-Value更为丰富的数据结构,包括Lists、Sets、Ordered Sets以及Hashes,当然还有和Memcached一样的Strings结构;Redis当然还包括了对这些数据结构的丰富操作。Redis的优点可以总结为以下几点:
性能极高,Redis能支持超过 100K+ 每秒的读写频率;
丰富的数据类型,Redis支持二进制案例的 Strings、Lists、Hashes、Sets 及 Ordered Sets 数据类型操作;
原子性,Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行;
丰富的特性, Redis还支持 Publish/Subscribe、通知、Key过期等等特性。
这些丰富的特性,使得Redis在DB-Engines 排名稳居第十,其中在Key-Value数据库中排名第一。
关于直播
2015年到2016年,视频直播行业异军凸起,国内涌现了一批视频直播公司,如映客、一直播、熊猫TV、花椒等。直播行业的火爆与云计算和移动互联网的关系密不可分,云计算突破了视频直播技术的门槛;移动互联网使得直播随时随地成为可能。
上图是直播系统的完整框架图。用户终端,如智能手机、PAD、电脑等,通过网路接入负载均衡,进而进入后端的服务器系统;在后端服务器上,有不同的应用模块,如用户管理、关注信息、聊天交互、视频编码、金币系统、推送系统、排名系统、录像管理,这些业务系统都是搭建在底层云计算上,用户可以使用云Redis、MySQL、CDN、离线计算等资源构建直播系统。
Redis应用介绍
下面来具体介绍Redis具体应用场景。
场景一:用户信息管理
在直播系统中,用户有很多信息需要管理,如登录信息、注册信息等。传统的方式是采用关系型数据库存储用户信息,定义一张用户表,用户的属性对应表的列,这种方式的可扩展性很差,当用户增加新属性时,需要修改数据库中的用户表、数据订正等操作;采用Redis数据库进行用户信息管理时,通过采用Hashes数据结构,如上表所示,在user9527的个人信息中选择user9527作为Key,同时每一行的用户信息是Hashes内的Field,用户新增加信息时,通过Hset命令向Hashes内新加一个Field,如hset user9527 name xiaoqiang;最后可以通过hgetall user9527获取用户信息。
应用场景二:关注列表
在直播系统中有很多关注链,如明星、游戏玩家等等。用户可以使用sets实现这类关注链,查看不同主播的关注信息。
如上图所示的Jack关注列表,通过调用sadd方法给jack_follow增加响应的value值,用户Jack多关注一个人,则多增加一个记录;同时也可以通过sadd my_follow增加我关注的列表;最后,通过sinter jack_follow my_follow得出两个关注表中的交集部分。
场景三:积分排行
在直播系统中,需要实时更新积分排行榜,每个用户都有自己的积分和姓名信息。通过定义rank这个Key对应每个用户的积分,通过调用zadd增加对应用户的积分值,如 zadd rank 1000 Super;最后通过zrangebyscore zrank -inf +inf 遍历用户的key,得到指定范围内用户的积分,从而得到积分排行榜。
场景四:最新评论
在直播系统中,评论也是很关键的一部分,在Redis中可以通过Lists实现最新评论。如上图所示在Redis中定义latest.comment,当用户有评论时,调用Ipush增加用户的评论,如Ipush latest.comment “今天天气很好”;用户也可以调用 Irange latest.comment 0 2 获得最新评论。
除上述场景外,Redis还可以用在于:
PHP session信息
数据库缓存加速
点赞数、评论数目,通过Incr/decr进行数目增加或减少
消息广播,通过Subscribe/publish订阅模式实现
附件的人,redis 3.2中新增了附近的人功能
云数据库Redis实践
Redis设计时单线程结构,进而导致了整个Redis存在性能瓶颈;另外,在单节点的场景下,机器宕机时,可用性面临着很大的问题;同时,由于Redis是全内存数据库,因此Redis内存受限于单机内存;当内存过大时,也会影响其使用情况,其可扩展性也面临着挑战。
- redis 应用范围解析
- redis范围查询应用
- Redis应用案例,查找某个值的范围
- Redis应用案例,查找某个值的范围
- Redis应用案例 查找某个值的范围
- redis范围查询应用-查找IP所在城市<转>
- 反渗透设备:RO反渗透设备应用范围详细解析
- Redis的hash数据类型及其应用场景解析---购物车
- 设置应用处理范围
- ajax 应用范围
- 表单系统应用范围
- php的应用范围
- ACCESS数据库应用范围
- AOP应用范围
- python的应用范围
- synchronized 应用范围
- IPP 应用范围
- aop应用范围
- Linux操作系统CentOS7.2发行版本的安装与配置
- Mapped Statements collection does not contain value for后面是什么类什么方法之类的: 错误原因有几种
- java学习系列2(多线程三)
- 1组作业统计
- struts2初步
- redis 应用范围解析
- Educational Codeforces Round 30-B-Balanced Substring
- .WS文件
- Delphi7向Access数据库文本字段插入空值的方法
- Http中get和post请求
- 我想成为一个真的程序员
- 人工智能工作负载将“席卷”各大数据中心
- 批量导出手机apk备份
- Java 的发展史