数据库应⽤——Redis详解                                                                                    Redis详解
⼀、⾮关系型数据库简介
1、NoSQL(NoSQL=NotOnlySQL),意思是“不仅仅是 SQL”,是⾮关系型数据库的总称
2、为什么需要NoSQL
redis支持的五种数据类型(1)High performance:⾼并发读写
(2)Huge Storage:海量数据的⾼效率存储和访问
(3)High Scalability && High Availability:⾼可扩展性和⾼可⽤性
3、NoSQL数据库的四⼤分类
(1)键值存储(key-value)
(2)列存储
(3)⽂档数据库
(4)图形数据库
⼆、Redis概述
1、⽤C语⾔编写的,⾼性能key-walue键值对数据库
2、⽀持键值数据类型:
(1)字符串类型:string
(2)散列类型:hash
(3)列表类型:list
(4)集合类型:set
(5)有序集合类型:zset
3、应⽤场景
(1)缓存
(2)任务队列(秒杀抢购等)
(3)⽹站访问统计
(4)数据过期处理(可精确到毫秒)
(5)应⽤排⾏榜
(6)分布式集架构中的session分离
三、Redis安装
1、编译:make
2、安装:make PREFIX=/usr/local/redis install
3、交互式安装脚本:/安装包/utils/install_server.sh
需输⼊redis_server⽬录:/usr/local/redis/bin/redis_server
4、bin⽂件
(1)Redis-benchmark:性能测试⼯具,可以在⾃⼰本地运⾏,看看⾃⼰本地性能如何(服务启动起来后执⾏)
(2)Redis-check-aof:修复有问题的AOF⽂件,持久化
(3)redis-check-rdb:修复有问题的dump.rdb⽂件
(4)Redis-sentinel:Redis集使⽤,哨兵
(5)redis-server:Redis服务器启动命令
(6)redis-cli:客户端,操作⼊⼝
四、Redis基本操作
1、连接
redis-cli -h 127.0.0.1 -p 6379 -a password
2、查看命令的帮助
help
3、数据库常⽤命令操作
(1)set:存放数据
(2)keys:获取符合规则的键值列表
(3)exists:判断键值是否存在
exists key:确认⼀个key是否存在
(4)type:获取 key 对应的 value 值类型
(5)rename:对已有 key 进⾏重命名(强制覆盖)
(6)renamenx:对已有 key 进⾏重命名,并检测新名是否存在。
(7)dbsize:查看当前数据库中 key 的数⽬
(8)set key value:设置key和value
(9)get key:获取key的value
(10)del key:删除⼀个key
(11)type key:返回值的类
(12)keys pattern:返回满⾜给定pattern的所有key
(13)random key:随机返回key空间的⼀个key
(14)rename oldname newname:重命名
(15)select index:选择第0~15中的库
(16)move key dbindex:移动当前数据库中的key到dbindex数据库
(17)FLUSHDB:清除当前库数据(危险命令)
(18)FLUSHALL:清除所有库数据(危险命令)
五、Redis事务
1、事务简介
事务提供了⼀种将多个命令请求打包,然后⼀次性、按顺序地执⾏多个命令的机制,并且在事务执⾏期间,服务器不会中断事务⽽去执⾏其他客户端命令。可以⼀次执⾏多个命令,本质是⼀组命令的集合。
2、Redis事务特点
(1)事务中的命令序列执⾏的时候是原⼦性的,也就是说,其不会被其他客户端的命令中断. 这和传统
的数据库的事务的属性是类似的.
(2)Redis事务中的命令序列是原⼦执⾏的, 但是事务中的命令序列执⾏可以部分成功,
(3)不⽀持传统数据库中的回滚操作
(4)redis事务只保证讲命令序列中操作的结果提交到内存中,不⼀定永久保存,但传统关系型数据库事务完成,数据永久存储
3、事务创建
(1)multi:事务开始
(2)exec:提交事务
(3)discard:结束事务
(4)watch:执⾏乐观锁(2.2版本以上)
(5)unwatch:取消乐观锁
4、事务实例
5、错误处理
(1)⼊队错误
如果⼀个事务在⼊队命令的过程中,出现了命令不存在,或者命令的格式不正确等情况⼊列时错误,会终⽌整个事务
(2)执⾏错误
执⾏错误通常都是⼀些不能在⼊队时被服务器发现的错误, 这些错误只会在命令实际执⾏时被触发。即使在事务的执⾏过程中发⽣了错误, 服务器也不会中断事务的执⾏, 它会继续执⾏事务中余下的其他命令, 并且已执⾏的命令(包括执⾏命令所产⽣的结果)不会被出错的命令影响
六、Redis数据持久化
1、持久化使⽤⽅式
(1)RDB持久化
在指定时间间隔内将内存中的数据集快照写⼊指定磁盘
(2)AOF持久化
将以⽇志形式记录服务器的每个操作,在启动时会读取该⽂件来写⼊数据库
(3)⽆持久化
仅做缓存服务器使⽤
(4)同时使⽤RDB和AOF
2、RDB持久化
(1)优势
①只包含⼀个⽂件,对于压缩备份来说很容易
②性能最⼤化
③如果数据集很⼤,启动效率会更⾼
(2)劣势
①定时写⼊机制有更⼤的数据丢失风险
②由于 RDB 是通过 fork ⼦进程来协助完成数据持久化⼯作的,因此当数据集较⼤时,可 能会导致整个服务器停⽌服务⼏百毫秒,甚⾄是
1 秒钟
(3)配置
①save 900 1:每900秒⾄少⼀个变化
②save 300 10:每300秒⾄少10个变化
③sanve 60 10000:每60秒⾄少10000个变化
④dbfilename dump.rdb:保存的⽂件名
⑤dir ./:保存路径
⑥rdbcompression yes:是否压缩
⑦rdbchecksum yes:导⼊时是否检查
⑧stop-writes-on-bgsave-error yes:⼊股持久化出错,主进程是否停⽌写⼊
(4)⼿动持久化
①save:会阻塞当前Redis服务器,直到持久化完成,线上应该禁⽌使⽤
②bgsave:该触发⽅式会fork⼀个⼦进程,由⼦进程负责持久化过程,因此阻塞只会发⽣在fork⼦进程的时候
3、AOF持久化
(1)优势
①更⾼的数据安全性
总共3种同步策略:每秒同步、每次修改同步和不同步
②采⽤追加⽅式写⼊⽇志⽂件,写⼊过程宕机不会导致之前数据出问题,redis-check-aof⼯具来解决数据⼀致性的问题
③如果⽇志过⼤,Redis 可以⾃动启⽤ rewrite 机制
④包含格式清晰已于理解的⽇志⽂件⽤于记录所有操作,也可根据该⽂件完成数据重建
(2)劣势
①对于相同数量的数据集⽽⾔,AOF ⽂件通常要⼤于 RDB ⽂件
②AOF机制 每次发⽣的数据变化都会被⽴即记录到磁盘中,这种⽅式在效率上是最低的
③恢复⼤数据集时,速度较低
(3)配置
①appendonly yes:是否开启AOF
②appendfilename "appendonly.aof":默认⽂件名
③appendfsync everysec:每秒同步
④appendfsync always:每条命令同步
⑤appendfsync no:不处理

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。