【Redis】004-Redis五大数据类型:Set集合、Hash类型、Zset有序集合
程序员文章站
2022-04-02 21:20:58
...
目录
一、Set集合类型详解
1、概述
set集合是无序的;
set集合里面的值是不允许重复的;
set相关命令都是以s开头的;
2、添加元素
格式:
sadd key value
演示:
3、获取set集合的元素
格式:
smembers key
演示:
4、判断某个元素是否存在于某set集合中
格式:
sismember key value
演示:
5、获取set集合中元素的个数
格式:
scard key
演示:
6、移除指定的元素
格式:
srem key value
演示:
7、随机获取set集合中的一个元素
格式:
srandmember key
演示:
8、随机获取指定个数的元素
格式:
srandmember key number
演示:
9、随机移除一个元素(随机移除指定数量的元素)
格式:
spop key (number)
演示:
10、将一个set集合中的指定元素移动到另一个集合里面
格式:
smove key1 key2 value
# key1指的是原集合,key2指的是目标集合,value指的是指定的要移动的元素
演示:
11、set集合的差集、交集、并集
格式:
sdiff key1 key2
# key1 - key2
sinter key1 key2
# key1与key2交集
sunion key1 key2
# key1与key2并集
演示:
二、Hash(哈希)类型详解
1、概述
类似于一个Key-Map集合,key-<key-vlaue>,也是key-vlaue集合,这是value是一个map;
相关操作以h开头;
2、添加和获取值
格式:
hset key field value
# 存
hget key field
# 取
演示:
3、批量添加
格式:
hmset key field1 v1 field2 v2 。。。 以此类推即可
演示:
4、批量获取
格式:
hmget key field1 field2 field3 。。。以此类推即可
演示:
5、获取全部是数据
格式:
hgetall key
演示:
6、删除指定key的字段(对应的value也随之删除)
格式:
hdel key field
演示:
7、获取hash表的字段数量
格式:
hlen key
演示:
8、判断hash中的指定字段是否存在
格式:
hexists key field
演示:
9、获取hash的所有字段
格式:
hkeys hash
演示:
10、获取hash的所有字段
格式:
hvals key
演示:
11、自增、自减
格式:
hincrby key field num
# 自增num为正数,自减num为负数
演示:
12、如果不存在则添加(类似String字符串)
格式:
hsetnx key field value
演示:
13、使用场景
变更数据,name,age,sex等等;
hash更适合存储对象;
String更适合字符串存储;
例如:
三、Zset(有序集合)
1、概述
在set的基础上增加了一个值,set k1 v1 zset k1 score1 v1;
命令以z开头;
2、添加、获取
127.0.0.1:6379> zadd zset 1 hello # 添加一个元素
(integer) 1
127.0.0.1:6379> zadd zset 2 zibo 3 world 4 dog # 添加多个元素
(integer) 3
127.0.0.1:6379> zrange zset 0 -1 # 获取所有元素
1) "hello"
2) "zibo"
3) "world"
4) "dog"
3、排序
127.0.0.1:6379> zrangebyscore zset -inf +inf # 按照score排序,从负无穷到正无穷
1) "hello"
2) "zibo"
3) "world"
4) "dog"
4、附带信息的排序
127.0.0.1:6379> zrangebyscore zset -inf +inf withscores
1) "hello"
2) "1"
3) "zibo"
4) "2"
5) "world"
6) "3"
7) "dog"
8) "4"
5、降序排序
127.0.0.1:6379> zrevrangebyscore zset +inf -inf withscores
1) "dog"
2) "4"
3) "world"
4) "3"
5) "zibo"
6) "2"
7) "hello"
8) "1"
6、移除指定元素
127.0.0.1:6379> zrange zset 0 -1
1) "hello"
2) "zibo"
3) "world"
4) "dog"
127.0.0.1:6379> zrem zset zibo
(integer) 1
127.0.0.1:6379> zrange zset 0 -1
1) "hello"
2) "world"
3) "dog"
7、获取zset集合的元素数量
127.0.0.1:6379> zcard zset
(integer) 3
8、统计存于一个范围的元素的数量
127.0.0.1:6379> zrange zset 0 -1
1) "hello"
2) "zibo"
3) "world"
4) "dog"
127.0.0.1:6379> zrem zset zibo
(integer) 1
127.0.0.1:6379> zeange zset 0 -1
(error) ERR unknown command 'zeange'
127.0.0.1:6379> zrange zset 0 -1
1) "hello"
2) "world"
3) "dog"
127.0.0.1:6379> zcard zset
(integer) 3
127.0.0.1:6379> zcount zset 2 4
(integer) 2
127.0.0.1:6379>
9、备注
其他的api,可以到官网去查看;
10、应用思路
班级成绩、公司工资排序;
带权重的消息;
排行榜;