如何让网站自适应手机,小型购物网站开发,腾讯云建设网站视频,电脑培训网文章目录 一 什么是NoSQL#xff1f;二 Redis是什么#xff1f;三 Redis五大基本类型1 String#xff08;字符串#xff09;应用场景 2 List#xff08;列表#xff09;应用场景 3 Set#xff08;集合#xff09;4 sorted set#xff08;有序集合#xff09;应用场景… 文章目录 一 什么是NoSQL二 Redis是什么三 Redis五大基本类型1 String字符串应用场景 2 List列表应用场景 3 Set集合4 sorted set有序集合应用场景 5 hash哈希应用场景 一 什么是NoSQL
Nosql not only sql不仅仅是SQL
关系型数据库列行同一个表下数据的结构是一样的。
非关系型数据库数据存储没有固定的格式并且可以进行横向扩展。
NoSQL 泛指非关系型数据库随着 web2.0 互联网的诞生传统的关系型数据库很难对付web2.0大数据时代尤其是超大规模的高并发的社区暴露出来很多难以克服的问题NoSQL在当今大数据环境下发展的十分迅速Redis是发展最快的。
传统RDBMS和NoSQL RDBMS 组织化结构固定SQL数据和关系都存在单独的表中行列DML数据操作语言、DDL数据定义语言等严格的一致性ACID): 原子性、一致性、隔离性、持久性基础的事务 NoSQL 不仅仅是数据没有固定查询语言键值对存储redis、列存储HBase、文档存储MongoDB、图形数据库不是存图形放的是关系Neo4j最终一致性BASE基本可用、软状态/柔性事务、最终一致性 二 Redis是什么
Redis Remote Dictionary Server即远程字典服务。
是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库并提供多种语言的API。
与memcached一样为了保证效率数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件并且在此基础上实现了master-slave(主从)同步。 三 Redis五大基本类型
Redis 是一个开源内存存储的数据结构服务器可用作数据库高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合位图hyperloglogs 等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能同时通过Redis Sentinel提供高可用通过Redis Cluster提供自动分区。
由于redis类型大家很熟悉且网上命令使用介绍很多下面重点介绍五大基本类型的底层数据结构与应用场景以便当开发时可以熟练使用redis。
1 String字符串 1.String类型是redis的最基础的数据结构也是最经常使用到的类型。 而且其他的四种类型多多少少都是在字符串类型的基础上构建的所以String类型是redis的基础。 2.String 类型的值最大能存储 512MB这里的String类型可以是简单字符串、 复杂的 xml/json 的字符串、二进制图像或者音频的字符串、以及可以是数字的字符串 应用场景
1、缓存功能String字符串是最常用的数据类型不仅仅是redis各个语言都是最基本类型因此利用redis作为缓存配合其它数据库作为存储层利用redis支持高并发的特点可以大大加快系统的读写速度、以及降低后端数据库的压力。
2、计数器许多系统都会使用redis作为系统的实时计数器可以快速实现计数和查询的功能。而且最终的数据结果可以按照特定的时间落地到数据库或者其它存储介质当中进行永久保存。
3、统计多单位的数量eguidgongming count0 根据不同的uid更新count数量。
4、共享用户session用户重新刷新一次界面可能需要访问一下数据进行重新登录或者访问页面缓存cookie这两种方式做有一定弊端1每次都重新登录效率低下 2cookie保存在客户端有安全隐患。这时可以利用redis将用户的session集中管理在这种模式只需要保证redis的高可用每次用户session的更新和获取都可以快速完成。大大提高效率。 2 List列表 1.list类型是用来存储多个有序的字符串的列表当中的每一个字符看做一个元素 2.一个列表当中可以存储有一个或者多个元素redis的list支持存储2^32次方-1个元素。 3.redis可以从列表的两端进行插入pubsh和弹出pop元素支持读取指定范围的元素集 或者读取指定下标的元素等操作。redis列表是一种比较灵活的链表数据结构它可以充当队列或者栈的角色。 4.redis列表是链表型的数据结构所以它的元素是有序的而且列表内的元素是可以重复的。 意味着它可以根据链表的下标获取指定的元素和某个范围内的元素集。 应用场景
1、消息队列reids的链表结构可以轻松实现阻塞队列可以使用左进右出的命令组成来完成队列的设计。比如数据的生产者可以通过Lpush命令从左边插入数据多个数据消费者可以使用BRpop命令阻塞的“抢”列表尾部的数据。
2、文章列表或者数据分页展示的应用。比如我们常用的博客网站的文章列表当用户量越来越多时而且每一个用户都有自己的文章列表而且当文章多时都需要分页展示这时可以考虑使用redis的列表列表不但有序同时还支持按照范围内获取元素可以完美解决分页查询功能。大大提高查询效率。 3 Set集合 1.redis集合set类型和list列表类型类似都可以用来存储多个字符串元素的集合。 2.但是和list不同的是set集合当中不允许重复的元素。而且set集合当中元素是没有顺序的不存在元素下标。 3.redis的set类型是使用哈希表构造的因此复杂度是O(1)它支持集合内的增删改查 并且支持多个集合间的交集、并集、差集操作。可以利用这些集合操作解决程序开发过程当中很多数据集合间的问题。 应用场景
1、标签比如我们博客网站常常使用到的兴趣标签把一个个有着相同爱好关注类似内容的用户利用一个标签把他们进行归并。
2、共同好友功能共同喜好或者可以引申到二度好友之类的扩展应用。
3、统计网站的独立IP。利用set集合当中元素不唯一性可以快速实时统计访问网站的独立IP。
数据结构
set的底层结构相对复杂使用了intset和hashtable两种数据结构存储intset可以理解为数组。 4 sorted set有序集合
redis有序集合也是集合类型的一部分所以它保留了集合中元素不能重复的特性但是不同的是有序集合给每个元素多设置了一个分数。利用该分数作为排序的依据。 应用场景
1、 排行榜有序集合经典使用场景。例如视频网站需要对用户上传的视频做排行榜榜单维护可能是多方面按照时间、按照播放量、按照获得的赞数等。
2、用Sorted Sets来做带权重的队列比如普通消息的score为1重要消息的score为2然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。 5 hash哈希 Redis hash数据结构 是一个键值对key-value集合,它是一个 string 类型的 field 和 value 的映射表redis本身就是一个key-value型数据库因此hash数据结构相当于在value中又套了一层key-value型数据。所以redis中hash数据结构特别适合存储关系型对象 应用场景
1、由于hash数据类型的key-value的特性用来存储关系型数据库中表记录是redis中哈希类型最常用的场景。一条记录作为一个key-value把每列属性值对应成field-value存储在哈希表当中然后通过key值来区分表当中的主键。
2、经常被用来存储用户相关信息。优化用户信息的获取不需要重复从数据库当中读取提高系统性能。