一个人内耗,说明他活在过去;一个人焦虑,说明他活在未来。只有当一个人平静时,他才活在现在。
日常
1、起床6:40
今天太困了,没起来,稍微休息一下吧,明天开始新的一周!
2、健身1h
今天休息休息,没咋练,练了个胸
3、LeetCode刷了3题
今天是LeetCode周赛,做了一下,只做了一个简单,两个中等都差一点点,还是太菜了,菜就多练
4、复盘
不复盘等于白学!!!
学习和感想
1、Redis学习
0. 课程介绍
- 面试题
1. Redis入门概述
Redis是基于内存的K-V类型的数据库,与MySQL配合使用,性能极好,支持数据持久化和分布式缓存,其数据存放在redis中,可以加快数据读写速度
-
是什么:基于内存的K-V类型数据库
- Redis:REmote Dictionary Server(远程字典服务器):遵守BSD协议的高性能K-V内存数据库
- 官网解释:高性能的K-V数据库,数据存在内存数据库中
- Antirez
-
能干吗
- 与MySQL配合使用
- MySQL是基于硬盘的传统数据库(RDBMS)关系,为了缓解MySQL的不足(并不是替换和竞争,而是共用和配合),引入了基于内存的K-V键值对(NoSQL类型)数据库Redis
- 分布式缓存(分布式保证一致性,在内存中缓存),可以将硬盘中的数据缓存到内存中
- 内存存储与持久化(RDB(持久化文件)+AOF(实现文件)):支持将内存数据写到硬盘中
- Redis是分布式缓存,必须有高可用架构:单机、主从、哨兵、集群
- 缓存穿透、击穿、雪崩
- 分布式锁
- 队列和排行榜:list和set和zset数据类型
- 总体功能概述
-
优势
- 性能极高(内存缓存)
- 数据类型丰富:10中value的数据类型
- 持久化:将内存中缓存直接存储在硬盘中
- 数据备份:主从
- 四大优势
-
去哪下
- 官网:www.redis.io/.cn/.com.cn
- 在线网址:try.redis.io
- 命名参考:doc.redisfans.com
- 文档资料
-
怎么玩
- 学习主流和重点,其余去官网查
-
迭代演化和新特性
-
迭代演化
-
新特性
2. Redis安装配置
- 推荐安装在64位Linux服务器中
1.使用getconf LONG_BIT查看自己服务器的位数 - Linux版安装
Linux下安装前必须先具备gcc编译环境
-
安装步骤
- 编译后安装
- 备份后修改配置文件并重启redis,然后在redis.conf配置文件目录下使用redis-server启动redis
- 根据指定的密码连接redis,先启动后台服务器redis-server,再登录客户端redis-cli
- 使用quit退出redis-cli客户端
- 在redis内使用 shutdown关闭redis-server服务器,在外部使用下面命令
3. Redis10大数据类型
数据类型是value的类型,key的类型都是String
数据类型是value的类型,key的类型都是String
数据类型是value的类型,key的类型都是String
命令不区分大小写,但key是区分大小写的
命令不区分大小写,但Key是区分大小写的
命令不区分大小写,但Key是区分大小写的
去官网查询操作数据类型的命令(commands)
永远的帮助命令:help @类型,可以查看指定数据类型的所有命令介绍
- 常用操作
- ttl key:查看剩余过期时间,以s返回
- pttl key:以ms返回
- 字符串(String)
- 介绍
- String字符串是redis最基本的数据类型
- key都是String类型且区分大小写,数据类型是value的类型
- 且是二进制安全的,可以包含任何数据(最多可以是512M)
- 常用操作
-
set key value [键值] [返回值] [时间]
- SET指令不仅可以创建键值对,也可以更新键值对
- NX:当该键不存在时才创建(相当于初始化(只有第一次));XX:当该键以及存在时才会创建(相当于更新)
- GET:在添加之前先返回当前键的值,然后再添加
- EX、PX:设置当前键的存活时间,时间单位不同
- KEEPTTL:保留设置前指定键的生存时间,否则每次设置修改指定键后都是永不过期
- 总结
-
get key
- 获取指定键的值,不存在则返回nil
-
同时设置/获取多个键值 MSET / MGET
- MSET key value
[key value key value...]
- MGET key
[key key...]
- MSETNX key value
[key value...]
:必须整体全部生效,有一个不成功则全部不成功
-
获取指定区间范围内的值 SETRANGE / GETRANGE
- GETRANGE key start end:对指定的键的String数据进行切片,类似substring,左闭右闭,且 0 -1 是返回整个字符串
- SETRANGE key offset value:对指定键的String从offset开始设置value
-
数值增减 INCR / DECR
- 指定键的值一定要是数字才可以加减
-
获取字符串长度 STRLEN key
-
内容追加 APPEND key value
-
分布式锁 SETNX / SETEX key time value
- 使用 setnx 命令来创建分布式数据,此时只会同时存在一份,当用完之后使用 del 删除,此时才可以继续创建,这样就可以保证某个数据只可同时存在一份,实现分布式
- SETEX key time value:将set和expire(设置过期时间)两个命令合为一个原子操作,也可以set key value ex time 来实现
-
GETSET:先get再set,和set key value get 一样
-
总结