redis(一)

文章目录[x]
  1. 0.1:Nosql特点
  2. 0.2:Nosql分类
  3. 0.3:redis基本知识
  4. 0.4:五种基本数据结构
  5. 0.5:三种特殊数据类型
  6. 0.6:redis实现乐观锁
  7. 0.7:redis持久化

Redis

Nosql特点

1、方便扩展(数据之间没有关系)

2、大数据量高性能(Redis一秒写入8万,读区11万,Nosql的缓存记录级,是一种细粒度 的缓存)

3、数据类型多样(不需要提前设计)

Nosql分类

键值类型:Key指向value的键值对,通常用hash table来实现

列存储数据库:以列簇存储,将同一列数据存在一起

文档型数据库:Key-Value对应的键值对,Value为结构化数据

图形数据库:图结构

redis基本知识

redis默认有16个数据库,默认使用第一个数据库,可以使用select [编号]来切换数据库

五种基本数据结构

1.String

2.List

3.Set

4.Hash

5.Zset

三种特殊数据类型

1.Geospatial

存储城市地理位置经纬度;

计算两个位置之间直线距离;

查找我(自己经纬度位置)附近的指定半径之内的附近的人;

2.Hyperloglog

3.Bitmap

redis实现乐观锁

使用watch监视实现乐观锁

  1. multi,开启redis的事物

  2. exec,提交事务执行从multi到此命令前到命令队列

  3. discard,取消事务,置客户端为非事物态

  4. watch,监视键值对,作用时,如果事务提交exec时发现监视的监视对发生变化,事务将被取消

Redis事务

Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端送来的命令请求打断。

Redis事务的作用就是串联多个命令防止别的命令插队。

事务的三个命令:

1.multi

2.exec

3.discard

组队当中的某一个命令失败,整个队列命令都会取消

组队没有失败,但是执行时候失败了,只有失败命令取消

redis事务三大特性

  • 单独的隔离操作

  • 没有隔离级别的概念

  • 不保证原子性操作

redis并发情况下连接超时可通过连接池解决

悲观锁和乐观锁

悲观锁:认为很悲观,每次去拿数据的时候都认为别人回修改,所以每次都会在拿数据的时候上锁,这样别人想拿数据的时候就会阻塞,直到她拿到锁。

在关系型数据库当中就用到了这种锁机制,如行锁,表锁等,读锁,写锁等,都是在操作之前先上锁

乐观锁:乐观锁是相对悲观锁而言的,乐观锁假设数据一般情况不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果冲突,则返回给用户异常信息,让用户决定如何去做。乐观锁适用于读多写少的场景,这样可以提高程序的吞吐量。

redis持久化

1.RDB

概念:在指定的时间间隔内将内存中的数据集快照写入磁盘

原理:redis会单独创建一个子线程进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结速了,再用这个临时文件替换上次持久化好的文件,整个过程中,主线程不用进行任何的IO操作,这就确保了极高的性能,如果需要大规模数据恢复,且对于数据的完整性不是很敏感,那么RDB方式要比AOF方式高效

缺点:最后一次持久化的数据可能会丢失

优点:

  • 适合大规模的数据恢复

  • 对完整性和一致性要求不高的

  • 节省磁盘空间

  • 恢复速度快

劣势:

  • fork时候,内存中数据被克隆了一份,所以需要二倍的内存空间需求

  • 虽容redis采用了写时拷贝技术,但是数据量大时候还是很费性能

  • 在备份周期的一定时间间隔内做一次备份,如果在这个时间间隔内redis退出,数据将会丢失

2.AOF

概念:

以日志的形式来记录每个写操作,不记录读操作,将redis执行过的所有指令记录下来,只许追加文件,不许改写文件,redis启动之初会读取文件重新构建数据

如果RDB和AOF同时开启,默认使用AOF恢复数据,因为AOF不会存在数据丢失

异常恢复

1.如果遇到AOF文件损坏,可以先停止redis

2.然后通过Redis-check-aof --fix appendonly.aof命令进行修复

3.然后重新启动即可

AOF同步频率设置

appendfsync always

始终进行同步,每次redis写入都会立刻计入日志,但是性能较差,完整性好

appendfsync everysec

每秒同步,每秒计入日志一次,如果宕机,本秒数据可能丢失

appendfsync no

redis不主动进行同步,把同步时机交给操作系统

重写追加操作

AOF采用文件追加方式,文件会越来越大,为了避免出现此操作,新增了重写机制,当AOF文件的大小超过所设定的阀值,redis就会启动AOF文件内容压缩,只保留可以恢复数据的最小指令集,

例如

set test 1
set test2 2

只记录最终结果set test 1 test2 2

优点

  • 备份机制更稳定,丢失数据概率更低

  • 可读的日志文件,通过操作AOF文件,可以处理误操作

劣势

  • 比起RDB占用更多对磁盘空间

  • 恢复备份速度慢

  • 每次读写都同步,需要一定压力

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像