Redis从基础到入门(一)

1、NoSQL入门和概述

1.1 概述

什么是NoSQL

NoSQL(Not only SQL)泛指非关系型的数据库,这些类型的数据存储不需要固定的模式,无需多于操作就可以横向扩展。

NoSQL的优点

易扩展

大数据量高性能

多样灵活的数据类型

相关词:“3V+3高”
大数据时代的3V

海量Volume、多样Vareity、实时Velocity

互联网需求的3高

高并发、高可控、高性能

相关词:“去IOE”

指去除IBM小型机、Oracle数据库及EMC存储设备

1.2 NoSQL数据模型简介

关系型数据库和非关系型数据库

聚合模型

(1)K-V键值对
(2) BSON

BSON是一种类json的二进制形式的存储格式,简称Binary JSON。

它和json一样,支持内嵌的文档对象和数组对象。

(3)列族
(4)图形

1.3 NoSQL数据库的四大分类

(1)kv键值

典型应用介绍

新浪:BerkeleyDB+redis

美团:redis+tair

阿里、百度:memcache+redis

(2)文档型数据库

CouchDB
MongoDB

MongoDB是一个基于分布式文件存储的数据库,由c++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。

(3)列存储数据库

Cassandra、HBse

分布式文件系统

(4)图关系数据库

Neo4J、InfoGrid

1.4 分布式数据库中CAP原理CAP+BASE

传统ACID

A(Atomicity)原子性

C(Consistency)一致性

I(Isolation)独立性

D(Durability)持久性

CAP

C:Consistency(强一致性)

A:Availability (可用性)

P:Partition tolerance(分区容错性)

CAP的3进2

CAP理论就是在分布式存储系统中,最对只能是实现上面的两点(三选二)。

而由于当前网络硬件肯定会出现延迟丢包等问题,所以分区容错性是我们必须要实现的。

BASE

BASE是为了解决关系型数据库强一致性的问题而引起的可用性降低而提出的解决方案。

BASE其实是下面三个术语的缩写:

基本可用(Basically Available)

软状态(Soft state)

最终一致(Eventually consistent)

分布式+集群简介

分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间的通信和调用,对外提供服务和组内协作。

集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。

2、Redis的入门介绍

2.1 是什么

Redis:REmote DIctionary Server(远程字典服务器)。

是完全开源免费的,用C语言编写,遵守BSD协议,是一个高性能的(key-value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,也被人们称为数据结构服务器。

Redis与其他k-v缓存产品有以下三个特点:

(1)Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用

(2)Redis不仅仅支持简单的键值类型的数据,同时还提供list,set,zset,hash等数据结构的存储

(3)Redis支持数据的备份,即master-slave模式的数据备份

2.2 能干嘛

内存存储和持久化

取最新N个数据的操作

模拟类似于HttpSession这种需要设定过期时间的功能

发布、订阅消息系统

定时器、计数器

3、Redis启动后杂项基础知识讲解

单进程

单进程模型来处理客户端的请求,对读写等事件的响应是通过对epoll函数的包装来做到的,Redis的实际处理速度完全依靠主进程的执行效率。

Epoll是linux内核为处理大批量文件描述符而做了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。

默认16个数据库,类似数组下表从零开始,初始默认使用零号库
Select命令切换数据库

select + 角标 选择角标-1号库

select 6  # 选择5号库
Dbsize查看当前数据库Key的数量
Flushdb:清空当前库
Flushall:通杀所有库
统一密码管理:16个库都是同样密码,要么都OK要么一个也连接不上
Redis索引都是从0开始
为什么默认端口是6379

4、Redis数据类型

4.1 Redis的五大数据类型

String(字符串)

string是redis最基本类型,与mamcached类型一模一样,一个key对应一个value。

string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象。

一个redis中字符串value最多可以是512M。

Hash(哈希,类似Java里的Map和python中的Dict)

Redis hash是一个键值对集合。

Redis hash是一个string类型的field和value的映射表,hash特别适合于存储对象。

List(列表)

Redis list 是最简单的字符串列表,按照插入顺序排序,可以添加一个元素列表的头部(左边)或尾部(右边)。

它的底层实际是个链表。

Set(集合)

Redis的set是string类型的无序集合,它是通过HashTable实现的。

Zset(sorted set:有序集合)

Zset和set一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。

redis正是通过分数来为集合中的成员进行从小到大的排序,zset的成员是唯一的,但分数(score)却可以有重复。

猜你喜欢

转载自blog.csdn.net/h21396577548/article/details/123698851