redis 五大类型 、持久化方式以及主从(哨兵模式)

一、redis 五大类型:

redis 键
  keys *
  exists key的名字,判断某个key 是否存在
  move key db 当前数据库就没有了,被移除了
  ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
  type key 看看你的key是什么类型
redis 字符串
  set、get 、del、append、strlen
  incr、decr 、incrby、 decrby
  getrange、setrange
  setex(set with expire)键秒值、setnx(set if not exist)
  mset、 mget 、msetnx
redis list
  lpush、rpush、 lrange
  lpop、rpop
  lindex 按照索引下标获得元素 llen
  lrem key 删n个value
  ltrim key 开始index 结束index 截取指定范围的值后在赋值给key
  rpoplpush 源列表 目的列表
  lset key index value
  linsert key before/after 值1 值2
redis set
  sadd、smembers、 sismember
  scard 获取集合里面的元素个数
  srem key value 删除集合中元素
  srandmember key 某个整数(随机出几个数)
  spop key 随机出栈
  smove key1 key2 在key1里某个值 作用:将key1里面的某个值 赋值给key2
  数字集合类:差集 sdiff ;交集 sinter ; 并集 sunion
redis zset

在set的基础上,加一个score值 之前set是k1 v1 v2 现在zset是k1 score1 v1 score2 v2
  zadd、zrange(withscores)
  zrangebyscore key 开始score 结束score
  zrem key 某score下对应的value值 作用:删除元素
  zcard、zcount key score区间、zrank key values值 作用:获得下标值、
  zscore key 对应值,获得分
  zrevrank key values值,作用是逆序获得下标值
  zrevrange
  zrevrangebyscore key 结束score 开始score
redis hash
  hset、hget 、hmset、hmget 、hgetall、hdel
  hlen
  hexists key 在key里面的某个值的key
  hkeys、hvals
  hincrby 、hincrbyfloat
  hsetnx

二、redis 持久化
rdb redis database
aof append only file
共存时,先加载aof,后加载rdb

rdb讲解:

rdb : 在指定的时间间隔内将内存中的数据集写入磁盘,也就是snapshot快照,(rdbsave)
快照恢复是将快照文件直接读到内存里(rdbload)

  save 秒钟 写操作次数
  触发条件:1分钟内改了1万次;
  5分钟内改了10次
  15分钟内改了1次
  单个save或者bgsave命令 直接备份
    save时 只管保存,其他不管,全部阻塞
    bgsave:redis会在后台异步进行快照操作,快照同时还可以响应客户端请求,可以通过
    lastsave命令获取最后一次成功执行快照的时间

如何恢复: 将备份文件移动到redis安装目录并启动服务(config get dir 获取目录)

优势:适合大规模的数据恢复,对数据的完整性和一致性要求不高
劣势:在一定间隔时间做一次备份,所以redis意外down掉的话,就会丢失最后一次快照后的 所有修改;

      fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑
如何停止: 动态所有停止rdb保存规则的方法:redis-cli config set save " "

aof讲解:

aof:解决rdb最后一次数据丢失问题
以日志的形式来记录每个写操作,将redis执行过得所有写指令记录下来(读操作不记录)
只允许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之, redis重启的话就根据日志文件的内容将指令从前到后执行一次以完成数据的恢复工作

aof 保存的是appendonly.aof文件
配置:appendonly 、appendfilename、
   appendfsync包括三个策略:Always:同步持久化,每次发生数据变更会被立即记录到磁盘 性能较差但数据完整性比较好
                 everysec:出厂默认推荐,异步操作,每秒记录。如果一秒内 宕机,有数据丢失
                 No
   No-appendfsync-on-rewrite:重写时是否可以运用appendfsync,用默认no即可,保证数 据的安全性
   Auto-aof-rewrite-min-size:设置重写的基准值
   Auto-aof-rewrite-percentage:设置重写的百分比

aof启动、修复、恢复
正常恢复: 启动:设置yes,将有数据的aof文件复制一份保存到对应安装目录
     恢复:重启redis然后重新加载
