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中的某个指定的键对应的值加上一个数字

 

posted @ 2021-01-28 15:19  java小新人  阅读(1154)  评论(0编辑  收藏  举报