User-Profile-Image
hankin
  • 5
  • Java
  • Kotlin
  • Spring
  • Web
  • SQL
  • MegaData
  • More
  • Experience
  • Enamiĝu al vi
  • 分类
    • Zuul
    • Zookeeper
    • XML
    • WebSocket
    • Web Notes
    • Web
    • Vue
    • Thymeleaf
    • SQL Server
    • SQL Notes
    • SQL
    • SpringSecurity
    • SpringMVC
    • SpringJPA
    • SpringCloud
    • SpringBoot
    • Spring Notes
    • Spring
    • Servlet
    • Ribbon
    • Redis
    • RabbitMQ
    • Python
    • PostgreSQL
    • OAuth2
    • NOSQL
    • Netty
    • MySQL
    • MyBatis
    • More
    • MinIO
    • MegaData
    • Maven
    • LoadBalancer
    • Kotlin Notes
    • Kotlin
    • Kafka
    • jQuery
    • JavaScript
    • Java Notes
    • Java
    • Hystrix
    • Git
    • Gateway
    • Freemarker
    • Feign
    • Eureka
    • ElasticSearch
    • Docker
    • Consul
    • Ajax
    • ActiveMQ
  • 页面
    • 归档
    • 摘要
    • 杂图
    • 问题随笔
  • 友链
    • Spring Cloud Alibaba
    • Spring Cloud Alibaba - 指南
    • Spring Cloud
    • Nacos
    • Docker
    • ElasticSearch
    • Kotlin中文版
    • Kotlin易百
    • KotlinWeb3
    • KotlinNhooo
    • 前端开源搜索
    • Ktorm ORM
    • Ktorm-KSP
    • Ebean ORM
    • Maven
    • 江南一点雨
    • 江南国际站
    • 设计模式
    • 熊猫大佬
    • java学习
    • kotlin函数查询
    • Istio 服务网格
    • istio
    • Ktor 异步 Web 框架
    • PostGis
    • kuangstudy
    • 源码地图
    • it教程吧
    • Arthas-JVM调优
    • Electron
    • bugstack虫洞栈
    • github大佬宝典
    • Sa-Token
    • 前端技术胖
    • bennyhuo-Kt大佬
    • Rickiyang博客
    • 李大辉大佬博客
    • KOIN
    • SQLDelight
    • Exposed-Kt-ORM
    • Javalin—Web 框架
    • http4k—HTTP包
    • 爱威尔大佬
    • 小土豆
    • 小胖哥安全框架
    • 负雪明烛刷题
    • Kotlin-FP-Arrow
    • Lua参考手册
    • 美团文章
    • Java 全栈知识体系
    • 尼恩架构师学习
    • 现代 JavaScript 教程
    • GO相关文档
    • Go学习导航
    • GoCN社区
    • GO极客兔兔-案例
    • 讯飞星火GPT
    • Hollis博客
    • PostgreSQL德哥
    • 优质博客推荐
    • 半兽人大佬
    • 系列教程
    • PostgreSQL文章
    • 云原生资料库
    • 并发博客大佬
Help?

Please contact us on our email for need any support

Support
    首页   ›   SQL   ›   NOSQL   ›   Redis   ›   正文
Redis

Redis笔记—Hash散列与Zset有序集合

2020-04-01 18:10:23
984  0 0
参考目录 隐藏
1) 散列
2) HSET / hset
3) HGET / hget
4) HMSET / hmset
5) HMGET / hmget
6) HDEL / hdel
7) HSETNX / hsetnx
8) HVALS / hvals
9) HKEYS / hkeys
10) HGETALL / hgetall
11) HEXISTS / hexists
12) HINCRBY / hincrby
13) HINCRBYFLOAT / hincrbyfloat
14) HLEN / hlen
15) HSTRLEN / hstrlen
16) 有序集合
17) ZADD / zadd
18) ZSCORE / zscore
19) ZRANGE / zrange
20) ZREVRANGE / zrevrange
21) ZCARD / zcard
22) ZCOUNT / zcount
23) ZRANGEBYSCORE / zrangebyscore
24) ZRANK / zrank
25) ZREVRANK / zrevrank
26) ZINCRBY / zincrby
27) ZINTERSTORE / zinterstore
28) ZREM / zrem
29) ZLEXCOUNT / zlexcount
30) ZRANGEBYLEX / zrangebylex

