学习redis之前先认识一些概念
1. 什么是nosql?
Not Only SQL 不仅仅是 SQL,通常指的是非关系型的数据库。MySQL 和 Oracle 都是属于关系型
数据库。
2. 为什么要用nosql?
随着互联网的高速崛起,网站的用户群的增加,访问量的上升,传统数据库上都开始出现了性能瓶颈,web
程序不再仅仅专注在功能上,同时也在追求性能。所以 NOSQL 数据库应运而上,具体表现为对如下三高问题的
解决:
在同一个时间点,同时有海量的用户并发访问。
往往要达到每秒上万次读写请求。关系数据库应付上万次 SQL 查询还勉强顶得住,但是应付上万次 SQL 写
数据请求,硬盘 IO 就已经无法承受了
数据库中数据量特别大,数据库表中每天产生海量的数据。
类似 QQ,微信,微博,每天用户产生海量的用户动态,每天产生几千万条记录。对于关系数据库来说,在一
张几亿条记录的表里面进行 SQL 查询,效率是极其低下乃至不可忍受的。
关系型数据库进行扩展和升级是比较麻烦的一样事,对于很多需要提供 24 小时不间断服务的网站来说,对数
据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。
非关系型数据库可以通过不断的添加服务器节点来实现扩展,而不需对原有的数据库进行维护。
使用redis就是为了解决上述的问题! 那么就进入redis的专题吧
一、什么是redis?
Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50 个并发执行
10 万个请求,读的速度是 11 万次/s,写的速度是 8 万次/s 。而 MySQL 大约在 1000 次/s 左右。且 Redis 通过提供
多种键值数据类型来适应不同场景下的存储需求。
二、redis的五种数据类型
字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中以二进制保存,没有编码和解码的过程。无
论存入的是字符串、整数、浮点类型都会以字符串写入。在 Redis 中字符串类型的 Value 最多可以容纳的数据长
度是 512M。这是最常用的数据类型。
Redis 中的 Hash 类型可以看成具 String 的键和 String 的值 Map 容器,每一个 Hash 可以存储 40 亿个键值
对。
或者
List 类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其左
部(left)和右部(right)添加新的元素。在插入时,如果该键并不存在,Redis 将为该键创建一个新的链表,如果这个
键已经存在,则是向 list 添加元素。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删
除。List 中可以包含的最大元素数量是 40 亿个。
在 Redis 中,我们可以将 Set 类型看作为没有排序的字符集合,和 List 类型一样,我们也可以在该类型的数
据值上执行添加、删除或判断某一元素是否存在等操作。
Set 可包含的最大元素数量是 40 亿,和 List 类型不同的是,Set 集合中不允许出现重复的元素。
zset和set的区别就是set是无序的,而zset是有序的。zset类型数据写入的时候会有一个分数(sorce),顺序就是通过
sorce的大小确定的。
三、redis的持久化模式
因为 Redis 中的数据都是写在内存中的,如果将内存中的数据写到硬盘的文件上,称为持久化。
每过一段时间将内存中的数据写到硬盘上,服务器重启的时候重新读取硬盘的数据到内存中,默认使用这种方式。
优缺点:
整个 Redis 数据库将只包含一个文件,默认是 dump.rdb,这对于文件备份和恢复而言是非常完美的。因为我
们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上。一旦系统出现灾难性故障,我们可以非常
容易的进行恢复。对于 Redis 的服务进程而言,在开始持久化时,它唯一需要做的只是分叉出子进程,由子进程完成这些持久
化的工作,这样就可以极大的避免服务进程执行 IO 操作了。相比于 AOF 机制,如果数据集很大,RDB 的启动效率会更高。但是,
因为 RDB 是每隔一段时间写入数据,所以系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。
由于 RDB 是通过子进程来协助完成数据持久化工作的,因此当数据集较大时,可能会导致整个服务器停止服
务几百毫秒,甚至是 1 秒钟。一般在夜深人静的时候持久化会比较好。
以日志的方式记录服务器上的每个操作,当服务器重启的时候,将日志中
操作还原到内存中。
优缺点:
AOF 包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。也可以通过该文件完成数据的重
建。该机制可以带来更高的数据安全性,所有的持久化操作都是异步完成的。对于相同数量的数据集而言,
AOF 文件通常要大于 RDB 文件。根据同步策略的不同,AOF 在运行效率上往往会慢于 RDB。
redis的基础知识就到这了,后面会更新redis其他知识
原文:https://www.cnblogs.com/mengjialian/p/12519287.html