前言
上篇文章我们学习了redis的前两大类型String和List。尽管在日常开发中这已经足够开发使用了,但是这对于我们redis学习人员来说,并不能说是真正的深入学习,所以我们下面就简单介绍一下后三种类型。
一、Set
redis中的Set和Java基础中的很类似,set中的值是不能重复的、无序不重复集合。所以这一大特性也是Set作为一种独特的类型来实现某些功能的有点。
Set和List很类似,Set集合的命令是以S开头的,所以就是说 我们只要在String学习中基本熟悉命令,就可以快速学习其他类型。
sadd set member 往set中添加元素
smemebers set 查看set中的所有值
sismember set member 判断set中是否存在这个value
(返回1表示存在 返回0表示不存在)
scard set 获取set集合中的元素个数
srem set member 移除set中的某个元素
srandmember set acount 从set中随机抽选元素 (acount表示数量)
spop set 随机移除一个元素
smove source destination member
将原set集合中的元素移动到另一个set集合
同时,如果我们要实现类似数学上的交集并集补集等功能,也可以使用Set来实现。比如说,两个用户的共同好友,就可以使用Set可以求两个用户的好友的交集来实现。
数字集合类:
sdiff set1 set2 查找两个集合中的不同的元素 (差集)
sinter set1 set2 查找两个集合中的相同元素 (交集)
sunion set1 set2 查找两个集合中的所有元素(并集)
二、Hash
Hash类型就相当于Java类型中的Map集合,也是使用键值对(key–value)的方式来进行存储数据,类似的,Hash类型的命令是以H开头的命令。
hset hash field value 给hash中的元素赋值(一个具体的key-value)
gset hash field 取出hash中对应字段的值
hmset hash field value[field value...] set多个 key-value
hmget hash field [field...] 获取多个字段值
hgetall hash 获取hash全部的值
hash本质和string类型没有太大的区别
hdel hash field[field...]
删除hash指定的key字段对应的一个或多个字段值
hlen hash 获取hash的长度
hexists hash field判断hash中的指定字段是否存在
hkeys hash 获取hash中所有的key
hvalues hash 获取hash中所有的value
hincrby hash field increment
给指定的字段自增 (increment 自增的数量)
hdecrby hash field increment
给指定的字段自减 (increment 自减的数量)
hsetnx hash field value 如果不存在就创建、如果存在就创建不成功
对于Hash来说,redis的应用是更适合信息经常变动的对象,例如我们可以把用户的常用信息,比如昵称、头像等存到数据库中。
三、ZSet
Zset和Set同处一源,但是Zset是一个有序集合,而Set是无序的集合,当然,Zset的命令是以z开头的。
zadd zset score member
往zset集合中添加一个元素(score是标志,标志顺序)
zadd zset score member[...] 往zset集合中添加多个元素
zrange zset 0 -1 获取zset中所有的值
zrangebyscore zset min max
将zset集合中的元素按照范围中的最大最小值排序
zrangebyscore zset -inf +inf
将zset集合中的元素全部排列出来(从小到大)
zrangebyscore zset -inf +inf withsocres
将zset集合中的所有元素带着数值排列出来
zrem zset member[member...]
移除zset集合中的一个或多个元素
zcard zset 获取有序集合中元素的个数
zrevrange zset start stop
zrevarange zset 0 -1 从大到小进行排序
zcount zset min max 获取指定区间中元素的个数
四、总结
以上三种Set、Hash、Zset就是五大数据类型中的后三种,加上之前学的两种,至此五大类型学习完成。
|