阅读完需:约 7 分钟

散列

很多时候,散列就像一个微缩版的 redis ,在本文中,小伙伴们对看到的许多散列命令都会有似曾相识的感觉。

HSET / hset

HSET 命令可以用来设置 key 指定的哈希集中指定字段的值,如下:

1
2
127.0.0.1:6379> HSET k1 h1 v1
(integer) 1

HGET / hget

HGET 命令可以用来返回 key 指定的哈希集中该字段所关联的值,如下:

1
2
127.0.0.1:6379> HGET k1 h1
“v1”

HMSET / hmset

HMSET 命令可以批量设置 key 指定的哈希集中指定字段的值,如下:

1
2
127.0.0.1:6379> HMSET k2 h1 v1 h2 v2 h3 v3
OK

HMGET / hmget

HMGET 可以批量返回 key 指定的哈希集中指定字段的值,如下:

1
2
3
4
127.0.0.1:6379> HMGET k2 h1 h2 h3
1) “v1”
2) “v2”
3) “v3”

HDEL / hdel

HDEL 命令可以从 key 指定的哈希集中移除指定的域,在哈希集中不存在的域将被忽略,如下:

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> HMGET k2 h1 h2 h3
1) “v1”
2) “v2”
3) “v3”
127.0.0.1:6379> HDEL k2 h1
(integer) 1
127.0.0.1:6379> HMGET k2 h1 h2 h3
1) (nil)
2) “v2”
3) “v3”

HSETNX / hsetnx

HSETNX 命令只在 key 指定的哈希集中不存在指定的字段时,设置字段的值,如果字段已存在,该操作无效果。如下:

1
2
3
4
127.0.0.1:6379> HSETNX k2 h3 1
(integer) 0
127.0.0.1:6379> HSETNX k2 h4 1
(integer) 1

HVALS / hvals

HVALS 命令可以返回 key 指定的哈希集中所有字段的值,如下:

1
2
3
4
127.0.0.1:6379> HVALS k2
1) “v2”
2) “v3”
3) “1”

HKEYS / hkeys

HKEYS 命令可以返回 key 指定的哈希集中所有字段的名字,如下:

1
2
3
4
127.0.0.1:6379> HKEYS k2
1) “h2”
2) “h3”
3) “h4”

HGETALL / hgetall

HGETALL 命令可以返回 key 指定的哈希集中所有的字段和值。返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍,如下:

1
2
3
4
5
6
7
127.0.0.1:6379> HGETALL k2
1) “h2”
2) “v2”
3) “h3”
4) “v3”
5) “h4”
6) “1”

HEXISTS / hexists

HEXISTS 命令可以返回 hash 里面 field 是否存在,如下:

1
2
127.0.0.1:6379> HEXISTS k2 h3
(integer) 1

HINCRBY / hincrby

HINCRBY 可以增加 key 指定的哈希集中指定字段的数值。如果 key 不存在,会创建一个新的哈希集并与 key 关联。如果字段不存在,则字段的值在该操作执行前被设置为 0, HINCRBY 支持的值的范围限定在 64 位有符号整数,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
127.0.0.1:6379> HEXISTS k2 h3
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> HGET k2 h4
“1”
127.0.0.1:6379> HINCRBY k2 h4 5
(integer) 6
127.0.0.1:6379> HGET k2 h4
“6”
127.0.0.1:6379> HGET k2 h5
(nil)
127.0.0.1:6379> HINCRBY k2 h5 99
(integer) 99
127.0.0.1:6379> HGET k2 h5
“99”

HINCRBYFLOAT / hincrbyfloat

HINCRBYFLOAT 与 HINCRBY 用法基本一致,只不过这里允许 float 类型的数据,不赘述。

HLEN / hlen

HLEN 返回 key 指定的哈希集包含的字段的数量,如下:

1
2
127.0.0.1:6379> HLEN k2
(integer) 4

HSTRLEN / hstrlen

