Redis-基础介绍
NoSQL介绍
1. NoSQL概念
- NoSQL = Not Only SQL,意即“不仅仅是SQL”,泛指非关系型的数据库
- 不依赖业务逻辑方式存储,而以简单的key-value模式存储
- 适用于:对数据高并发的读写, 海量数据的读写,对数据高可扩展性
- 不适用于:需要事务支持,基于SQL的结构化存储,处理复杂关系
2. NoSQL特点
- 易扩展:去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展
- 大数据量高性能:NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多了
- 多样灵活的数据模型:NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式
3. CAP的含义
- C:Consistency(强一致性)
- A:Availability(可用性)
- P:Partition tolerance(分区容错性)
4. CAP的3选2
- CAP理论就是说在分布式存储系统中,最多只能实现上面的两点
- 由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容错性必须需要实现
5. CAP 原理将 NoSQL 数据库分成满足三类
- CA:传统Oracle数据库,单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强
- AP:大多数网站架构的选择,满足可用性,分区容忍性的系统,通常对一致性要求低一些
- CP:Redis、Mongodb,满足一致性,分区容错性的系统,通常性能不是特别高
6. BASE的含义
- 为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案
- 实现思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观
- 基本可用(Basically Available)
- 软状态(Soft state)
- 最终一致(Eventually consistent)
7. 分布式与集群
- 分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作
- 集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问
Redis概念
1. Redis:REmote DIctionary Server(远程字典服务器)
- 是完全开源免费的,用C语言编写的,遵守BSD协议,
- 是一个高性能的(key/value)分布式内存数据库,基于内存运行
- 数据都是缓存在内存中,周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件
- 支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被称为数据结构服务器
2. Redis特点
- 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
- 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
- 支持数据的备份,即master-slave模式的数据备份
3. Redis功能作用
4. Redis官网
- 官方网站:https://redis.io
- 官方中文网站:https://redis.cn/
5. Redis库操作
- 默认16个数据库,类似数组下表从零开始,初始默认使用零号库
- 统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上
- Select:语句选择切换库
- dbsize:查看当前数据库的key的数量
- flushdb:清空当前库
- Flushall:通杀全部库
6. Redis单线程
- 单进程模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率
- epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率
7. Redis多路IO复用
- 多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时
- 得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)
安装启动
1. 安装redis
- 安装gcc
# 安装
yum install gcc-c++# 查看版本
gcc --version
- 解压redis
tar -zxvf redis-6.2.1.tar.gz
- 进入redis目录
#编译
make#如果没有C语言环境,报错jemalloc/jemalloc.h:没有那个文件或目录
make distclean#安装
make install #默认安装到/usr/local/bin
make install PREFIX=命令安装到指定路径
- 修改redis.conf文件将里面的daemonize no 改成 yes,即可启动
2. 安装目录下的文件
- redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何
- redis-check-aof:修复有问题的AOF文件
- redis-check-dump:修复有问题的dump.rdb文件
- redis-sentinel:Redis集群使用
- redis-server:Redis服务器启动命令
- redis-cli:客户端,操作入口
常用命令
- 查看版本
redis-server -v
- 前台启动,命令行窗口不能关闭,否则服务器停止
redis server
- 后台启动,复制一份redis.conf到其他目录
cp /opt/redis-3.2.5/redis.conf /myredisredis-server #指定redis.conf目录
- 访问redis客户端
redis-cli#多个端口可以
redis-cli -p 6379
- 关闭
redis-cli shutdownredis-cli -p 6379 shutdown
- 查看redis进程