【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知
set 集合,hash 哈希,zset 有序集合初步认知
set 集合
set 集合里面的数据是不能重读的
- SADD key member [member ...]
向 set 集合中添加元素
- SMEMBERS key
查看集合中的所有元素
- SISMEMBER key member
查看某一个数据是否在集合中
- SCARD key
查看集合数据的个数,也就是集合的长度
- SREM key member [member ...]
移除集合中指定的元素
127.0.0.1:6379> sadd myset "hello"
(integer) 1
127.0.0.1:6379> sadd myset "wolrd" "xiaomotong"
(integer) 2
127.0.0.1:6379> SMEMBERS myset
1) "wolrd"
2) "xiaomotong"
3) "hello"
127.0.0.1:6379> SISMEMBER myset hello
(integer) 1
127.0.0.1:6379> SCARD myset
(integer) 3
127.0.0.1:6379> SREM myset wolrd
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "xiaomotong"
2) "hello"
- SRANDMEMBER key [count]
随机获取集合里面的数据,可以指定个数
127.0.0.1:6379> sadd myset "v1" "v2" "v3" "v4"
(integer) 4
127.0.0.1:6379> SMEMBERS myset
1) "v4"
2) "xiaomotong"
3) "v1"
4) "v2"
5) "hello"
6) "v3"
127.0.0.1:6379> SRANDMEMBER myset
"v2"
127.0.0.1:6379> SRANDMEMBER myset
"xiaomotong"
127.0.0.1:6379> SRANDMEMBER myset 2
1) "v4"
2) "v1"
127.0.0.1:6379>
127.0.0.1:6379> SRANDMEMBER myset 2
1) "xiaomotong"
2) "v1"
- SPOP key [count]
随机删除集合中的任意元素
127.0.0.1:6379> SMEMBERS myset
1) "v4"
2) "xiaomotong"
3) "v1"
4) "v2"
5) "hello"
6) "v3"
127.0.0.1:6379> SPOP myset
"v2"
127.0.0.1:6379> SMEMBERS myset
1) "v4"
2) "xiaomotong"
3) "v1"
4) "hello"
5) "v3"
127.0.0.1:6379> SPOP myset
"v4"
127.0.0.1:6379> SMEMBERS myset
1) "xiaomotong"
2) "v1"
3) "hello"
4) "v3"
- SMOVE source destination member
从指定的集合中取出一个元素,放到另外一个集合中
127.0.0.1:6379> SMEMBERS myset
1) "xiaomotong"
2) "v1"
3) "hello"
4) "v3"
127.0.0.1:6379> SMEMBERS myset
1) "xiaomotong"
2) "v1"
3) "hello"
4) "v3"
127.0.0.1:6379> SMOVE myset newset v1
(integer) 1
127.0.0.1:6379> SMEMBERS newset
1) "v1"
127.0.0.1:6379> SMEMBERS myset
1) "xiaomotong"
2) "hello"
3) "v3"
- SUNION key [key ...]
取并集,对两个集合取并集
- SINTER key [key ...]
取交集,对两个集合取交集
127.0.0.1:6379> SMEMBERS myset
1) "xiaomotong"
2) "hello"
3) "v3"
127.0.0.1:6379> sadd newset v3
(integer) 1
127.0.0.1:6379> sadd newset v6 v9
(integer) 2
127.0.0.1:6379> SUNION myset newset
1) "v3"
2) "hello"
3) "xiaomotong"
4) "v1"
5) "v6"
6) "v9"
127.0.0.1:6379> SINTER myset newset
1) "v3"
127.0.0.1:6379>
set 应用场景可以有,多个用户的共同关注,好友推荐,共同的粉丝,功能的爱好等等
hash 哈希
Map 集合,key-map,此时 key-value 是一个集合,本质上和 string 类型没有啥区别,还是一个简单的 key-value 形式
- HSET key field value [field value ...] / HMSET key field value [field value ...]
在 hash key 中添加 1 个或者多个 key-value
- HGET key field
获取 hash 里面的一个 key 对应的 value
- HMGET key field [field ...]
获取 hash 里面的多个 key 对应的 value
- HGETALL key
获取 hash 里面所有的 键值对
127.0.0.1:6379> hset myhash name xiaomotong age 12 hobby play
(integer) 3
127.0.0.1:6379> hget myhash name
"xiaomotong"
127.0.0.1:6379> hmget myhash name age
1) "xiaomotong"
2) "12"
127.0.0.1:6379> hgetall myhash
1) "name"
2) "xiaomotong"
3) "age"
4) "12"
5) "hobby"
6) "play"
- HDEL key field [field ...]
删除 hash 里面的 key,一个或者多个
127.0.0.1:6379> HSET myhash k1 v1 k2 v2 k3 v3
(integer) 3
127.0.0.1:6379> hgetall
(error) ERR wrong number of arguments for 'hgetall' command
127.0.0.1:6379> hgetall myhash
1) "age"
2) "12"
3) "hobby"
4) "play"
5) "k1"
6) "v1"
7) "k2"
8) "v2"
9) "k3"
10) "v3"
127.0.0.1:6379> HDEL myhash k1 k2
(integer) 2
127.0.0.1:6379> HDEL myhash name
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "age"
2) "12"
3) "hobby"
4) "play"
5) "k3"
6) "v3"
- HLEN key
获取 hash 的长度,也就是 key-value 的对数
127.0.0.1:6379> HLEN myhash
(integer) 3
- HINCRBY key field increment
在集合中的某个 key 上增加值,若值是正数,则是加,若值是负数则是减
- HSETNX key field value
向 hash 中加入键值对,若不存在则添加,存在则添加失败
127.0.0.1:6379> hset myhash age 12
(integer) 1
127.0.0.1:6379> HINCRBY myhash age 2
(integer) 14
127.0.0.1:6379> HINCRBY myhash age -1
(integer) 13
127.0.0.1:6379> HSETNX myhash name xiaozhu
(integer) 1
127.0.0.1:6379> HSETNX myhash name xiaopangzi
(integer) 0
127.0.0.1:6379> hgetall myhash
1) "age"
2) "13"
3) "name"
4) "xiaopangzi"
hash 的应用场景有,经常变更数据的地方,尤其是一些用户的信息,经常变动的信息
hash 更适合对象的存储,string 更加适合字符串的存储
zset 有序集合
zset 也是集合,只是在 set 的基础上加上了一个值
- ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]
向有序集合中添加 分数 和 值,可以添加多个
- ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
按照分数的顺序排序,-inf 为负无穷,+inf 为正无穷
- ZRANGE key min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]
查看有序集合里面的所有的值
127.0.0.1:6379> ZADD myage 10 xiaoming 8 xiaohong 19 xiaozhu
(integer) 3
127.0.0.1:6379> ZRANGEBYSCORE myage 0 -1
(empty array)
127.0.0.1:6379> ZRANGEBYSCORE myage -inf +inf
1) "xiaohong"
2) "xiaoming"
3) "xiaozhu"
127.0.0.1:6379> ZRANGEBYSCORE myage -inf +inf withscores
1) "xiaohong"
2) "8"
3) "xiaoming"
4) "10"
5) "xiaozhu"
6) "19"
127.0.0.1:6379> ZRANGEBYSCORE myage -inf 10
1) "xiaohong"
2) "xiaoming"
127.0.0.1:6379> ZRANGE myage 0 -1
1) "xiaohong"
2) "xiaoming"
3) "xiaozhu"
- ZREM key member [member ...]
删除有序集合里面的数据
127.0.0.1:6379> ZREM myage xiaoming
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE myage -inf +inf withscores
1) "xiaohong"
2) "8"
3) "xiaozhu"
4) "19"
- ZREVRANGE key start stop [WITHSCORES]
对有序集合从大到小排序
127.0.0.1:6379> ZADD myage 7 xiaohe 17 xiaoliu 14 huhu
(integer) 3
127.0.0.1:6379> ZRANGE myage 0 -1
1) "xiaohe"
2) "xiaohong"
3) "huhu"
4) "xiaoliu"
5) "xiaozhu"
127.0.0.1:6379> ZRANGEBYSCORE myage -1 20
1) "xiaohe"
2) "xiaohong"
3) "huhu"
4) "xiaoliu"
5) "xiaozhu"
127.0.0.1:6379> ZRANGEBYSCORE myage -1 20 withscores
1) "xiaohe"
2) "7"
3) "xiaohong"
4) "8"
5) "huhu"
6) "14"
7) "xiaoliu"
8) "17"
9) "xiaozhu"
10) "19"
127.0.0.1:6379> ZREVRANGE myage 0 -1
1) "xiaozhu"
2) "xiaoliu"
3) "huhu"
4) "xiaohong"
5) "xiaohe"
其余的 api 我们可以到 redis 官网上去进行学习和实践,可以查看 redis 官方的中文文档,http://www.redis.cn/
zset 的应用场景有:
set 排序,存储班级成绩信息,工资信息等等,用于排序和筛选的
带有权重的数据或者消息,排行榜的实现等等
欢迎点赞,关注,收藏
朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力
好了,本次就到这里
技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。
我是小魔童哪吒,欢迎点赞关注收藏,下次见~
相关文章
- java set 排序的_Set集合排序
- 优化优化Redis集合性能,提升效率(redis集合性能)
- 批量提升Redis性能:使用批处理命令(redis批处理命令)
- 红色分布式内存:Redis 集群扩展(redis集群扩展)
- Redis数据类型set详解(redis数据类型set)
- 数据如何使用Redis获取高性能的集合数据(redis获取集合)
- 微信小程序实现Redis连接新技术的开启(微信小程序连接redis)
- 用Redis存储数据实现巨大的提升(往redis里set数据)
- 红米Redis缓存时间届满,怎么应对(红米redis缓存过期)
- 深入浅出查看Redis中的集合数据(查看redis集合数据)
- 探索查看Redis进程的秘密(查redis的进程)
- 清空项目如何清理Redis缓存(清除项目中redis缓存)
- 替换Redis数据库实现更高效的性能(替换redis数据库)
- 数据库Redis一种快速高效的存储方案(数据库redis是啥意思)
- 红色随机Redis 的Set类型(set 随机 redis)
- 简洁结构 小规模Redis实现(如何实现简化版redis)
- 部署大型Redis数据库,推动企业数据发展(大型redis数据库)
- 重塑Redis Set,实现进一步发挥功能(修改redis set)
- 在Redis中添加集合实现快速高效的数据存储(在redis里面添加集合)
- Redis如何限制集合数量(redis集合限制数量)
- Redis集合的查询大招到底是什么(redis集合查询命令)
- 清空记忆Redis中的集合数据为空(redis集合数据为空)
- Redis中存储JSON的集合方式(redis集合存json)
- 使用Redis集合存储中文数据(redis 集合 中文)
- Redis驱动以队列方式轻松生成订单(redis队列生成订单)
- Redis实现多节点选择一种新的折中方案(redis选择槽)
- 基于Redis的连接审计实践(redis连接审计)
- 选择Redis缓存存集合让存储更简单(redis缓存存集合)