redis详解

1.什么是redis?
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value(JAVA 中的 map 就是 key=>value 存储的。键 => 值(key=>value)对,键唯一,对应一个值,值的形式多样。)的一个数据库。
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再 次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份
2.redis用来干什?
一般用来做redis缓存,为什么要用缓存呢,举个例子,假如系统中有2千万用户信息,用户信息基本固定,一旦录入很少变动,
那么你每次加载所有用户信息时,如果都要请求数据库,数据库编译并执行你的查询语句,这样效率就会低下很多,针对这种信息不经常变动并且数据量
较大的情况,通常做法,就是把他加入缓存,每次取数前先去判断,如果缓存不为空,那么就从缓存取值,如果为空,再去请求数据库,并将数据加入缓存,这样大大提高系统访问效率
3.redis为什么会比mysql快呢,一般在哪做缓存?
Redis是纯内存操作,,读写肯定比网硬盘快的多;
Redis是单线程,从而避开了多线程中上下文频繁切换的操作。
Redis数据结构简单、对数据的操作也比较简单
使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求
使用多路I/O复用模型,非阻塞I/O
4.既然redis是纯内存操作,那么它可以做持久化吗?,有几种方式?
redis 当然可以做持久化操作:
RDB:在指定的时间间隔能对你的数据进行快照存储。
AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。
持久化配置:

              RDB
              # 时间策略
				save 900 1   // 表示900s内如果有1条是写入命令,就触发产生一次快照,可以理解为就进行一次备份
				save 300 10  // 表示300s内有10条写入,就产生快照
				save 60 10000
				
				# 文件名称
				dbfilename dump.rdb
				
				# 文件保存路径
				dir /home/work/app/redis/data/
				
				# 如果持久化出错,主进程是否停止写入
				stop-writes-on-bgsave-error yes
				
				# 是否压缩
				rdbcompression yes
				
				# 导入时是否检查
				rdbchecksum yes

		
           AOF的配置:
						               # 是否开启aof
						appendonly yes
						
						# 文件名称
						appendfilename "appendonly.aof"
						
						# 同步方式
						appendfsync everysec
						
						# aof重写期间是否同步
						no-appendfsync-on-rewrite no
						
						# 重写触发配置
						auto-aof-rewrite-percentage 100
						auto-aof-rewrite-min-size 64mb
						
						# 加载aof时如果有错如何处理
						aof-load-truncated yes
						
						# 文件重写策略
						aof-rewrite-incremental-fsync yes

				appendfsync everysec 它有三种模式:

			always:把每个写命令都立即同步到aof,很慢,但是很安全
			everysec:每秒同步一次,是折中方案
			no:redis不处理交给OS来处理,非常快,但是也最不安全
			
			一般情况下都采用 everysec 配置,这样可以兼顾速度与安全,最多损失1s的数据。
			aof-load-truncated yes 如果该配置启用,在加载时发现aof尾部不正确是,会向客户端写入一个log,但是会继续执行,如果设置为 no ,发现错误就会停止,必须修复后才能重新加载。

5.如何从持久化中恢复数据呢?有RDB文件,又有AOF文件,该加载谁呢?
如果想要从这些文件中恢复数据,只需要重新启动Redis即可。
启动时会先检查AOF文件是否存在,如果不存在就尝试加载RDB,因为AOF保存的数据更完整,通过上面的分析我们知道AOF基本上最多损失1s的数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值