Redis简介

Remote Dictionary server (redis)是一个key-value的存储系统

redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存可持久化的
日志型、key-value数据库,并提供多种语言的API,它通常被称为数据结构服务器,因为value
可以是String,哈希(map),列表(list),集合(sets)和有序集合(sorted sets)等类型

redis相比其他key-value缓存产品的三大特点:
redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启的时候可以再次加载进行使用
redis不仅仅支持简单的key-value类型的数据,同时提供list,set,zset,hash等数据结构的存储
redis支持数据的备份,即master-slave模式的数据备份

redis的优势:
性能极高-redis能读的速度是110000次/s,写的速度是81000次/s
丰富的数据类型-redis支持二进制案例的String,lists,hashes,sets及ordered sets数据类型操作
原子-redis的所有操作都是原子性的,意思就是要么成功执行要么失败完成不执行,单个操作是原子性的,
多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来
丰富的特性-redis还支持publish/subscribe(发布/订阅),通知,key过期等等特性

redis与其他key-value存储有什么不同:
redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据的进化路径,
redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象

redis运行在内存中但是可以持久化到磁盘,所以在对不同数据进行高速读写时需要权衡内存,因为
数据量不能大于硬件内存。在内存数据库方面的另一优点是,相比在磁盘上相同的复杂的数据结构,
在内存中操作起来非常简单,这样redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面
他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

(补充:
ANSC C语言:C语言的标准版

BSD协议:伯克利银行发行版
当你为你的产品签发许可,你是在让出自己的权利,不过,你仍然拥有版权和专利,许可的目的
是,向使用你产品的人提供一定的权限
不管产品是免费向公众分发,还是出售,制定一份许可协议非常有用,否则,对于前者,你相当于
放弃了自己所有的权利,任何人都没有义务表明你的原始作者身份,对于后者,你将不得不花费比
开发更多的经理用来逐个处理用户的授权问题。

API:(application programming interface)应用程序编程接口,是一些预定义的函数,目的是提供
程序与开发某软件或硬件得以范文一组例程的能力,而又无需访问源码,或理解内部工作机制的细节

有序集合:集合里的元素可以根据key或index访问
无序集合:集合里的元素只能遍历
有序集合在属性的增加,删除及修改中拥有较好的性能表现
无序集:set
有序集:list map

redis的数据存储:
redis中的数据保存到内存中,但是它会定期的把数据写到硬盘中

redis保存数据有两种方式:
1.快照模式
定时快照:即按一定时间将内存中的数据保存到磁盘中
定量快照:即数据变化一定次数后将数据保存到磁盘中
2.写模式:
这种模式下redis会把所有修改数据的命令等保存到一个只能追加的ASAP文件中,当redis重启时,它会把这个文件里的命令重新执行一遍

redis数据的存储位置:
数据是保存到一个数据文件中,具体文件名要看redis的配置文件,即redis.conf

数据如何导出:
redis写数据时先写到一个temp文件中,然后再把temp文件重命名为预定义的文件,所以即使redis在运行,也可用
cp命令拷贝这个文件

redis数据的备份机制:
redis有两种持久化的方式
1.RDB:
一种常见的方式,采用写时复制的方式,效率高,速度快
流程:
当redis需要保存dump.rdb文件时,服务器执行以下操作:
·redis调用fork(),同时拥有父进程和子进程
·子进程将数据集写入到一个临时RDB文件中
·当子进程完成对新RDB文件的写入时,redis用新RDB文件替换原来的RDB文件,并删除旧的RDB文件
缺点:
这种机制使得RDB的速度非常得快,但是存在一些安全性问题,当我的redis服务因为某种原因宕机了
或者当内存新增数据很庞大,子进程需要几分钟才能将临时文件书写完毕的时候,那么宕机之后,这几分钟的数据很可能丢失
,所以考虑到安全性问题,建议使用AOF机制
2.AOF:
AOF采用一种fsync(此函数同步内存中多有修改的文件数据到存储设备)的方式进行持久化,相比RDB的方式会慢,但是相对安全,甚至可以说是
绝对安全,取决于具体的配置。它不需要子进程的协助,他是一种将有关写的命令append到文件的范式来记录redis的状态方式。aof也可以分
为三种方式进行append,在此之前先打开appendonly的开关为yes
appendfsync always:每次向内存中执行写操作的时候,都执行一次fsync,相当安全,建议数据量不大的时候,又想保证数据安全性的情况下使用
appendfsync everysec:每秒进行一次fsync
appendfsync no:不建议使用

我这里例举一下redis>2.2的由RDB切换到AOF的方式

1 [root@localhost redis-2.8.9]# redis-cli
2 127.0.0.1:6379> config set appendonly yes
3 OK
4 127.0.0.1:6379> config set save “”
5 OK
6 127.0.0.1:6379>

redis-cli进入redisShell客户端,然后开启aof ,关闭RDB方式。

记得修改 redis.conf里面的配置,不然下次重启还是使用原来的配置,读取dump.rdb进行恢复

配置修改如下:

#save “” save “”

save 900 1 #save 900 1
save 300 10 ------------------> #save 300 10
save 60 10000 #save 60 10000

appendonly no ---------------------> appendonly yes

备份文件的两种方式:
一、RDB备份方式:
1.执行save命令,找到dump.rdb(默认放到执行命令(redis-server)的路径下)
2.执行redis-server redis.conf(如果配置文件选择的是RDB备份方式)
启动之后就OK
二、AOF备份方式:
1.找到appendonly.aof(默认放到执行命令(redis-server)的路径下)
2.执行redis-server redis.conf就可以了(如果配置文件选择的是AOF备份方式)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尚硅谷Redis7脑图总结了Redis分布式缓存相关的知识点,该脑图共包含六个主要模块:Redis简介Redis基础命令、Redis高级命令、Redis持久化、Redis主从复制和Redis哨兵集群。 在Redis简介部分,脑图首先介绍了Redis的特点和适用场景,如高性能、支持丰富的数据结构以及适用于高并发、大规模数据的存储和缓存场景。接着介绍了Redis的数据结构,包括字符串、哈希、列表、集合和有序集合,并配以相应的基础命令。 在Redis基础命令模块中,详细列出了常用的基础命令,如字符串操作、哈希操作、列表操作、集合操作和有序集合操作,并给出了示例和使用场景。 在Redis高级命令模块中,介绍了一些高级的命令,如事务、流水线、发布订阅和Lua脚本。这些命令可以进一步提升Redis的性能和功能,满足更多场景的需求。 在Redis持久化模块中,介绍了RDB和AOF两种持久化方式的原理和使用方法,并讲解了它们的优缺点以及如何选择适合的持久化方式。 在Redis主从复制模块中,详细介绍了主从复制的原理和实现过程,并介绍了复制的配置和相关命令。 在Redis哨兵集群模块中,介绍了Redis哨兵的作用和原理,以及如何搭建和管理Redis哨兵集群。这一模块进一步保证了Redis的高可用性和容灾能力。 总的来说,尚硅谷Redis7脑图全面而详细地介绍了Redis的相关知识点,对于学习和使用Redis来说是一份非常有用的资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值