
第124天学习打卡(Redis Set Hash Zset 三种特殊数据类型 事务 乐观锁)
发布日期:2021-05-14 03:19:57
浏览次数:22
分类:精选文章
本文共 2536 字,大约阅读时间需要 8 分钟。
Redis 数据结构与命令详解
Redis 是一种开源的分布式数据库,支持多种数据结构,适用于各种应用场景。本文将详细介绍 Redis 的核心数据结构及其相关命令。
一、Set(集合)
1.1 Set 定义
Set 是 Redis 中的一个基本数据结构,特点如下:
- 无序:Set 中的元素没有固定的顺序
- 无重复:Set 中的元素是唯一的,不允许重复
- 动态大小:Set 的大小可以动态增加或减少
1.2 常用命令
# 添加元素sadd myset "hello"sadd myset "kuangshen"sadd myset "lovekuangshen"# 查看集合元素smembers myset# 判断元素是否存在sismember myset hello# 移除元素srem myset hello# 获取集合大小scard myset# 随机抽取元素srandmember myset
1.3 应用场景
Set 适用于需要存储一组唯一值且不关心顺序的场景,例如:
- 用户点赞列表
- 抗重复链接存储
二、Hash(哈希)
2.1 Hash 定义
Hash 是 Redis 中的另一个核心数据结构,特点如下:
- 键值对:Hash 存储一组键-值对
- 动态扩展:Hash 的值可以是字符串、数字等任意类型
- 无序存储:Hash 中的键是无序的
2.2 常用命令
# 添加或更新键值对hmset myhash field1 hello field2 world# 获取单个字段值hget myhash field1hgetall myhash # 获取全部键值对# 删除字段hdel myhash field1# 获取字段数量hlen myhash# 判断字段是否存在hexists myhash field1
2.3 应用场景
Hash 适用于需要存储多个键-值对且值经常变动的场景,例如:
- 用户信息存储(如用户名、年龄等)
- 应用配置管理
三、Zset(有序集合)
3.1 Zset 定义
Zset 是 Set 的扩展版本,增加了一个分数值,特点如下:
- 有序:Zset 中的元素按分数值排序
- 动态大小:支持按分数值自动排序
3.2 常用命令
# 添加元素(可选分数值)zadd myset 1 onezadd myset 2 two 3 three# 查看元素zrange myset 0 -1zrangebyscore myset -inf +inf# 移除元素zrem myset one# 获取集合大小zcard myset# 随机抽取元素srandmember myset# 随机删除元素spop myset# 移动元素smove myset myset2 element# 计算区间内元素数量zcount myset 1 3
3.3 应用场景
Zset 适用于需要存储有序数据的场景,例如:
- 班级成绩表
- 工资表排序
四、Geospatial(地理位置)
4.1 Geospatial 定义
Redis 地理位置(Geospatial)用于存储地理位置信息,支持以下操作:
- 添加经纬度
- 计算两地距离
- 查询附近城市
- 找出地理范围内的元素
4.2 常用命令
# 添加地理位置geoadd china:city 116.40 39.90 beijinggeoadd china:city 121.47 31.23 shanghai# 获取地理信息geopos china:city beijinggeodist china:city beijing shanghai km# 查询附近城市georadius china:city 110 30 1000 kmgeoradius china:city 110 30 500 km withdist# GeoHash 转换geohash china:city beijing chongqing
4.3 应用场景
地理位置适用于需要定位和距离计算的场景,例如:
- 打车服务(计算距离)
- 附近的人搜索
五、Hyperloglog
5.1 Hyperloglog 定义
Hyperloglog 是 Redis 中的基数统计算法,适用于需要统计唯一访问次数的场景。
5.2 常用命令
# 添加元素pfadd mykey a b c d# 合并集合pfmerge mykey mykey2# 获取基数pfcount mykey
5.3 应用场景
Hyperloglog 适用于需要统计独立访客数量的场景,例如:
- 网站流量分析
六、Bitmaps(位图)
6.1 Bitmaps 定义
Bitmaps 是 Redis 中的位操作数据结构,用于存储二进制位信息。
6.2 常用命令
# 设置或清除位setbit sign 0 1getbit sign 3bitcount sign
6.3 应用场景
Bitmaps 适用于需要记录状态的场景,例如:
- 考勤打卡记录
- 用户活跃度统计
七、事务
7.1 事务定义
Redis 事务是一组命令的集合,特点如下:
- 原子性:整个事务要么全部执行,要么全部无效
- 顺序性:命令按顺序执行
- 排他性:在事务中,其他命令不能修改数据
7.2 常用命令
# 开启事务multi# 执行事务exec# 取消事务discard
7.3 事务示例
# 正常执行事务multiset k1 v1set k2 v2exec
7.4 乐观锁实现
# 监控键watch money# 事务执行失败时解锁unwatch
八、监控
8.1 监控实现
Redis 的乐观锁机制可以实现分布式监控,避免并发问题。
8.2 示例
# 设置监控watch money# 开启事务multidecrby money 20incrby out 20exec
Redis 提供了丰富的数据结构和命令,适用于多种场景。如果需要进一步了解 Redis 的命令或高级功能,可以参考 Redis 官方文档。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月19日 23时46分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
qt中转到槽后如何取消信号与槽关联
2019-03-10
qt问题记录-spin box与double spin box
2019-03-10
移动端事件
2019-03-10
spring-day01
2019-03-10
抖音发布黄金时间段,抖音上热门最佳时间
2019-03-10
Thymeleaf sec:authorize 标签不生效
2019-03-11
Iterable与Iterator
2019-03-11
Python机器学习(九十二)Pandas 统计
2019-03-11
SecSolar:为代码“捉虫”,让你能更专心写代码
2019-03-11
链上钱包的博彩雷区
2019-03-11
GRUB2
2019-03-11
微信JS-SDK DEMO页面和示例代码
2019-03-11
GridView自定义删除操作
2019-03-11
一张图搞定RPC框架核心原理
2019-03-11
Scala中的包
2019-03-11
他来了他来了,他带着云栖大会的免费门票走来了
2019-03-11
获取linux 主机cpu类型
2019-03-11
Android Studio updating indices 一直刷新和闪烁
2019-03-11