HSTRLEN 可以返回 hash 指定 field 的 value 的字符串长度,如果 hash 或者 field 不存在,返回 0 ,如下:

1
2
127.0.0.1:6379> HSTRLEN k2 h2
(integer) 2

有序集合

有序集合类似 Sets ,但是每个字符串元素都关联到一个叫 score 浮动数值。里面的元素总是通过 score 进行着排序,因此它是可以检索的一系列元素。

ZADD / zadd

ZADD 命令可以将所有指定成员添加到键为 key 的有序集合里面。添加时可以指定多个分数/成员(score/member)对。 如果指定添加的成员已经是有序集合里面的成员,则会更新该成员的分数(scrore)并更新到正确的排序位置。如下:

1
2
127.0.0.1:6379> ZADD k1 60 v1
(integer) 1

ZSCORE / zscore

ZSCORE 命令可以返回有序集 key 中,成员 member 的score 值。如下:

1
2
127.0.0.1:6379> ZSCORE k1 v1
“60”

ZRANGE / zrange

ZRANGE 命令可以根据 index 返回 member ,该命令在执行时加上 withscores 参数可以连同 score 一起返回:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
127.0.0.1:6379> ZRANGE k1 0 3
1) “v1”
2) “v2”
3) “v3”
4) “v4”
127.0.0.1:6379> ZRANGE k1 0 3 withscores
1) “v1”
2) “60”
3) “v2”
4) “70”
5) “v3”
6) “80”
7) “v4”
8) “90”

ZREVRANGE / zrevrange

ZREVRANGE 和 ZRANGE 功能基本一致,不同的是 ZREVRANGE 是反着来的,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
127.0.0.1:6379> ZREVRANGE k1 0 3
1) “v5”
2) “v4”
3) “v3”
4) “v2”
127.0.0.1:6379> ZREVRANGE k1 0 3 withscores
1) “v5”
2) “100”
3) “v4”
4) “90”
5) “v3”
6) “80”
7) “v2”
8) “70”

ZCARD / zcard

ZCARD 命令可以返回 key 的有序集元素个数。如下:

1
2
127.0.0.1:6379> ZCARD k1
(integer) 5

ZCOUNT / zcount

ZCOUNT 命令可以返回有序集 key 中,score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员。如下:

1
2
127.0.0.1:6379> ZCOUNT k1 60 90
(integer) 4

如果在统计时,不需要包含 60 或者 90 ,则添加一个 ( 即可,如下:

1
2
127.0.0.1:6379> ZCOUNT k1 60 (90
(integer) 3

ZRANGEBYSCORE / zrangebyscore

ZRANGEBYSCORE 命令可以按照 score 范围范围元素,加上 withscores 可以连 score 一起返回。如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
127.0.0.1:6379> ZRANGEBYSCORE k1 60 80
1) “v1”
2) “v2”
3) “v3”
127.0.0.1:6379> ZRANGEBYSCORE k1 60 80 withscores
1) “v1”
2) “60”
3) “v2”
4) “70”
5) “v3”
6) “80”
127.0.0.1:6379> ZRANGEBYSCORE k1 (60 80 withscores
1) “v2”
2) “70”
3) “v3”
4) “80”

ZRANK / zrank

ZRANK 命令可以返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。排名以 0 为底,即 score 值最小的成员排名为 0 。如下:

1
2
3
4
127.0.0.1:6379> ZRANK k1 v1
(integer) 0
127.0.0.1:6379> ZRANK k1 v2
(integer) 1

ZREVRANK / zrevrank

ZREVRANK 和 ZRANK 命令功能基本一致,不同的是,ZREVRANK 中的排序是从大到小:

1
2
3
4
127.0.0.1:6379> ZREVRANK k1 v1
(integer) 4
127.0.0.1:6379> ZREVRANK k1 v2
(integer) 3

ZINCRBY / zincrby

ZINCRBY 命令可以为有序集 key 的成员 member 的 score 值加上增量 increment 。如果 key 中不存在 member ,就在 key 中添加一个 member ,score 是 increment(就好像它之前的 score 是0.0)。如果 key 不存在,就创建一个只含有指定 member 成员的有序集合:

