前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《快学BigData》--Redis 总结(F)(31)

《快学BigData》--Redis 总结(F)(31)

作者头像
小徐
发布2023-03-06 21:17:00
2600
发布2023-03-06 21:17:00
举报
文章被收录于专栏:GreenplumGreenplum

RedisStudio客户端连接工具

链接:http://pan.baidu.com/s/1gf9dknp 密码:hfyd 如果无法下载请联系作者。

里面包含两个工具,一个安装版的一部免安装版的,建议使用免安装版的,简单,界面清洁,界面如下

Redis 持久化储存机制

虽然是内存数据库,一般来说为了保险起见,还是会有一些持久化的机制,Redis 采用了其中两种方式,一是 RDB(Redis DataBase),也就是存数据,另一种是 AOF(Append Only File),也就是存操作。当然,即使是 Redis 本身提供的,我们也可以选择用还是不用,如果两种都不用的化,Redis 就和 memcache 差不多了。

1-1)、定时快照方式(RDB)

RDB 方式,是将 redis 某一时刻的数据持久化到磁盘中,是一种快照式的持久化方法。

Redis 在进行数据持久化的过程中,会先将数据写入到一个临时文件中,待持久化过程都结束了,才会用这个临时文件替换上次持久化好的文件。正是这种特性,让我们可以随时来进行备份,因为快照文件总是完整可用的。

对于 RDB 方式,redis 会单独创建(fork)一个子进程来进行持久化,而主进程是不会进行任何IO操作的,这样就确保了redis极高的性能。

如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那 RDB 方式要比 AOF 方式更加的高效。

虽然 RDB 有不少优点,但它的缺点也是不容忽视的。如果你对数据的完整性非常敏感,那么 RDB 方式就不太适合你,因为即使你每 5 分钟都持久化一次,当 redis 故障时,仍然会有近 5 分钟的数据丢失。所以,redis 还提供了另一种持久化方式,那就是 AOF。

1-2)、基于语句追加文件的方式(AOF)

AOF(Append Only File)方式实际类似 mysql 基于语句的 binlog 方式,即每条会使 Redis 内存数据发生改变的命令都会追加到一个 log 文件中,也就是说这个 log 文件就是 Redis 的持久化数据。

aof 的方式的主要缺点是追加 log 文件可能导致体积过大,当系统重启恢复数据时如果是 aof 的方式则加载数据会非常慢,几十G的数据可能需要几小时才能加载完,当然这个耗时并不是因为磁盘文件读取速度慢,而是由于读取的所有命令都要在内存中执行一遍。另外由于每条命令都要写 log,所以使用 AOF的方式,Redis 的读写性能也会有所下降。

1-3)、虚拟内存(vm)

diskstore 方式是作者放弃了虚拟内存方式后选择的一种新的实现方式,也就是传统的 B-tree 的方式,目前仍在实验阶段,后续是否可用我们可以拭目以待。

1-4)、Diskstore 方式

diskstore 方式是作者放弃了虚拟内存方式后选择的一种新的实现方式,也就是传统的 B-tree 的方式,目前仍在实验阶段,后续是否可用我们可以拭目以待。

Redis 事物的处理

在数据库中能确保数据不丢失的就是事务的设置,应该把状态恢复到之前的执行该整体之前的状态,Redis的事务包括MULTI,EXCE,DISCARD,WARCH这是个事务

MULTI:用来组装一个事务

EXCE:用来执行一个事务

DISCARD:用来取消一个事务

WARCH:用来监视一些KEY,一旦这些KEY在事务之前被改变,则取消事务的执行。

1-1)、MULTI事务的使用

127.0.0.1:6379> set oneId 1

OK

127.0.0.1:6379> MULTI

OK

127.0.0.1:6379> INCR oneId

QUEUED

127.0.0.1:6379> INCR oneId

QUEUED

127.0.0.1:6379> ping

QUEUED

127.0.0.1:6379> ping

QUEUED

127.0.0.1:6379> exec

1) (integer) 3

2) (integer) 4

3) PONG

4) PONG

127.0.0.1:6379> INCR oneId

(integer) 5

在以上的例子中可以看出当执行MULTI命令后会开启队列的事务,再有数据进入时则会把数据放入到队列中,当执行EXCE是,会把所有的数据进行提交。

对于事务的执行来说,如果Redis开启了AOF持久化的话,那么一旦事务执行成功,事务中的命令就会通过write命令一次性把数据写入到磁盘,如果再想磁盘写入的过成功出现断电,硬盘事故的情况下那么就会出现部分的文件被AOF持久化了,这是AOF就会存在不完整的情况,这时我们可以使用redis-check-aof工具来进行修复这一问题,这个工具可以把不完整的数据进行移除,以确保AOF文件的完整性。

1-2)、WATCH 事务的使用

127.0.0.1:6379> set username xiaozhang

OK

127.0.0.1:6379> WATCH username

OK

127.0.0.1:6379> set username xiaowang

OK

127.0.0.1:6379> MULTI

OK

127.0.0.1:6379> set username xiaoxiao

QUEUED

127.0.0.1:6379> get username

QUEUED

127.0.0.1:6379> EXEC

(nil)

WATCH可以实现乐观锁的效果,即是CAS(check and set )。WACTH 本身就是监听KEY值的变化,也可以监听多个KEY的值的变化的情况,如果没有触发事务,那么WACTH也会认真的去工作,一旦发现KEY被修改了,在执行EXEC时就会返回NIL,表示事务无法触发。

在执行EXEC之前被改变了,可以任务这个数据是脏数据,对于以后的操作就没有意义了,所以就不会去执行了。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-13,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 河马coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RedisStudio客户端连接工具
  • Redis 持久化储存机制
    • 1-1)、定时快照方式(RDB)
      • 1-2)、基于语句追加文件的方式(AOF)
        • 1-3)、虚拟内存(vm)
          • 1-4)、Diskstore 方式
          • Redis 事物的处理
            • 1-1)、MULTI事务的使用
              • 1-2)、WATCH 事务的使用
              相关产品与服务
              云数据库 Redis
              腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
              http://www.vxiaotou.com