redis入门介绍
Nosql:
泛指非关系型数据库
特点:易扩展性、高性能、多样灵活的数据类型
3V:海量Volume。多样Variedy、实时Velocity
3高:高并发、高可扩、高性能
Nosql数据模型:
聚合模型:BSON是JSON的一种
高并发的操作是不太建议有关联查询
互联网公司用冗余数据来避免关联查询
分布式事务是支持不了太多并发
分类:一、KV建值
二、BSON:1、MongoDB:基于分布式文件存储的数据库
2、CouchDB
三、列族:1、Cassandra,HBase
2、分布式文件流
四、图形:1、Neo4j
2、InfoGrid
在分布式数据库中的CAP原理CAP+BASE
传统的ACID分别是:1、A(Atomicity)原子性
2、C(Consistency)一致性
3、I(Isolation)独立性
4、D(Durability)持久性
CAP:1、C(Consistency)强一致性
2、A(Availability)可用性
3、P(Dartition tolerance)分区容错性
CAP的3进2:CAP理论就是说在分布式存储系统中,最多只能实现上面的两点,而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须要的
我们只能在一致性和可用性之间进行权衡,没有Nosql系统能同时保证这三点
CA:传统Oracle数据库,AP:大多数网站建构的选择,CP:Redis、MongoDB
BASE:是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案
基本可用性(Basically)、软状态(Soft state)、最终一致性(Eventually consistent)
分布式+集群简介:
分布式:不同的多台服务器上面部署不同的服务模块,他们通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作
集群:不同的多台服务器部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问
Redis介绍:Remete DIctionary Server(远程字典服务器)
Redis启动后杂项基础知识讲解
1、单进程:利用epoll函数的包装来做到处理客户的请求
2、默认16个库:数据库的下标从0开始,用select <下标> 来切换数据库
3、DBsize查看当前数据库的key的数量
4、FILSHDB:清空当前库
5、FILSHALL:清空所有库
6、统一密码管理:所有的库密码都相同
7、redis索引都是从零开始
8、默认端口为6379
常用五大数据类型简介:
1、String(字符串):是redis最基本的类型,一个key对应一个value,字符串value最多512M,是二进制安全,意思是redis的String可以包含任何数据类型
2、Hash(哈希):是一个键值对集合:类似Java里面的Map<String,Object>,是一个String类型的field和value的映射表,特别适合用于存储对象
3、List(列表):是简单的字符串列表,按照插入顺序,你可以添加一个元素导列表的头部或尾部,它的底层是个链表
4、Set(集合):是String类型的元素集合。它是通过Hash Table实现的
5、ZSet(Sorted set):有序集合,所有元素都会关联一个double类型的分数
最常用命令:
key:
keys * 查看所有key;
exists key 判断key是否存在
move key db 将key从此数据库移动到db数据库
expire key 设置工期时间
tll key 查看key的过期时间,-1表示永不过期,-2为以过期
type key查看你的key是什么类型
String:
set/get/del/append/strlen
Incr/decr/incrby/decrby 注:一定要Number类型的才能进行加减
getrange 获取指定范围内的值
setrange 在某个位置插入值
setex setnx
mset/mget/msetnx getset
List:
lpush key []
rpush key []
linedx key 索引
lrage key 位置
lpop key
rpop
llen
irem key 删除n个value值
itrim key 开始index结束index截取指定范围内的值赋个key
rpoplpush 源列表 目标列表
lset key index value
linsert key
before/after 值1 值2
Set:
Hash:
Zset:
解析redis.conf配置文件:
units单位:配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit,对大小写不敏感
includes:通过includes包含其他配置文件
general(通用):运行模式、运行通道、运行端口、连接队列、端口的绑定、超时、检测通性、日志级别、日志名称、系统日志开关、系统日志文件名头、指定系统日志设备、库个数
snapshotting(快照):
replication(复制):
security(安全):
limits限制:
append only mode(追加):
redis持久化:
RDB(redis database):在指定时间间隔内将内存中的数据集快照写入磁盘
优势:适合大规模数据恢复,对数据完整性和一致性要求不高
劣势:fork的时候,内存中的数据被克隆了一份,在一定时间间隔做一次备份,redis如果down掉就会丢失最后一次快照
AOF(append only mode):以日志形式来记录每个操作(只记录写操作)
修复.aop文件(redis-check-aof --fix aof文件)
rewrite:当AOF文件超过了设定的闸值时,redis就会启动AOF文件的内容压缩
触发机制:redis会记录上次重写的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且大于配置的大小
优势:每秒同步、每修改同步、不同步
劣势:文件越来越大,运行速率慢于rdb
AOF与RDB可共存,共存时优先加载AOF
redis的事务:
命令:
discakd取消事务
ecec执行
multi标记
unwatch取消监控
watch key 监控
正常执行、放弃执行、主体连坐、冤头债主
watch监控:悲观锁/乐观锁/CAS
阶锁:开启以multi开始一个事务,入队:将多个命令入队到事务中,不会立即执行,执行由exec命令触发事务
特性“单独隔离操作、没有隔离级别概念、不保证原子
Redis发布订阅:先订阅后才能收到消息 订阅命令 subscribe 频道 psubscribe 频道* 消息发布 publish 频道 内容
Redis的复制(Master/Slave):就是主从复制,主机数据更新后根据配置和策略自动同步到备机中
master/slave机制,master以写为主,Slave以读为主
作用:读写分离,容灾恢复
用法:一、配从不配主
二、从库配置:slaveof 主机IP 主库端口 注:每次与master断开后都需要重新连接,除非配置入redis.conf文件中
三、修改配置文件细节操作:1、拷贝多个redis.conf文件
2、开启daemonize yes
3、pid文件名称
4、制定端口
5、Dump.rdb名称
四、常用3招:一主二从、薪火相传、反客为主
复制原理:
哨兵模式(sentiel):反客为主自动版,能够后台监控主机是否故障,如果故障根据投票数自动将从库转换为主库 使用步骤:1、在redis.conf的文件夹下建立sentincl.conf文件 2、配置哨兵
3、启动哨兵:Redis-sentinel
复制的缺点:数据有延迟