Redis的常用数据类型以及命令

目录

一、概述

二、数据类型

三、String

四、Hash

五、List

六、Set

七、Sorted Set

八、通用命令

一、概述

Redis 是一个开源的、高性能的 键值对 数据库,支持多种数据类型,提供丰富的操作命令,常用于缓存、消息队列、排行榜等场景。了解 Redis 的数据类型及其对应的操作命令,有助于充分发挥 Redis 的性能优势,构建高效的应用程序。

​ 本文将记录一些常用的 Redis 数据结构以及命令,便于之后使用时进行查询。

二、数据类型

Redis 提供了以下五种基本数据类型:

  1. 字符串(String)
  2. 哈希(Hash)
  3. 列表(List)
  4. 集合(Set)
  5. 有序集合(Sorted Set)

此外,Redis 还提供了以下特殊数据类型:

  • 位图(Bitmap)
  • HyperLogLog
  • 地理位置(Geo)
  • 流(Stream)
  • JSON(通过 RedisJSON 模块)

三、String

1. 简介

  • 类型描述:字符串是 Redis 中最基本的数据类型,一个键对应一个值,值可以是字符串、数字、二进制数据等。
  • 应用场景:缓存对象、计数器、字符串操作等。

2. 常用命令

设置与获取值
  • SET key value [EX seconds] [PX milliseconds] [NX|XX]:设置指定键的值。

    示例:

    SET mykey "Hello, Redis!"
    SET mykey "Hello, Redis!" EX 60   # 设置过期时间为60秒
    SET mykey "Hello, Redis!" NX      # 仅当键不存在时设置
    
  • GET key:获取指定键的值。

    示例:

    GET mykey
    
批量操作
  • MSET key1 value1 key2 value2 ...:同时设置多个键的值。

    示例:

    MSET key1 "value1" key2 "value2"
    
  • MGET key1 key2 ...:同时获取多个键的值。

    示例:

    MGET key1 key2
    
计数器操作
  • INCR key:将键的值加 1。

    示例:

    INCR counter   # 如果键不存在,初始值为0,再加1
    
  • DECR key:将键的值减 1。

    示例:

    DECR counter
    
  • INCRBY key increment:将键的值增加指定的整数。

    示例:

    INCRBY counter 5
    
  • DECRBY key decrement:将键的值减少指定的整数。

    示例:

    DECRBY counter 3
    
字符串操作
  • APPEND key value:将指定的值追加到键的值末尾。

    示例:

    APPEND mykey " World!"
    
  • STRLEN key:获取键值的字符串长度。

    示例:

    STRLEN mykey
    

四、Hash

1. 简介

  • 类型描述:哈希是一个键值对集合,适合存储对象。键对应一个哈希表,哈希表内是字段(field)和值(value)的映射。
  • 应用场景:存储用户信息、商品信息等对象。

2. 常用命令

设置与获取字段值
  • HSET key field value [NX|XX]:设置哈希表中字段的值。

    示例:

    HSET user:1001 name "Alice"
    HSET user:1001 age 30
    HSET user:1001 phone 123456  # 仅当字段不存在时设置
    
  • HGET key field:获取哈希表中指定字段的值。

    示例:

    HGET user:1001 name
    
  • HMSET key field1 value1 field2 value2 ...:同时设置多个字段的值。

    示例:

    HMSET user:1002 name "Bob" age 25
    
  • HMGET key field1 field2 ...:同时获取多个字段的值。

    示例:

    HMGET user:1002 name age
    
  • HGETALL key:获取哈希表中所有的字段和值。

    示例:

    HGETALL user:1001
    
字段存在性与删除
  • HEXISTS key field:检查哈希表中是否存在指定字段。

    示例:

    HEXISTS user:1001 email
    
  • HDEL key field1 [field2 ...]:删除哈希表中的一个或多个字段。

    示例:

    HDEL user:1001 age
    
获取字段信息
  • HLEN key:获取哈希表中字段的数量。

    示例:

    HLEN user:1001
    
  • HKEYS key:获取哈希表中的所有字段名。

    示例:

    HKEYS user:1001
    
  • HVALS key:获取哈希表中的所有值。

    示例:

    HVALS user:1001
    
增加或减少数值字段
  • HINCRBY key field increment:将哈希表中指定字段的值增加指定整数。

    示例:

    HINCRBY user:1001 age 1
    

五、List

1. 简介

  • 类型描述:列表是一个有序的字符串链表,可以在头部或尾部添加和删除元素。
  • 应用场景:消息队列、任务列表、文章评论等。

2. 常用命令

元素添加
  • LPUSH key value1 [value2 ...]:将一个或多个值插入到列表头部。

    示例:

    LPUSH mylist "world"
    LPUSH mylist "hello"
    
  • RPUSH key value1 [value2 ...]:将一个或多个值插入到列表尾部。

    示例:

    RPUSH mylist "redis"
    
元素获取
  • LRANGE key start stop:获取列表中指定范围的元素。

    示例:

    LRANGE mylist 0 -1   # 获取所有元素
    
  • LINDEX key index:获取列表中指定索引的元素。

    示例:

    LINDEX mylist 0      # 获取第一个元素
    
