共计 1786 个字符,预计需要花费 5 分钟才能阅读完成。
自动写代码机器人,免费开通
这篇文章主要介绍 redis 入门学习手册分享,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、前言
在过去的几年时间里,一提到高并发、海量数据存储解决方案,我们想到的都是 NoSQL 数据库,与之相应的产品自然也呈现出勃勃生机。而在众多产品中脱颖而出的有 Redis、MongoDB、BerkeleyDB 和 CouchDB 等。下面来简单说明一下。
Redis 的优势:
1、和其他 NoSQL 产品相比,Redis 的易用性极高,因此对于那些有类似产品使用经验的开发者来说,一两天,甚至是几个小时之后就可以利用 Redis 来搭建自己的平台了。
2、在解决了很多通用性问题的同时,也为一些个性化问题提供了相关的解决方案,如索引引擎、统计排名、消息队列服务等。
三、目前版本中 Redis 存在的主要问题:
1、在官方版本中没有提供 Windows 平台的支持,已发布的正式版本中只是支持类 Unix 和 MacOSX 平台。
2、没有提供集群的支持,然而据官网所述,预计在 2.6 版本中会加入该特征。
3、Publication/Subscription 功能中,如果 master 宕机,slave 无法自动提升为 master。
四、和关系型数据库的比较:
在目前版本 (2.4.7) 的 Redis 中,提供了对五种不同数据类型的支持,其中只有一种类型,既 string 类型可以被视为 Key-Value 结构,而其他的数据类型均有适用于各自特征的应用场景,至于具体细节我们将会在该系列后面的博客中予以说明。
相比于关系型数据库,由于其存储结构相对简单,因此 Redis 并不能对复杂的逻辑关系提供很好的支持,然而在适用于 Redis 的场景中,我们却可以由此而获得效率上的显著提升。即便如此,Redis 还是为我们提供了一些数据库应该具有的基础概念,如:在同一连接中可以选择打开不同的数据库,然而不同的是,Redis 中的数据库是通过数字来进行命名的,缺省情况下打开的数据库为 0。如果程序在运行过程中打算切换数据库,可以使用 Redis 的 select 命令来打开其他数据库,如 select 1,如果此后还想再切换回缺省数据库,只需执行 select 0 即可。
在数据存储方面,Redis 遵循了现有 NoSQL 数据库的主流思想,即 Key 作为数据检索的唯一标识,我们可以将其简单的理解为关系型数据库中索引的键,而 Value 则作为数据存储的主要对象,其中每一个 Value 都有一个 Key 与之关联,这就好比索引中物理数据在数据表中存储的位置。在 Redis 中,Value 将被视为二进制字节流用于存储任何格式的数据,如 Json、XML 和序列化对象的字节流等,因此我们也可以将其想象为 RDB 中的 BLOB 类型字段。由此可见,在进行数据查询时,我们只能基于 Key 作为我们查询的条件,当然我们也可以应用 Redis 中提供的一些技巧将 Value 作为其他数据的 Key,这些知识我们都会在后面的博客中予以介绍。
五、如何持久化内存数据:
缺省情况下,Redis 会参照当前数据库中数据被修改的数量,在达到一定的阈值后会将数据库的快照存储到磁盘上,这一点我们可以通过配置文件来设定该阈值。通常情况下,我们也可以将 Redis 设定为定时保存。如当有 1000 个以上的键数据被修改时,Redis 将每隔 60 秒进行一次数据持久化操作。缺省设置为,如果有 9 个或 9 个以下数据修改是,Redis 将每 15 分钟持久化一次。
从上面提到的方案中可以看出,如果采用该方式,Redis 的运行时效率将会是非常高效的,既每当有新的数据修改发生时,仅仅是内存中的缓存数据发生改变,而这样的改变并不会被立即持久化到磁盘上,从而在绝大多数的修改操作中避免了磁盘 IO 的发生。然而事情往往是存在其两面性的,在该方法中我们确实得到了效率上的提升,但是却失去了数据可靠性。如果在内存快照被持久化到磁盘之前,Redis 所在的服务器出现宕机,那么这些未写入到磁盘的已修改数据都将丢失。为了保证数据的高可靠性,Redis 还提供了另外一种数据持久化机制 –Append 模式。如果 Redis 服务器被配置为该方式,那么每当有数据修改发生时,都会被立即持久化到磁盘。
以上是“redis 入门学习手册分享”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!
向 AI 问一下细节