Redis 知识点整理,你面试需要知道的

什么是 Redis ?

Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。

  • Redis 运行在内存中但是可以持久化到磁盘,所以它支持高速读写,及数据持久化。
  • Redis 支持复杂的数据结构储存。
  • Redis 支持数据备份,即 Master - Slave 模式的数据备份,所以可以运用主从复制实现读写分离。

Redis支持的 5 种数据类型

String 字符串,Hash 哈希 ,List 列表,Set 集合,zset 有序集合(sorted set)。

String 字符串

String 类型是 Redis 最基本的数据类型,String 类型的值最大能存储 512M

# set 设置值
set key value

# get 取值
get value

Hash 哈希

Hash 是一个键值(key - value)对集合

Hash 是一个 String 类型的 Field 和 Value 的映射表,特别适合用于存储对象

# 如果key 被用过,需删除
del key

# hash 设置值
hmset key key1 value1 key2 value2

# hash 取值
hget key key1/key2

List 列表

List 是简单的字符串列表,按照插入顺序排序。添加一个元素到列表的头部(左边)或者尾部(右边)。

# 如果有其他类型key,需删除,否则报错
del key

# list 设置值 
# lpush头部添加,可以多次value设置
lpush key value1

# list 取值
# 0 10 是取值区间
lrange key 0 10

Set 集合

SetString 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)

# 如果有其他类型key,需删除,否则报错
del key

# set 设置值
# 可以多次value设置
sadd key value1

# set 取值
smembers key 

Zset 有序集合

ZsetSet 一样也是 String 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 Double 类型的分数。Redis正是通过分数来为集合中的成员进行从小到大的排序

Zset 的成员是唯一的,但分数(score)却可以重复。

# 如果有其他类型key,需删除,否则报错
del key

# zset 设置值
# 可以多次value设置; 0 是分数(次数),可重复
zadd key 0 value1

# zset 取值
# 通过分数排序去取值,0 10 是区间
zrangebyscore key 0 10

指令练习

Try Redis

Redis 持久化方式有哪些?

Redis 提供了两种持久化方式:RDB (Redis DataBase)(默认)和 AOF (Append Only File)。

PS:持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。

RDB

指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个 dump.rdb 文件。redis 重启会通过加载 dump.rdb 文件恢复数据。

Redis.conf 配置文件中 RDB 持久化配置信息(默认配置)

# RDB 持久化,快照保存频率
# 900秒内,如果超过1个key被修改,则发起快照保存
# 300秒内,如果超过10个key被修改,则发起快照保存
# 60秒内,如果1万个key被修改,则发起快照保存
save 900 1
save 300 10
save 60 10000

# 启用rdb文件压缩手段,默认为yes。
rdbcompression yes

AOF

Redis 默认不开启,是以文件形式存储。

它的出现是为了弥补 RDB 的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中

Redis 重启时,会根据日志文件的内容,将写指令从前到后执行一次以完成数据的恢复工作。

PS: 在正式环境中,一般两种备份方式都会开启,其中 AOF 在只需要在主库,以及个别 2 - 3 台的从库上开启即可,当数据丢失时,可以人为通过 AOF 日志进行数据恢复。

Redis.conf 配置文件中 AOF 持久化配置信息

# 开启 AOF 持久化
appendonly yes

Redis架构模式

  • 单机模式
  • 主从模式
  • 哨兵
  • 集群模式
    1. Sentinel 高可用集群,主从复制,故障转移
    2. Cluster 高可用集群,配置简单,支持故障转移,动态增减节点,水平横向扩展(推荐)

特点参考:
Redis 架构模式

运用场景

  1. 会话缓存
    在会话中保存用户等信息,好处可以提供持久化。
  2. 排行榜相关问题
    关系型数据库在排行榜方面查询速度普遍偏慢,利用 Redis 这个非关系数据库 SortedSet 进行热点数据的排序很快。
  3. 分布式锁
    Redis 一般做缓存数据库,可以加快访问数据的速度,但也可以在分布式应用中用来实现分布式锁。效果相当于Zookeeper,但是大多数的过程需要手动操作。

参考

Redis 数据类型

Redis 持久化之RDB和AOF

版权声明:本文为CSDN博主「outdata」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/outdata/article/details/105582327

发布了118 篇原创文章 · 获赞 450 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/qq_37143673/article/details/105700284