博客
关于我
Redis五种核心数据结构的基本使用与应用场景
阅读量:794 次
发布时间:2023-02-28

本文共 2686 字,大约阅读时间需要 8 分钟。

Redis核心数据结构详解

Redis作为一个强大的事务性数据库,提供了丰富的数据结构类型,每种数据结构都有其独特的应用场景。本文将详细介绍Redis的五大核心数据结构:String、Hash、List、Set以及Zset,并阐述其操作命令及应用场景。


String

操作命令

  • 存入字符串键值对

    # 存入字符串键值对SET  key  value
    key value
    # 批量存储字符串键值对MSET key value [key value ...]
    key value [key value ...]
    # 存入一个不存在的字符串键值对SETNX key value
    key value
    # 获取一个字符串键值GET key
    key
    # 批量获取字符串键值MGET key [key ...]
    key [key ...]
    # 删除一个键DEL key [key ...]
    key [key ...]
    # 设置一个键的过期时间(秒)EXPIRE key seconds
    key seconds
  • 原子加减运算

    # 将key中储存的数字值加1INCR  key
    key
    # 将key中储存的数字值减1DECR key
    key
    # 将key所储存的值加上incrementINCRBY key increment
    key increment
    # 将key所储存的值减去decrementDECRBY key decrement
    key decrement

应用场景

  • 字符串的缓存:用于存储短期有效的缓存数据。
  • 对象转json的缓存:用于存储和检索JSON对象。
  • 分布式锁:通过设置过期时间实现分布式锁。
  • 数量自增:用于生成全局唯一ID或序列号。
  • 分布式系统全局序列号:用于生成分布式系统中唯一的标识符。

Hash

操作命令

  • 存储哈希表键值对
    # 存储一个哈希表key的键值HSET  key  field  value
    key field value
    # 存储一个不存在的哈希表key的键值HSETNX key field value
    key field value
    # 存储多个键值对HMSET key field value [field value ...]
    key field value [field value ...]
    # 获取哈希表key对应的field键值HGET key field
    key field
    # 批量获取多个field键值HMGET key field [field ...]
    key field [field ...]
    # 删除哈希表key中的field键值HDEL key field [field ...]
    key field [field ...]
    # 返回哈希表key中field的数量HLEN key
    key
    # 返回哈希表key中所有的键值HGETALL key
    key
    # 为哈希表key中field键的值加上增量incrementHINCRBY key field increment
    key field increment

应用场景

  • 电商购物车:key为购物车前缀加用户ID,field为商品ID,value为购买数量。
  • 分布式锁:通过设置过期时间实现分布式锁。
  • 数据管理:同类数据归类整合储存,方便数据管理。

Set

操作命令

  • 存入集合元素
    # 往集合key中存入元素,元素存在则忽略,若key不存在则新建SADD  key  member  [member ...]
    key member [member ...]
    # 从集合key中删除元素SREM key member [member ...]
    key member [member ...]
    # 获取集合key中所有元素SMEMBERS key
    key
    # 获取集合key的元素个数SCARD key
    key
    # 判断member元素是否存在于集合key中SISMEMBER key member
    key member
    # 从集合key中选出count个元素,元素不从key中删除SRANDMEMBER key [count]
    key [count]
    # 从集合key中选出count个元素,元素从key中删除SPOP key [count]
    key [count]

应用场景

  • 抽奖:通过SRANDMEMBER或SPOP命令随机抽取元素。
  • 取交集并集差集:用于共同关注的人等场景。

Zset

操作命令

  • 存入有序集合元素
    # 往有序集合key中加入带分值元素ZADD  key  score member [[score member]…]
    key score member [[score member]…]
    # 从有序集合key中删除元素ZREM key member [member …]
    key member [member …]
    # 返回有序集合key中元素member的分值ZSCORE key member
    key member
    # 为有序集合key中元素member的分值加上incrementZINCRBY key increment member
    key increment member
    # 返回有序集合key中元素个数ZCARD key
    key
    # 正序获取有序集合key从start下标到stop下标的元素ZRANGE key start stop [WITHSCORES]
    key start stop [WITHSCORES]
    # 倒序获取有序集合key从start下标到stop下标的元素ZREVRANGE key start stop [WITHSCORES]
    key start stop [WITHSCORES]

应用场景

  • 排名/热搜:用于存储带分数的数据,按分数排序。
  • 场景:比如按点击量排序的热搜话题。

总结

Redis的五大核心数据结构(String、Hash、List、Set、Zset)各有特点,适用于不同的场景。String适合存储简单的键值对,Hash适合存储对象数据,List实现栈、队列,Set用于集合运算,Zset则结合了Set和有序集合的优点,适合需要排序的场景。理解和合理使用这些数据结构,可以充分发挥Redis的优越性能。

转载地址:http://nytfk.baihongyu.com/

你可能感兴趣的文章
php PSR规范
查看>>
php rand() 重复,array_rand()函数从另外一个数组中随机取得的一定数量的数组的元素是否会重复?...
查看>>
php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用
查看>>
php redis 集群扩展类文件
查看>>
php redis(2)
查看>>
PHP Redis分布式锁
查看>>
php redis的应用
查看>>
php rss,如何用PHP编写RSS
查看>>
php session超时时间_php怎么设置session超时时间
查看>>
PHP SOAP模块的使用方法:NON-WSDL模式
查看>>
PHP Socket实现websocket(三)Stream函数
查看>>
php Socket通信
查看>>
PHP SPL标准库-迭代器
查看>>
php static 变量
查看>>
PHP Static延迟静态绑定
查看>>
php str_pad();
查看>>
PHP study 环境变量composer
查看>>
PHP trim() 函数
查看>>
php unicode编码转成unioce字符(中文)
查看>>
php url路径问题和php文件以绝对路径引入
查看>>