Redis五种核心数据结构的基本使用与应用场景
发布日期:2025-05-03 07:15:22
浏览次数:8
分类:精选文章
本文共 2686 字,大约阅读时间需要 8 分钟。
Redis核心数据结构详解
Redis作为一个强大的事务性数据库,提供了丰富的数据结构类型,每种数据结构都有其独特的应用场景。本文将详细介绍Redis的五大核心数据结构:String、Hash、List、Set以及Zset,并阐述其操作命令及应用场景。
String
操作命令
-
存入字符串键值对
# 存入字符串键值对SET key valuekey value# 批量存储字符串键值对MSET key value [key value ...]key value [key value ...]# 存入一个不存在的字符串键值对SETNX key valuekey value# 获取一个字符串键值GET keykey# 批量获取字符串键值MGET key [key ...]key [key ...]# 删除一个键DEL key [key ...]key [key ...]# 设置一个键的过期时间(秒)EXPIRE key secondskey seconds
-
原子加减运算
# 将key中储存的数字值加1INCR keykey# 将key中储存的数字值减1DECR keykey# 将key所储存的值加上incrementINCRBY key incrementkey increment# 将key所储存的值减去decrementDECRBY key decrementkey decrement
应用场景
- 字符串的缓存:用于存储短期有效的缓存数据。
- 对象转json的缓存:用于存储和检索JSON对象。
- 分布式锁:通过设置过期时间实现分布式锁。
- 数量自增:用于生成全局唯一ID或序列号。
- 分布式系统全局序列号:用于生成分布式系统中唯一的标识符。
Hash
操作命令
- 存储哈希表键值对
# 存储一个哈希表key的键值HSET key field valuekey field value# 存储一个不存在的哈希表key的键值HSETNX key field valuekey field value# 存储多个键值对HMSET key field value [field value ...]key field value [field value ...]# 获取哈希表key对应的field键值HGET key fieldkey field# 批量获取多个field键值HMGET key field [field ...]key field [field ...]# 删除哈希表key中的field键值HDEL key field [field ...]key field [field ...]# 返回哈希表key中field的数量HLEN keykey# 返回哈希表key中所有的键值HGETALL keykey# 为哈希表key中field键的值加上增量incrementHINCRBY key field incrementkey 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 keykey# 获取集合key的元素个数SCARD keykey# 判断member元素是否存在于集合key中SISMEMBER key memberkey 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 memberkey member# 为有序集合key中元素member的分值加上incrementZINCRBY key increment memberkey increment member# 返回有序集合key中元素个数ZCARD keykey# 正序获取有序集合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的优越性能。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2026年06月10日 20时10分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
redis事务操作
2023-02-28
PHP中array_merge和array相加的区别分析
2023-02-28
PHP中curl特性
2023-02-28
PHP中date时间不对
2023-02-28
PHP中dirname(__FILE__)的意思
2023-02-28
PHP中extract()函数的妙用
2023-02-28
PHP中fileinfo的作用以及怎么开启fileinfo
2023-02-28
PHP中file_get_contents如何带上cookies
2023-02-28
PHP中header的作用
2023-02-28
PHP中implode()和explode()
2023-02-28
PHP中ob系列函数讲解(浏览器缓存技术)
2023-02-28
PHP中serialize和json序列化与反序列化的区别
2023-02-28
Redis事务处理
2023-02-28
php中传值与传引用的区别是什么
2023-02-28
php中使用ajax进行前后端json数据交互
2023-02-28
Redis事务和锁操作
2023-02-28
PHP中如何得到数组的长度
2023-02-28
Redis 集群模式下一个 Master 挂掉后如何选举?
2023-02-28
php中引入文件几种方式的区别
2023-02-28
PHP中把stdClass Object转array的几个方法
2023-02-28