异常恢复:启动:设置yes,备份被写坏的aof文件
     修复:redis-check-aof --fix进行修复
     恢复:重启redis然后重新加载

rewrite:

   aof采用文件追加方式,文件会越来越大为避免出现此种情况,增加了重写机制,当aof文件的大小超过所设定的阙值时,redis就会启动aof文件的内容压缩,只保留可以恢复数据的最小指令集,可以使用命令bgrewriteaof

重写原理:

   aof文件持续增长而过大时,会fork处一条新进程来将文件重写(也是先写临时文 件最后再rename),遍历新进程的内存中数据,每条记录有一条set语句。重写 aof文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令 的方式重写一个新的aof文件,和快照有点类似
触发机制:redis会记录上次重写时的aof大小,默认配置是当aof文件大小是上次rewrite后大 小的一倍且文件大小是64MB

优势:灵活的配置
劣势:相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb;aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同

which one
  rdb持久化方式能够在指定的时间间隔能对你的数据进行快照存储
  aof持久化方式记录每次对服务器的写的操作,当服务器重启的时候会执行这些命令来恢复原 始的数据,aof命令以redis协议追加保存每次写的操作到文件末尾,redis还能对aof文件进行 后台重写,使得aof文件的体积不至于过大。

只做缓存:两种都可以不使用

同时开启两种持久化方式:

  这种情况下,redis重启的时候会优先载入aof文件来恢复原始数据,因为在通常情况下aof文件保存的数据集要比rdb文件保存的数据集 要完整。
rdb的数据不实时,同时使用两者时服务器重启也只会找aof文件,那 要不要只使用aof文件?建议不要,因为rdb更适合于备份数据库( aof在不断变化不好备份)两手准备

三、集群

redis 主从复制,读写分离 info replication 查看角色
1配(库)从不配主(库)
2从库配置:slaveof 主库ip 主库端口号(每次与master断开之后,都需要重新连接,除非你 配置进redis.conf文件)
3修改配置文件细节操作:拷贝多个redis.conf文件
  开启daemonize yes
  pid文件名字
  指定端口
  log文件名字
  dump.rdb名字
4 常用三招:4.1 一主二仆
4.2薪火相传(去中心化,解决主机负担):

  上一个slave可以是下一个slave的 master,slave同样可以接受其他salves的连接和同步请求,那 么该slave作为了链条中下一个的master,可以有效减轻master的 的写压力
中途变更转向:会清除之前的数据,重新建立拷贝最新的 。slaveof 新主库ip 新主库端口号

4.3反客为主:slaveof no one 使当前数据库停止与其他数据库的同步,转成主库

复制原理:

  slave启动成功连接到master后会发送一个sync命令,master接到命令启动后台的存盘进程,同时收集所有接受到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。
全量赋值 增量复制 但只要重连master们就会产生一次完全同步,即全量赋值

哨兵模式:反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

怎么搭建:

配置文件目录下建立sentinel.conf文件,名字决不能错;
配置哨兵,填写内容;
  如:sentinel monitor 被监控的数据库名字(自定义)127.0.0.1 1
  上面最后一个数字1,标示主机挂掉后slave投票看让谁接替成为主机,得票数多少后成为主机
启动哨兵:redis-sentinel sentinel.conf
     windows下启动哨兵服务redis-server.exe sentinel.conf --sentinel
原有的master挂了 投票新选
重新主从继续开工,info replication 查看
如果之前挂了的master重启回来 会变成新master的salve

一组sentinel能同时监控多个master

复制缺点:复制延时

原文地址:https://www.cnblogs.com/GtShare/p/9547306.html

时间: 2024-10-10 16:50:19

redis 五大类型 、持久化方式以及主从(哨兵模式)的相关文章

Redis两种持久化方式(RDB&AOF)

爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Redis并发锁 windows下redis基础操作与主从复制 从而 数据备份和读写分离 Redis两种持久化方式(RDB&AOF) Redis的持久化过程中并不需要我们开发人员过多的参与,我们要做的是什么呢?除了深入了解RDB和AOF的作用原理,剩下的就是根据实际情况来制定合适的策略了,再复杂一点,也就

