🎢数据库 - Redis 知识+命令
00 分钟
2024-5-10
2024-6-20
type
status
date
slug
summary
tags
category
icon
password
文章状态

Redis服务

[TOC]

简介

  • c语言 开发的一个开源的、高性能 键值对 数据库
  • 内存数据库,即数据库的内容存储在 内存
    • 内存数据库的 读写效率 比传统数据库快的多、但易丢失
    • 为解决丢失,Redis提供将内存数据库 持久化 到硬盘, 恢复时将数据直接直接写入磁盘
  • 官方提供的测试数据
    • 50个并发执行100000个请求
    • 读的速度是110000次/s
    • 写的速度是81000次/s
  • 学习网站:
    • 官网:https://redis.io
    • 中文网:http://www.redis.net.cn/

Redis 与 MySQL

  • 并非 对立 而是 互补
  • 通常情况下: 使用关系型数据库 + 适合时: 使用NoSQL数据库
  • 数据存储在关系型数据库中、缓存 在NoSQL数据库中

Redis 作 缓存服务器

  • 原理
    • 把表中经常访问的记录放在Redis中
    • 在用户查询时先查询Redis、再去查询MySQL,实现了读写分离
  • 过程:判断从Redis中查询的结果
    • 如果非空,则证明Redis中有记录,直接查缓存
    • 如果是空,则证明Redis中无记录,先从数据库中查、存Redis、再返回数据
  • 缓存的数据
    • Redis常用来缓存一些数据 不经常发生变化的数据
    • × 数据库的数据一旦发生改变,则需要 更新缓存
    • 数据库表执行增删改的相关操作时,需要将数据重新写入Redis;
    • 在代码的对应的增删改方法中,将Redis数据删除

Redis持久化

模式

  • RDB快照模式(snapshotting)——> 默认开启
    • 优势:
      • RDB是一个非常紧凑的文件,保存了在 某个时间点 上的数据
      • Redis会创建 单独子线程 来处理保存工作、恢复速度快
    • 劣势:
      • 不能实时 持久化,因为bgsave每次运行时会创建子进程、重量级操作
      • 二进制文件 保存,Redis升级过程中RDB格式较多、不兼容
      • 在一定时间间隔备份,意外宕机会丢失数据!!
  • AOF模式(Append-Only-File)
    • 优势:
      • AOF提供了 多种同步频率 ,默认是每秒同步一次
      • AOF文件采用Redis命令追加形式来构造
      • AOF文件的格式可读性强、cat可看
    • 劣势:
      • 相同数据时,AOF文件比RDB文件体积更大、现提供了重写功能
      • 默认是每秒同步一次,负载较高时性能较差

选择

  • 如果能忍受一小段时间内数据丢失时,采用RDB
  • 一般不建议单独使用一种持久化机制、而是两种一起用

Redis主从

  • 同步实现流程
      1. 从服务器向主服务器发出同步数据的请求
      1. 主服务器本地执行bgsave命令、将现有数据全部生成快照
      1. 主服务器把快照发送给从服务器
      1. 从服务器载入快照、恢复数据,即拥有了主服务现有数据
      1. 当主服务有新数据时,会发送缓存命令
      1. 从服务器执行该命令、获取新数据

相关参数

属性
参数
端口号
6379
配置文件模板
解压目录/redis.conf
启动方式
安装目录/bin/redis-server 配置文件
登录方式
安装目录/bin/redis-cli 选项
数据存储结构
键值对 (key-value)
支持的数据类型
String、List、Set、Zset (Sorted Set)、hashes

Redis命令

键命令

Redis 键命令用于管理 Redis 的键。
命令
描述
KEYS *
查找所有符合给定模式的 key
EXISTS key
检查给定 key 是否存在
TYPE key
返回 key 所储存的值的类型
DEL key
用于删除 key

String 命令

Strings(字符串)结构是 Redis 的基本数据类型,值value是字符串类型,常用命令:
命令
描述
SET key value
设置指定 key 的值
GET key
获取指定 key 的值
MSET key value [key value …]
同时设置一个或多个 key-value 对
MGET key1 [key2..]
获取所有(一个或多个)给定 key 的值

Hash 命令

Hash(哈希散列)是 Redis 基本数据类型,值value 中存储的是 hash 表。当中是一个 field(字段) 和 value(值) 的映射表。每个 hash 可以存储 232 - 1 键值对(40多亿)。
Hash 特别适合用于存储对象。常用的命令:
命令
说明
HSET key field value
用于设置存储在 key 中的哈希表字段的值
HGET key field
获取存储在哈希表中指定字段的值
HMSET key field1 value1 [field2 value2]
同时将多个 field-value (域-值)对设置到哈希表 key 中
HMGET key field1 [field2]
获取所有给定字段的值
HGETALL key
获取在哈希表中指定 key 的所有字段和值
HDEL key field1 [field2]
用于删除哈希表中一个或多个字段

List 命令

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的 头部(左边) 或者 尾部(右边)
命令
描述
LPUSH key value1 [value2]
将一个或多个值插入到列表头部
RPUSH key value1 [value2]
在列表最后添加一个或多个值
LPOP key
移出并获取列表的第一个元素
RPOP key
移除并获取列表最后一个元素
LRANGE key start stop
获取列表指定范围内的元素 (所有为0到-1)
LLEN key
获取列表长度
LREM key count value
移除列表元素
LSET key index value
通过索引设置列表元素的值
LINDEX key index
通过索引获取列表中的元素

Set 命令

Redis 的 Set 是 String 类型的 无序集合 。集合成员是唯一的,这就意味着集合中 不能出现重复 的数据。
命令
描述
SADD key member1 [member2]
向集合添加一个或多个成员
SREM key member1 [member2]
移除集合中一个或多个成员
SMEMBERS key
返回集合中的所有成员
SPOP
移除并返回集合中的一个随机元素

Zset 命令

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的 分数 。Redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
命令
描述
ZADD key score1 member1 [score2 member2]
向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZREM key member1 [member2]
移除有序集合中的一个或多个成员
ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合成指定区间内的成员
ZSCORE key member
返回有序集中,成员的分数值
上一篇
数据库 - SQL 语句(二)
下一篇
运维工具