您的当前位置:首页正文

985研一学习日记 - 2024.10.20

2024-11-10 来源:个人技术集锦

一个人内耗,说明他活在过去;一个人焦虑,说明他活在未来。只有当一个人平静时,他才活在现在。

日常

1、起床6:40

今天太困了,没起来,稍微休息一下吧,明天开始新的一周!

2、健身1h

今天休息休息,没咋练,练了个胸

3、LeetCode刷了3题

今天是LeetCode周赛,做了一下,只做了一个简单,两个中等都差一点点,还是太菜了,菜就多练

4、复盘

不复盘等于白学!!!

学习和感想

1、Redis学习

0. 课程介绍

  1. 面试题

1. Redis入门概述

Redis是基于内存K-V类型的数据库与MySQL配合使用,性能极好,支持数据持久化和分布式缓存,其数据存放在redis中,可以加快数据读写速度

  1. 是什么:基于内存的K-V类型数据库

    1. Redis:REmote Dictionary Server(远程字典服务器):遵守BSD协议的高性能K-V内存数据库
    2. 官网解释:高性能的K-V数据库,数据存在内存数据库
    3. Antirez
  2. 能干吗

    1. 与MySQL配合使用
      1. MySQL是基于硬盘传统数据库(RDBMS)关系,为了缓解MySQL的不足(并不是替换和竞争,而是共用和配合),引入了基于内存的K-V键值对(NoSQL类型)数据库Redis
      2. 分布式缓存(分布式保证一致性,在内存中缓存),可以将硬盘中的数据缓存到内存中
    2. 内存存储与持久化RDB(持久化文件)+AOF(实现文件)):支持将内存数据写到硬盘中
    3. Redis是分布式缓存,必须有高可用架构:单机、主从、哨兵、集群
    4. 缓存穿透、击穿、雪崩
    5. 分布式锁
    6. 队列和排行榜:list和set和zset数据类型
    7. 总体功能概述
  3. 优势

    1. 性能极高(内存缓存)
    2. 数据类型丰富:10中value的数据类型
    3. 持久化:将内存中缓存直接存储在硬盘中
    4. 数据备份:主从
    5. 四大优势
  4. 去哪下

    1. 官网:www.redis.io/.cn/.com.cn
    2. 在线网址:try.redis.io
    3. 命名参考:doc.redisfans.com
    4. 文档资料
  5. 怎么玩

    1. 学习主流和重点,其余去官网查
  6. 迭代演化和新特性

    1. 迭代演化

    2. 新特性

2. Redis安装配置

  1. 推荐安装在64位Linux服务器中
    1.使用getconf LONG_BIT查看自己服务器的位数
  2. Linux版安装
    Linux下安装前必须先具备gcc编译环境
    1. 安装步骤

      1. 编译后安装
      2. 备份后修改配置文件并重启redis,然后在redis.conf配置文件目录下使用redis-server启动redis
      3. 根据指定的密码连接redis,先启动后台服务器redis-server,再登录客户端redis-cli
      4. 使用quit退出redis-cli客户端
      5. 在redis内使用 shutdown关闭redis-server服务器,在外部使用下面命令

3. Redis10大数据类型

数据类型是value的类型key的类型都是String
数据类型是value的类型,key的类型都是String
数据类型是value的类型,key的类型都是String
命令不区分大小写,但key是区分大小写的
命令不区分大小写,但Key是区分大小写的
命令不区分大小写,但Key是区分大小写的
去官网查询操作数据类型的命令(commands
永远的帮助命令help @类型,可以查看指定数据类型的所有命令介绍

  1. 常用操作
    1. ttl key:查看剩余过期时间,以s返回
    2. pttl key:以ms返回
  2. 字符串(String)
    1. 介绍
      1. String字符串是redis最基本的数据类型
      2. key都是String类型且区分大小写,数据类型是value的类型
      3. 且是二进制安全的,可以包含任何数据(最多可以是512M)
    2. 常用操作
      1. set key value [键值] [返回值] [时间]

        1. SET指令不仅可以创建键值对,也可以更新键值对
        2. NX:当该键不存在时才创建(相当于初始化(只有第一次));XX:当该键以及存在时才会创建(相当于更新)
        3. GET:在添加之前先返回当前键的值,然后再添加
        4. EX、PX:设置当前键的存活时间,时间单位不同
        5. KEEPTTL:保留设置前指定键的生存时间否则每次设置修改指定键后都是永不过期
        6. 总结
      2. get key

        1. 获取指定键的值,不存在则返回nil
      3. 同时设置/获取多个键值 MSET / MGET

        1. MSET key value [key value key value...]
        2. MGET key [key key...]
        3. MSETNX key value [key value...]:必须整体全部生效,有一个不成功则全部不成功
      4. 获取指定区间范围内的值 SETRANGE / GETRANGE

        1. GETRANGE key start end:对指定的键的String数据进行切片,类似substring,左闭右闭,且 0 -1 是返回整个字符串
        2. SETRANGE key offset value:对指定键的String从offset开始设置value
      5. 数值增减 INCR / DECR

        1. 指定键的值一定要是数字才可以加减
      6. 获取字符串长度 STRLEN key

      7. 内容追加 APPEND key value

      8. 分布式锁 SETNX / SETEX key time value

        1. 使用 setnx 命令来创建分布式数据,此时只会同时存在一份,当用完之后使用 del 删除,此时才可以继续创建,这样就可以保证某个数据只可同时存在一份,实现分布式
        2. SETEX key time value:将set和expire(设置过期时间)两个命令合为一个原子操作,也可以set key value ex time 来实现
      9. GETSET:先get再set,和set key value get 一样

      10. 总结

显示全文