redis主从+哨兵模式

主从模式配置分为手动和配置文件两种方式进行配置,我现在有192.168.238.128(CentOS1).192.168.238.131(CentOS3).192.168.238.132(CentOS4)几台机器,只是配置文件的配置方式是降手动配置的命令放在配置文件中而已,本质是一致的.下面将对配置文件方式进行配置,我所述的案例,是基于我自己的另一篇博文<Redis的安装.服务配置>之上: 1.我将CentOS4作为主数据库,其他 模拟为从数据库 2.将CentOS1目录切换到/etc/red

redis五大类型用法

Redis五大类型:字符串(String).哈希/散列/字典(Hash).列表(List).集合(Set).有序集合(sorted set)五种Controller:@Resource RedisTemplate<String, String> redisTemplate;总括:redisTemplate.opsForValue();//操作字符串redisTemplate.opsForHash();//操作hashredisTemplate.opsForList();//操作listredi

Redis的多种持久化方式总结

话题:Redis的多种持久化方式: Redis是个支持持久化的内存数据库,redis需要经常将内存中的数据同步到磁盘来保证持久化. 1.RDB方式(Snapshotting默认快照方式): 1.1)配置: save 900 1       #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照. save 300 10      #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照. save 60 10000    #在60秒(1分钟)之后,如

浅谈小白如何读懂Redis高速缓存与持久化并存及主从高可用集群

一.简介 Redis是一个基于键值(K-V)的高速缓存软件,和他具有相同功能的软件有memcached,但其支持更为复杂的数据结构,例如:List,set,sorted set,同时redis具有持久性功能.redis究竟是什么?对于不同的应用场合,对redis的理解也不相同,如下有三种不同的理解. ①key value store(键值存储),是一个以键值形式存储的数据库,用来作为唯一的存储系统,同时借助于sentinel实现一定意义上的高可用. ②memory cached(内存缓存),是一

redis两种持久化方式的优缺点

redis两种持久化的方式 RDB持久化可以在指定的时间间隔内生成数据集的时间点快照 AOF持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,AOF文件中全部以redis协议的格式来保存,新命令会被追加到文件的末尾,redis还可以在后台对AOF文件进行重写,文件的体积不会超出保存数据集状态所需要的实际大小, redis还可以同时使用AOF持久化和RDB持久化,在这种情况下,当redis重启时,它会有限使用AOF文件来还原数据集,因为AOF文件保存的数据集

探究Redis两种持久化方式下的数据恢复

对长期奋战在一线的后端开发人员来说,都知道redis有两种持久化方式RDB和AOF,虽说大家都知道这两种方式大概运作方式,但想必有实操了解得不会太多. 这里是自己实操两种持久化方式的一点点记录. 先看以下摘录自redis官网原文解释(当然原文是English,这里用google翻译过了.) Redis持久性 Redis提供了不同的持久性选项范围: RDB持久性按指定的时间间隔执行数据集的时间点快照. AOF持久性会记录服务器接收的每个写入操作,这些操作将在服务器启动时再次播放,以重建原始数据集.

Redis:两种持久化方式RDB和Aof对比(3)

一.RDB快照 1.概念 默认的持久化方案. 在指定时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中. 在指定目录下生成一个dump.rdb文件. 重启会通过加载dump.rdp文件恢复数据. 2.对应配置参数 save <seconds> <changes> eg: save 900 1 save 300 10 save 60 10000 若不想用RDB方案,则为save "" # 时间策略save 900 1 save 300 10 save

redis 的一主二从三哨兵模式

概述 在部署redis 的时候,如果redis宕机,缓存将不可用,redis提供了哨兵模式保证redis实现高可用. 即一台主机两台从机,三台哨兵主机,如果主实例宕机,哨兵将将一台从机升级为主机.实现高可用. 配置方法 1.IP地址配置如下 主 127.0.0.1 6001 从 127.0.0.1 6002 从 127.0.0.1 6003 哨兵 127.0.0.1 16001 127.0.0.1 16002 127.0.0.1 16002 2.修改配置 将 redis.con 拷贝两份 red