redis数据类型之set,zset,hash
上一篇说了string和list两种数据类型,现在说说剩下的几种数据类型;
继续敲命令每一个命令,害╮(╯_╰)╭
1.set
这个就类似于java中的Set<Set<T>>,特点是:每一个set中元素无序,而且不能重复
sadd: 没有指定set就创建一个set,然后向其中添加元素
smembers: 遍历指定的set中所有元素
scard: 返回指定set中元素的个数
spop:随机移除set中一个元素,也可以指定数量,一次随机移除多个;这个命令感觉没啥用....
smove:可以让元素在两个set之间移动,注意,下图的newLanguage这个set会自动创建的
srem:删除set中指定的元素
sismember: 判断集合中是否有指定元素
srandmember: 随机返回一个元素,只是返回,不会对set中元素有 任何修改操作
sdiff: 这个命令很容易理解,就是去掉交集,但是不会对原有的set做任何修改,返回的数据是前面的集合为准 ;
注意,可以接多个set,例如sdiff set1 set2 set3,以set1为基准,首先去掉set1和set2的交集,然后去掉set1和set3的交集
sinter: 求交集
sunion: 求并集
2.zset
这个zset和set的区别就是,set中的数据是无序的,而zset中是有序的,就好像jdk中Set和TreeSet一样;
下图中其实和Set差不多,只不过在set中每一个元素中都有一个分数,就像打分一样,我们每丢进去一个元素都要给它打分,然后排序就是根据分数进行排序的
zadd: 常见zset,并给添加的元素打分
zrange: 根据分数进行排序
zrangebyscore: 查找分数在某个区间的所有元素,还可以跟sql一样使用limit进行分页
zcard: 查看集合中元素的个数;
zrank: 返回一个元素在zset中的排名
zrevrank: 返回倒着数的排名
zscore: 查看某个元素的分数
zrem: 删除某个元素
zincrby: 给某个元素加分,通过这个命令可以实现一个排行榜的功能,比如每次给用户的分数加一,然后使用zrange/zrevrange就能获取排行榜
3.hash
hash就当作是java中的Map<String,Map<String,Object>>,
hset: 创建一个hash类型,然后设置键值对
hget: 向指定的hash中获取某个键对应的值
hgetall: 获取指定的hash中所有的键值对
hdel: 删除某个hash中的指定的键值对
hexists: 判断hash中的指定键值对是否存在
hkeys: 获取某个hash中所有的键
hvals: 获取某个hash中所有的值
hmset: 在一个hash中同时设置多个键值对
hmget: 在一个hash中同时取出多个键对应的值
hsetnx: 有指定的键则啥也不变,没有那个键就添加键值对;
hincrby: 给hash中的某个指定的键对应的值加上一个数字