首页 > 数据库 >简述 NoSQL 和NoSQL 中的 Redis

简述 NoSQL 和NoSQL 中的 Redis

时间:2023-11-05 20:22:37浏览次数:42  
标签:缓存 NoSQL 数据库 Redis 支持 简述 数据

简述 NoSQL 和NoSQL 中的 Redis


引言

  Redis 是当前比较热门的 NoSQL 数据库产品之一,是一个开源的、使用 C 语言编写的、支持网络交互的、可基于内存也可持久化的高性能键值对 (Key-Value) 数据库(区别于 MySQL 的二维表格的形式存储) 。 它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下:字符串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)。


关于 NoSQL

1.什么是NoSQL

  NoSQL(Not Only SQL),指非关系型数据库。是为了解决大规模数据集合以及多种数据类型带来的问题,尤其是大数据应用难题。NoSQL 并没有一个统一的架构,各有所长。

2.常见的 NoSQL 以及其分类

i.常见的 NoSQL:
  • Redis
  • MongeDB
  • HBase
  • Membase
  • Neo4j
  • Cassandra
  • CouchDB
  • Riak
ii.NoSQL 的四大分类:

1.键值(Key-Value)存储数据库

 应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。

 优点:查找速度快。这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value 模型对于 IT 系统来说,优势在于简单、易部署。如:Redis,Oracle BDB。

2.列存储数据库

 应用场景:分布式的文件系统,应对分布式存储的海量数据。

 优点:查找速度快,可扩展性强,更容易进行分布式扩展。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:HBase, Riak, Cassandra。

3.文档型数据库

 应用场景:Web 应用(与 Key-Value 类似,Value 是结构化的,不同的是数据库能够了解 Value 的内容)。

 优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构。文档型数据库可以看作是键值数据库的升级版,而且比键值数据库的查询效率更高。如: MongoDB,CouchDB。国内也有文档型数据库SequoiaDB,已经开源。

4.图形(Graph)数据库

 应用场景:社交网络,推荐系统等。专注于构建关系图谱。

 优点:利用图结构相关算法。比如最短路径寻址,N 度关系查找等。使用灵活的图形模型,并且能够扩展到多个服务器上。

3.NoSQL 与关系型数据库的优势与劣势对比

  • 关系型数据库:

 优势:以完善的关系代数理论作为基础,有严格的标准,支持事务 ACID 属性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持。

 劣势:可扩展性较差,无法较好支持海量数据存储,无法满足数据高并发的需求。

  • NoSQL 数据库:

 优势:可以支持超大规模数据存储,灵活的数据模型可以很好地支持 Web 2.0 应用,具有强大的横向扩展能力等。

 劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等。


关于 Redis

官网:

https://redis.io/

Redis 是一种基于键值对(key-value)的 NoSQL 数据库。

1.Redis 的特点

i.性能高:

 Redis 的所有数据都存放在内存中,数据读写速度非常快,这是 Redis 性能高的最主要原因。

ii.原子性(支持事务):

 Redis 的所有操作都是原子性的,同时 Redis 还支持对几个操作全并后的原子性执行,可以保证数据的准确性。

iii.支持多种数据结构:

 常见的有:string(字符串);list(列表);hash(哈希),set(集合:不重复,无序);zset(有序集合 sorted set:不重复,有序)。

iv.支持持久化

 支持两种方式的持久化,RDB和AOF,可以把内存中的数据持久化到磁盘中。

v.支持集群

 从3.0版本开始支持。

vi.支持主从

 master-slave架构,可以实现负载均衡、高可用。

vii.官方推荐 Linux 系统且不支持 Windows 系统

 没关系,第三方版本支持 Windows 系统。

2.Redis 的特性

i.单进程

 Redis 的服务器程序采用的是单进程的模型来处理客户端的请求。作者之所以这么设计,主要是为了保证 redis 的快速,高效,如果涉及了多线程,就需要使用锁机制来解决并发问题,这样执行效率反而会打折扣。对读写等事件的响应是通过对 epoll 函数的包装来做到的。

 Redis 的实际处理速度完全依赖主进程的执行效率,假如同时有多个客户端并发访问服务器,则服务器处理能力在一定情况下将会下降。假如要提升服务器的并发能力,那么可以采用在单台机器上部署多个 redis 进程的方式。

ii.多数据库( 16 个)
  • Redis 每个数据库对外都是0开始递增的数字来命名,默认16个数据库,默认使用0号数据库,可以使用 select + 数字 来选择数据库。

  • 可以使用命令:如 flushdb,清除某个数据库的数据。

  • 多个数据库之间并不是完全独立的,可以使用命令:flushall,清空 redis 全部的数据。

  • Redis 不支持自定义数据库名字,默认是: 0、1、2、3、4 ... 15,redis 索引都是从0开始的。

  • Redis 不支持为每个数据库设置不同的访问密码(默认密码为空)。

