NoSQL概述
NoSQL数据库的分类
- KV键值对:Redis;
- 文档型数据库(Bson格式):MongoDB:基于分布式文件存储的数据库
- 列存储数据库:HBase;分布式文件系统
- 图关系数据库
分布式数据库中的CAP和BASE
传统的ACID分别是什么
- A(Atomicity) 原子性
- C(Consistency)一致性
- I(Isolation)隔离性
- D(Durability)持久性
CAP - C(Consistency)强一致性
- A(Availability) 可用性
- P(Partition tolerance)分区容错性
3选2
BASE
- BA(Basically Available) 基本可用
- S(Soft state)软状态
- E(Eventually consistent) 最终一致性
Redis入门概述
Redis:Remote Dictionary Server 远程字典服务器
三个特点:
- 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启时可以再次加载进行使用
- 不仅仅支持简单的KV类型,还提供List,Set,ZSet,Hash等数据结构的存储
- 支持数据的备份,即Master—Slave的数据备份
Redis安装
其他知识
-
单进程
-
默认16个库
-
一些命令
启动redis服务 redis-server redis.conf
进入redis redis-cli -p 6379(默认端口)
设置 键值对set K V
得到键值对 get K V
清空当前DB FLUSHDB
清空所有DB FLUSHALL -
密码统一管理
-
索引从0开始
Redis数据类型
Tips:获取redis常见数据操作命令 redisdoc.com
Redis 的键 Key
常用操作:
- keys * 查询所有key
- exists key 判断某个key是否存在
- move key db 从当前db移动到 【db】库
- expire key 为给定key设置过期时间 秒 过期后会被删除
- ttl key 查看还有多少秒过期 -1 表示永不过期, -2 表示已经过期
- type key 查看key 的类型
- get key
- set key 后设置的值会覆盖前一个值
String
常用操作
-
set/get/del/append/strlen
-
incr/decr/incrby/decrby
-
getrange/setrange
-
setex(set with expire)键秒值/setnx(set if not exist)
-
mset/mget/msetnx
Hash
Hash: KV模式不变,但是V是一个键值对
- hset/hget/hmset/hmget/hgetall/hdel
- hlen
- hexists key 在key里面某个值的key
- hkeys/hvals
user : [id:11]
key:value[key:value]
- hincrby/hincrbyfloat
List
-
lpush/rpush/lrange
lpush: 类似于栈 rpush:类似于队列 -
lpop/rpop
lpop从头开始弹出 rpop从尾开始弹出 -
lindex
-
llen
-
lrem key n删除n个value
-
ltrm key startindex endindex从开始index到结束index 截取指定范围内的值 再赋给key
-
rpoplpush list1 list2 从list1底部取出一个数 从头压入list2
-
lset key index value 设置key 中index下标的值
-
linsert key before /after v1 v2… 将v2插入到v1前/后
Set
-
sadd/smembers/sismember
-
scard/srem key value
-
srandmember key随机出几个数 / spop key随机出栈
-
smove key1 key2 在key1中的一个值 :作用是将key1中的值赋给key2
-
sdiff差集/sinter交集/sunion并集
ZSet
在set基础上加了一个score 的值
set k1 v1 v2 v3
zset k1 score1 v1 score2 v2 score3 v3
-
zadd/zrange
-
zrangebyscore key 从开始score 结束score (不包含 limit 截取
-
zrem key 某一个score对应的value值,
-
zcard / zcount key score区间/zrank key values 获取下标值/zscore key 对应值 ,获得分数
-
zrevrank key value ,逆序获得下标
-
zrevrange
-
zrevrangebyscore key
解析配置文件
Redis 持久化
RDB :Redis DataBase
- RDB:是什么
RDB保存的是dump.rdb文件 - Fork
- 配置位置
snapshot
save flushAll 都会马上备份
stop-writes-on-bgsave-error
rdbcompression
- 如何触发RDB快照
- 如何恢复
- 优势
- 劣势
- 如何停止
- 总结
AOF : Append Only File
- 是什么
保存appendonly.aof - 配置
- AOF启动/修复/恢复
- Rewrite
- 优势劣势
- 总结
总结
Redis事务
是什么
常用命令
- DISCARD 取消事务
- EXEC 执行事务块所有命令
- MULTI 标记一个事务的开始
- UNWATCH 取消WATCH命令对所有key 的监视
- WATCH KEY KEY 监听一个或多个key ,如果在事务执行之前这个key被其他命令改动,那么事务会被打断
正常执行
放弃事务
全体连坐(编译出错)
冤头债主(运行出错)
watch监控
悲观锁
乐观锁
事务内
事务外
一旦执行exec watch会被取消
小结
Redis的主从复制
概念
一主二仆
主机写 从机读
主机关闭后 从机不变
从机关闭后再启动 需要重新连接(除非写进配置文件)
薪火相传
79<–80<–81
反客为主
79主机关闭 80SLAVEOF no one
80<—81
复制原理
哨兵模式(反客为主的自动化)
缺点