元素删除
  • LPOP key:移除并返回列表的头元素。

    示例:

    LPOP mylist
    
  • RPOP key:移除并返回列表的尾元素。

    示例:

    RPOP mylist
    
列表长度
  • LLEN key:获取列表的长度。

    示例:

    LLEN mylist
    
指定位置插入
  • LINSERT key BEFORE|AFTER pivot value:在列表的指定元素前或后插入元素。

    示例:

    LINSERT mylist BEFORE "world" "there"
    
修剪列表
  • LTRIM key start stop:对列表进行修剪,只保留指定范围的元素。

    示例:

    LTRIM mylist 0 2
    

六、Set

1. 简介

  • 类型描述:集合是一个无序的、唯一的字符串集合。
  • 应用场景:标签、好友关系、去重操作等。

2. 常用命令

添加与获取成员
  • SADD key member1 [member2 ...]:向集合添加一个或多个成员。

    示例:

    SADD myset "apple" "banana" "cherry"
    
  • SMEMBERS key:获取集合中的所有成员。

    示例:

    SMEMBERS myset
    
删除成员
  • SREM key member1 [member2 ...]:移除集合中的一个或多个成员。

    示例:

    SREM myset "banana"
    
成员存在性
  • SISMEMBER key member:判断成员是否存在于集合中。

    示例:

    SISMEMBER myset "apple"
    
集合运算
  • SINTER key1 [key2 ...]:返回给定所有集合的交集。

    示例:

    SINTER set1 set2
    
  • SUNION key1 [key2 ...]:返回所有给定集合的并集。

    示例:

    SUNION set1 set2
    
  • SDIFF key1 [key2 ...]:返回第一个集合与其他集合的差集。

    示例:

    SDIFF set1 set2
    
随机获取和删除成员
  • SRANDMEMBER key [count]:随机返回集合中的一个或多个成员。

    示例:

    SRANDMEMBER myset
    SRANDMEMBER myset 2
    
  • SPOP key [count]:随机移除并返回集合中的一个或多个成员。

    示例:

    SPOP myset
    SPOP myset 2
    

七、Sorted Set

1. 简介

  • 类型描述:有序集合与集合类似,但每个成员都会关联一个分数(score),集合中的成员是 唯一 的,但分数可以重复。成员按分数从小到大排序。
  • 应用场景:排行榜、带权重的消息队列等。

2. 常用命令

添加与获取成员
  • ZADD key [NX|XX] [CH] [INCR] score member [score member ...]:向有序集合添加一个或多个成员,或更新已存在成员的分数。

    示例:

    ZADD myzset 1 "one" 2 "two" 3 "three"
    
  • ZRANGE key start stop [WITHSCORES]:按照分数从小到大,返回指定区间内的成员。

    示例:

    ZRANGE myzset 0 -1    # 获取所有成员
    ZRANGE myzset 0 -1 WITHSCORES   # 同时返回分数
    
  • ZREVRANGE key start stop [WITHSCORES]:按照分数从大到小,返回指定区间内的成员。

    示例:

    ZREVRANGE myzset 0 -1
    
获取成员分数和排名
  • ZSCORE key member:获取指定成员的分数。

    示例:

    ZSCORE myzset "one"
    
  • ZRANK key member:获取指定成员的排名(从 0 开始),按分数从小到大。

    示例:

    ZRANK myzset "two"
    
  • ZREVRANK key member:获取指定成员的排名,按分数从大到小。

    示例:

    ZREVRANK myzset "two"
    
删除成员
  • ZREM key member [member ...]:移除一个或多个成员。

    示例:

    ZREM myzset "two"
    
按分数或排名范围获取成员
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]:返回指定分数范围内的成员。

    示例:

    ZRANGEBYSCORE myzset 1 2
    
  • ZCOUNT key min max:返回指定分数范围内的成员数量。

    示例:

    ZCOUNT myzset 1 2
    

八、通用命令

键操作命令

查找键
  • KEYS pattern:查找所有符合给定模式的键。

    • 示例:

      KEYS user:*
      

      注意KEYS 命令在键数量较多时可能会阻塞服务器,生产环境中应避免使用。

键的存在性和删除
  • EXISTS key:检查给定键是否存在。

    • 示例:

      EXISTS mykey
      
  • DEL key [key ...]:删除一个或多个键。

    • 示例:

      DEL key1 key2
      
键的过期和持久化
  • EXPIRE key seconds:为给定键设置过期时间(秒)。

    • 示例:

      EXPIRE mykey 60
      
  • TTL key:获取键的剩余生存时间(秒)。

    • 示例:

      TTL mykey
      
  • PERSIST key:移除键的过期时间,使其永久存在。

    • 示例:

      PERSIST mykey
      
键的类型和重命名
  • TYPE key:返回键所存储的值的类型。

    • 示例:

      TYPE mykey
      
  • RENAME key newkey:重命名键。

    • 示例:

      RENAME oldkey newkey
      
其他键操作
  • RANDOMKEY:随机返回一个键。

    • 示例:

      RANDOMKEY
      
  • DBSIZE:返回当前数据库的键的数量。

    • 示例:

      DBSIZE
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值