3.Redis 的应用场景

i.数据缓存应用(最多使用)

缓存的两种形式:

页面缓存:第一次从数据库中读取,然后生成一个静态页面,以后所有的读取,只加载这个静态页面就可以了

数据缓存:由于一个页面有几种需要从不同的缓存中读取数据的模块,所以不适合使用页面缓存。

 为了提高用户的请求速度和降低服务器的负载,降低数据库的读写次数,将一些在短时间之内不会发生变化且被频繁访问热点数据,存放就到缓存中,其性能优于 Memcached。 (类似于 MyBatis 的缓存机制)

热点数据:数据库中数据被访问的频率是不均匀的,频繁被访问的数据称为热点数据((Hot Spot Data)

ii.排行榜系统

 Redis 提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。

iii.计数器应用

 利用 Redis 的原子性,可以轻松地使用Redis INCR (自增)和 DECR (自减)命令来构建计数系统,关键是不用担心数据库的并发性问题,一般用于网站访问统计。

iv.会话缓存应用

 分布式集群架构中的 session 分离。(代替 Session 会话,保存 Web 用户状态信息)

v.数据过期处理

 利用 Redis 支持的过期时间特性,可以定时清除过期数据,如定期活动(精确到毫秒)。

vi.消息队列

 Redis 支持消息/订阅模式,可以构建实时的消息队列,实现不同系统之间的实时交互通信,可用于秒杀、抢购、12306 等。

标签:缓存,NoSQL,数据库,Redis,支持,简述,数据
From: https://www.cnblogs.com/cjw2002/p/17806685.html

相关文章

  • Redis问题大全
    一、什么是Redis?  Redis是一种支持key-value键值对数据存储的NoSQL数据库。与传统数据库不同的是,Redis的数据是保存在内存中的(内存数据库,支持持久化),因此读写速度非常快,被广泛应用于分布式缓存方向。  redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记......
  • redis的几种部署模式
     一,redis有哪几种部署模式Redis有几种常见的部署模式,包括单机模式、主从模式、哨兵模式和集群模式。单机模式:这是最简单的部署方式,仅需要在单个机器上启动Redis实例。这种模式适用于数据量较小、业务压力较小的场景。其优点是操作简单、成本低,适用于小型业务和开发测试环境。......
  • Redis 安装与配置
    Redis概述与安装GCC环境的安装与测试一、安装(1)在线安装GCCyum-yinstallgccgcc-c++autoconfpcrepcre-develmakeautomake#可选yum-yinstallwgethttpd-toolsvim1.就把gcc当成c语言编译器,g++当成c++语言编译器用就是了.(知乎)2.wget是一个从网络上自动下......
  • Redis 有哪些数据结构?
    Redis有五种基本数据结构。string字符串最基础的数据结构。字符串类型的值实际可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB。字符串主要有以下几个典型使用场景:缓存功能计数共享Session......
  • 什么是Redis?Redis可以用来干什么?
    什么是RedisRedis是一种基于键值对(key-value)的NoSQL数据库。比一般键值对数据库强大的地方,Redis中的value支持string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构,因此Redis可以满足很多的应用场景。而且因为Redis......
  • java——redis随笔——实战——分布式缓存——哨兵
                                                                           ......
  • java——redis随笔——实战——分布式缓存——主从
                                                                               ......
  • Redis可用性
    主从模式读写分离,master处理读写命令,slave仅处理读命令。为什么仅有一个masater能处理读?这是避免引入加锁、实例间协商是否完成修改等操作。主从同步方式通过replicaof{master_ip}6379去请求RDB文件,同步细节如下。从库给主库发送psync命令,表示要进行数据同步。psy......
  • Redis创始人开源最小聊天服务器,仅200行代码,几天功夫已获2.8K Star!
    中午时候,在技术交流群里聊起关于Redis创始人的一些趣事,比如离开Redis之后,去写科幻小说之类的。因为好奇科幻小说,TJ君就去搜索了一下。结果一搜,发现Redis作者最近居然又搞了个新活儿!世界上最小的聊天服务器这次Redis作者的新开源项目名叫:SmallChat。从关于内容中可以知道,这个开......
  • java——redis随笔——实战——分布式缓存
    在使用Redis过程中,持久化是一项非常重要的功能,因为如果RedisServer停止工作,所有的数据将全部丢失。 为了避免这种情况的出现,我们需要将Redis中的数据保存在硬盘上,以保证数据不受服务器宕机影响。 Redis提供了两种持久化方式——RDB和AOF。    笔者将会以RDB与AOF......