Redis 八大数据类型详解
创作时间:
作者:
@小白创作中心
Redis 八大数据类型详解
引用
CSDN
1.
https://blog.csdn.net/weixin_38854703/article/details/113172763
Redis 是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种数据结构,包括字符串、列表、哈希表、集合、有序集合等。本文将详细介绍 Redis 的八大数据类型及其应用场景。
Redis 的五大基本数据类型
String(字符串)
应用场景:
- 实现计数器(如文章阅读量)
- 存储 JSON 对象
常用命令:
SET key value:设置字符串值GET key:获取字符串值INCR key:将字符串值自增 1DECR key:将字符串值自减 1
List(列表)
应用场景:
- 消息队列(使用
LPUSH和RPOP命令) - 栈(使用
LPUSH和LPOP命令)
常用命令:
LPUSH key value:从列表头部添加元素RPUSH key value:从列表尾部添加元素LPOP key:从列表头部移除元素RPOP key:从列表尾部移除元素LLEN key:获取列表长度LRANGE key start stop:获取列表指定范围内的元素
Hash(哈希表)
应用场景:
适合存放经常变动的对象,可以直接修改某个属性,而不需要像字符串类型那样先转换成实体类再修改。
常用命令:
HSET key field value:设置哈希表字段的值HGET key field:获取哈希表字段的值HGETALL key:获取哈希表中所有字段和值HSETNX key field value:仅当字段不存在时设置其值HDEL key field [field ...]:删除一个或多个哈希表字段
Set(集合)
应用场景:
- 共同好友、共同关注(使用
SINTER key1 key2获取交集) - 可能认识的人(使用
SDIFF key1 key2获取差集) - 点赞功能(使用
SADD key value添加,SREM key value删除,SCARD key统计数量) - 随机抽奖功能(使用
SPOP key随机删除元素或SRANDMEMBER key随机抽取元素)
常用命令:
SADD key member [member ...]:向集合添加一个或多个成员SMEMBERS key:获取集合中的所有成员SISMEMBER key member:判断成员是否在集合中SINTER key [key ...]:获取多个集合的交集SDIFF key [key ...]:获取多个集合的差集SUNION key [key ...]:获取多个集合的并集SCARD key:获取集合的成员数量SPOP key:随机移除并返回集合中的一个成员SRANDMEMBER key [count]:随机返回集合中的一个或多个成员
ZSet(有序集合)
应用场景:
热点新闻(使用 ZINCRBY key increment member 增加权重,ZREVRANGE key start stop withscores 获取前 N 条热点新闻)
常用命令:
ZADD key score member [score member ...]:向有序集合添加一个或多个成员,或更新已存在成员的分数ZRANGE key start stop [WITHSCORES]:获取有序集合中指定范围的成员ZREVRANGE key start stop [WITHSCORES]:获取有序集合中指定范围的成员,按分数降序排列ZINCRBY key increment member:为有序集合中的成员增加分数ZSCORE key member:获取成员的分数ZCARD key:获取有序集合的成员数量ZRANK key member:获取成员在有序集合中的排名(从小到大)ZREVRANK key member:获取成员在有序集合中的排名(从大到小)ZREM key member [member ...]:移除一个或多个成员
跳跃表
跳跃表是基于多指针有序链表实现,可以看成多个有序链表,在查找时从上层指针开始查找,找到对应的取经后再到下一层查找。
跳跃表优点:
- 插入速度非常快,不需要进行旋转等操作来维护平衡性
- 更容易实现
- 支持无锁操作
Redis 三种特殊数据类型
Geospatial(地理位置)
应用场景:
- 附近的人
- 根据溺水人员地理位置获取附近的救援人员
常用命令:
GEOADD key longitude latitude member [longitude latitude member ...]:添加地理位置GEOPOS key member [member ...]:获取地理位置坐标GEODIST key member1 member2 [unit]:计算两个成员之间的距离GEORADIUS key longitude latitude radius unit [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]:以给定的经纬度为中心,返回键包含的位置元素当中,与中心的距离不超过给定最大距离的所有位置元素GEORADIUSBYMEMBER key member radius unit [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]:以给定成员为中心,返回键包含的位置元素当中,与中心的距离不超过给定最大距离的所有位置元素GEOHASH key member [member ...]:返回一个或多个位置元素的 Geohash 表示
Hyperloglog(统计)
应用场景:
网页的 UV(一个人访问一个网站多次,但是还是算作一个人)
常用命令:
PFADD key element [element ...]:将一个或多个元素添加到 HyperLogLog 中PFCOUNT key [key ...]:返回 HyperLogLog 的基数估计值PFMERGE destkey sourcekey [sourcekey ...]:合并一个或多个 HyperLogLog 到目标 HyperLogLog
Bitmap(位图)
应用场景:
统计用户信息活跃与不活跃、登录与未登录、打卡等两个状态的场景
常用命令:
SETBIT key offset value:设置位图中指定偏移量的位值GETBIT key offset:获取位图中指定偏移量的位值BITCOUNT key [start end]:计算位图中指定范围内的位值为 1 的数量BITOP operation destkey key [key ...]:对一个或多个位图执行位操作
热门推荐
女孩几岁开始发育?这些因素影响发育进程
自然噪声可以促进入睡?网友:我今晚就试试……
C语言如何输出32位二进制数
阳虚体质,怎么把丢失的阳气补回来?
天花的临床症状和体征
猫咪有这些行为,说明性格超棒!你家猫中几条?
信用卡透支额度的秘密与风险管理
集显和独显有什么区别?笔记本买独显好还是集显好?
南昌二日游最佳路线:打卡英雄城的精华之旅
从0.1nm到1mm:显微测量仪在抛光至粗糙表面测量中的技术突破
Photoshop文件保存后去了哪里?揭秘PS默认的文件存储路径!
《庆余年》林婉儿角色分析:工具人困境与演员选择反思
如何分析甲醇期货的相关因素?这些因素对市场有何影响?
10个睡眠质量高很重要的原因
前鼻音和后鼻音有哪些 怎么区分
二极管及其类型-二极管在电路中的用途
想要获得更多财产性收入,你要先有本金
智能机器人利用3D视觉无序抓取纸箱拆码垛案例
椰棕和黄麻床垫哪种好?哪种更适合?
2025必玩的十款竖屏游戏推荐
中考化学必备:实验室制取氧气的正确方程式与操作指南
项目化清单化管理如何做
殷姓:穿越千年的华夏印记
如何发现具有较高盈利潜力的产业?这些产业的发展趋势和机遇有哪些?
科学之美:探索无限不循环小数π的可视化之旅
Excel电子表格软件的功能、应用场景及发展趋势
小学三年级英语如何教?让家长成为孩子学习路上的引路人
动漫中最具标志性的 10 大终结技排名
实际成本怎么算
室内装修设计规范:黑白灰现代风格装修指南