Redis

文章目录

  • Redis
  • 1 介绍
  • 2 Redis数据类型
    • 2.1 String类型
    • 2.2 hash类型
    • 2.3 list类型
    • 2.4 set类型
    • 2.5 zset类型

Redis

1 介绍

Redis(Remote Dictionary Server)是一个开源的内存数据存储系统,它可以用作数据库、缓存和消息中间件。Redis支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。它提供了丰富的命令集合,使得开发者可以方便地对这些数据结构进行操作。

以下是Redis的一些关键特性和优势:

  1. 内存存储: Redis数据完全存储在内存中,因此读写速度非常快。同时,Redis也可以将数据持久化到磁盘,以防止数据丢失。

  2. 丰富的数据结构: Redis支持多种数据结构,包括字符串、列表、集合、有序集合、哈希表等,每种数据结构都支持丰富的操作。

  3. 持久化: Redis支持将数据持久化到磁盘,可以选择使用RDB快照或者AOF(Append-Only File)日志文件的方式进行持久化。

  4. 高可用性: Redis支持主从复制,可以创建多个Redis副本来提供高可用性和容错性。

  5. 分布式: Redis Cluster是Redis的分布式解决方案,它可以将数据分布到多个节点上,提供横向扩展性。

  6. 事务支持: Redis支持事务,可以批量执行一系列命令,保证这些命令的原子性。

  7. 发布/订阅模式: Redis支持发布/订阅模式,可以用于消息传递和事件通知。

  8. 灵活性: Redis非常灵活,可以用于多种用途,包括缓存、计数器、消息队列等。

  9. 社区和生态系统: Redis拥有庞大的开发者社区和丰富的生态系统,有很多客户端库、工具和扩展可以使用。

2 Redis数据类型

2.1 String类型

字符串是Redis最简单的数据类型,可以存储文本、整数或者浮点数。字符串类型是二进制安全的,意味着它可以包含任意数据,比如图片或者序列化的对象。

使用场景

  • 视频的播放量统计
  • 共享session

常用命令

  • set key value:设置String类型的键key的值为value
  • get key:获取String类型的键key中的值value
  • 例如:
    在这里插入图片描述
  • incr key:对键key进行递增操作
  • decr key:对键key进行递减操作
  • 例如:
    Redis_第1张图片
  • setex key timeout value:设置键key在指定的时间后过期,单位是秒(s)
  • ttl key:获取键key剩余时间
  • 例如:设置age的时间为10s,10s之后自动清空
    Redis_第2张图片
    例如:设置age的时间为20s,获取剩余时间为12s
    在这里插入图片描述

2.2 hash类型

Hash类型是一种键值对的集合,适用于存储对象(例如用户信息、商品信息等)的属性和属性值。每个Hash类型的键可以包含多个字段和字段值,类似于关联数组。

在java中的比喻:

Map<String,Map<String,?>> map 

使用场景
开发中不建议使用hash类型,如果一定要用它,使用对象转换为json类型

常用命令

  • hset key field value: 设置Hash类型的键key中字段field的值为value

  • hget key field: 获取Hash类型的键key中字段field的值。

  • 例如:
    Redis_第3张图片

  • hdel key field1 field2 ...: 删除Hash类型的键key中的一个或多个字段。

  • hexists key field: 判断Hash类型的键key中是否存在字段field

  • 例如:
    在这里插入图片描述

  • hkeys key: 获取Hash类型的键key中所有的字段名。

  • havls key: 获取Hash类型的键key中所有的字段值。

  • hlen key: 获取Hash类型的键key中字段的数量。

2.3 list类型

在Redis中,List(列表)是一种有序的字符串元素集合,它可以包含字符串、数字等类型的元素。List数据类型支持在头部(左侧)和尾部(右侧)快速添加、删除元素,因此常用来实现队列、栈等数据结构,也可以用来存储有序的元素集合。

使用场景:收藏文章列表

常用命令

  • lpush key value [value ...] :在列表头部(左侧)插入一个或多个值。
  • rpush key value [value ...]: 在列表尾部(右侧)插入一个或多个值。
  • lpop key :移除并返回列表头部(左侧)的元素。
  • rpop key :移除并返回列表尾部(右侧)的元素。
  • lrange key start stop :获取列表指定范围内的所有元素。
  • llen key:获取列表的长度。
  • 例如:
    Redis_第4张图片

2.4 set类型

Set是一个无序的、不重复的元素集合。以下是关于Redis中Set类型的一些重要特点:

  1. 无序性: Set中的元素是无序的,不像列表(List)类型那样有顺序。

  2. 不重复性: Set中不允许重复的元素,每个元素都是唯一的。

  3. 集合操作: Redis提供了丰富的集合操作,如求交集、并集、差集等,可以方便地对集合进行操作。

常用命令

  • sadd key member [member ...]:将一个或多个元素添加到集合中。

  • srem key member [member ...]:从集合中移除一个或多个元素。

  • smembers key:返回集合中的所有元素。

  • scard key:返回集合中的元素个数。

  • 例如:
    Redis_第5张图片

2.5 zset类型

ZSET 是 Redis 提供的一种有序集合数据类型。ZSET 中的每个成员都关联着一个分值(score),Redis 使用分值来对集合中的成员进行排序。ZSET 是有序的,这意味着你可以按照分值的范围或者按照成员来查询元素。

在 ZSET 中,每个成员都是唯一的,但是分值(score)可以重复。ZSET 中的成员按照分值从小到大进行排序,分值相同的成员按照字典序进行排序。

常用命令

  • zadd key score member [score member ...]:向有序集合中添加一个或多个成员,或者更新已存在成员的分值。

  • zrem key member [member ...]:从有序集合中移除一个或多个成员。

  • zscore key member:获取有序集合中指定成员的分值。

  • zrank key member:获取有序集合中指定成员的排名(按照分值从小到大排序)。

  • zrevrank key member:获取有序集合中指定成员的排名(按照分值从大到小排序)。

  • zrange key min max:按照分值范围获取成员列表,可以指定返回结果的数量和起始位置。

  • zrevrank key max min:按照分值范围从大到小获取成员列表。

  • zcard key:获取有序集合中的成员数量。

Redis_第6张图片

你可能感兴趣的:(redis,数据库)