Redis深入学习(一)

298 阅读2分钟

「这是我参与2022首次更文挑战的第22天,活动详情查看:2022首次更文挑战

一、数据结构类型

  • string ,set get ex
  • list :lpush lpop 用于消息队列
  • set :sadd、smenbers 一键多值,用于标签
  • zset : zadd user:rank score menber
    • zadd user:rank 1 james 21 kate 32 jack 46 frank 258 tom;` james获得1票,kate21票....
    • zrange user:rank james ---- 找到james的票数 --dict
    • zrange user:rank 0 10 --- 找到前10的人的名字
    • zrank user:rank james 返回它的排名
    • zscore user:rank james 返回它的分数值
    • zrange user:rank 0 10 with scores ---就是把前10的人票数和名字都列出来
  • hash:hset user:001 name huanghuo age 1 / hgetall user:001 / hget user:001 name

二、过期策略

最近最少使用原则LRU.、 深入

随机时间 -- 深入

设置的过期时间

永不过期

三、持久化

  • RDB

    他会fork一个进程,在指定时间内把内存的数据备份到dump.gdb文件中,再次启动的时候就会把读取日志到内存中。缺点就是无法实时化,进程占用内存比较大。主要用于大规模的数据恢复

  • AOF,二者可以同时存在,但是是先去读取AOF文件的

    以日志的形式记录每个写操作。

    缺点就是文件会很大。优点就是数据完整性高,当发生宕机的时候,可以用它来恢复数据就和mysql的redolog一个作用

四、事务

multi 开启事务、exec 执行事务、discard 回滚事务

redis是部分支持事务的,最后执行的时候,成功的就成功,失败的就失败

redis没有隔离性因为它是每个命令进入队列,最后一起执行的

五、主从复制(高可用)

slave of 本质是从库心跳线程不断去主库同步数据,通过RDB文件

  • 分为两种:全量复制(只在第一次的时候),增量复制

  • 先说两个参数:runid是每台机的id,用来标志他是否是第一次请求同步数据。offset:是主库和从库都有的参数,比如主库发送了N个字节的数据过来,那么主库和从库的offset就是N,在增量同步的时候会使用到。