1
2
3
4
5
127.0.0.1:6379> ZINCRBY k1 3 v1
“63”
127.0.0.1:6379> ZRANGE k1 0 0 withscores
1) “v1”
2) “63”

ZINTERSTORE / zinterstore

ZINTERSTORE 命令可以计算给定的 numkeys 个有序集合的交集,并且把结果放到 destination 中。 在给定要计算的 key 和其它参数之前,必须先给定 key 个数( numberkeys )。该命令也可以在执行的过程中给原 score 乘以 weights 后再求和,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
127.0.0.1:6379> ZADD k2 2 v1
(integer) 1
127.0.0.1:6379> ZADD k2 3 v2
(integer) 1
127.0.0.1:6379> ZADD k2 4 v3
(integer) 1
127.0.0.1:6379> ZADD k3 9 v2
(integer) 1
127.0.0.1:6379> ZADD k3 10 v3
(integer) 1
127.0.0.1:6379> ZADD k3 11 v4
(integer) 1
127.0.0.1:6379> ZINTERSTORE k4 2 k2 k3
(integer) 2
127.0.0.1:6379> ZRANGE k4 0 -1 withscores
1) “v2”
2) “12”
3) “v3”
4) “14”
127.0.0.1:6379> ZINTERSTORE k5 2 k2 k3 weights 3 1
(integer) 2
127.0.0.1:6379> ZRANGE k5 0 -1 withscores
1) “v2”
2) “18”
3) “v3”
4) “22”

ZREM / zrem

ZREM 命令可以从集合中弹出一个元素,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
127.0.0.1:6379> ZRANGE k2 0 -1 withscores
1) “v1”
2) “2”
3) “v2”
4) “3”
5) “v3”
6) “4”
127.0.0.1:6379> ZREM k2 v1
(integer) 1
127.0.0.1:6379> ZRANGE k2 0 -1 withscores
1) “v2”
2) “3”
3) “v3”
4) “4”

ZLEXCOUNT / zlexcount

ZLEXCOUNT 命令用于计算有序集合中指定成员之间的成员数量。如下:

1
2
3
4
127.0.0.1:6379> ZLEXCOUNT k2 – +
(integer) 2
127.0.0.1:6379> ZLEXCOUNT k2 [v2 [v4
(integer) 2

注意:可以用 – 和 + 表示得分最小值和最大值,如果使用成员名的话,一定要在成员名之前加上 [ 。

ZRANGEBYLEX / zrangebylex

ZRANGEBYLEX 返回指定成员区间内的成员,按成员字典正序排序, 分数必须相同。如下:

1
2
3
4
5
6
7
127.0.0.1:6379> ZRANGEBYLEX k2 [v2 [v4
1) “v2”
2) “v3”
127.0.0.1:6379> ZRANGEBYLEX k2 – +
1) “v2”
2) “v3”
127.0.0.1:6379>

注意 min 和 max 参数的写法和 ZLEXCOUNT 一致。

如本文“对您有用”,欢迎随意打赏作者,让我们坚持创作!

0 打赏
Enamiĝu al vi
不要为明天忧虑.因为明天自有明天的忧虑.一天的难处一天当就够了。
543文章 68评论 292点赞 582257浏览

随机文章
Redis—StringRedisTemplate和RedisTemplate
5年前
SpringBoot—通过CORS解决跨域问题
5年前
MyBatis—一对多和多对一处理(另一个参考)
5年前
Kotlin—String的常用方法
4年前
SpringBoot—过滤器注册方式
5年前
博客统计
  • 日志总数:543 篇
  • 评论数目:68 条
  • 建站日期:2020-03-06
  • 运行天数:1904 天
  • 标签总数:23 个
  • 最后更新:2024-12-20
Copyright © 2025 网站备案号: 浙ICP备20017730号 身体没有灵魂是死的,信心没有行为也是死的。
主页
页面
  • 归档
  • 摘要
  • 杂图
  • 问题随笔
博主
Enamiĝu al vi
Enamiĝu al vi 管理员
To be, or not to be
543 文章 68 评论 582257 浏览
测试
测试
看板娘
赞赏作者

请通过微信、支付宝 APP 扫一扫

感谢您对作者的支持!

 支付宝 微信支付