redis 支持的各种数据类型

1. String:

      set:

      get:

   decr:

      incr: (自增。可以用来做计数器,如果结合expire可以用来限制在一定时间内,访问次数等; 并且多线程调用incr,可以保证同步)。

      mget:(一次取得多个key的value)

                  (做了一个测试:存了2500个key-value,用mget一次取出用了859毫秒;如果用get去循环取消耗的时间是10分钟,相差悬殊)

2. Hash:

    hget:

    hset:Hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 比如如下代码就是存储一个key为per的人,其age是14, name是jack。

        (这里注意: hset的key和set的key不能相同,否则会抛出异常

 jedis.hset("per","age", "44" );
 jedis.hset("per","name", "jack");

    hgetall:可以把上面的都取出来。

Map<String, String> all = jedis.hgetAll("per");

 Hash的使用场景:

  • 典型应用存储对象信息。string类型也可以实现存对象,对这个对象进行json序列化,然后取的时候再进行反序列化,但是,每次修改的时候只能整体修改,不能单个修改某个属性,且必须有实体类型的支撑。序列化和反序列化也需要消耗服务器性能
  • 一个存储空间保存多个健值对数据
  • 底层使用哈希表结构实现数据存储。

3.List:

  应用广泛:比如微博的关注列表,粉丝列表,消息列表等功能。

  Redis list 的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。

        List可以用来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务

        lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,这个很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西(一页一页的往下走),性能高

  lpush:

  rpush:

  lpop:

  rpop:

  lrange:

jedis.lpush("list","5","4", "8");    // 队头插入元素
jedis.rpush("list","1","3", "9");    // 队尾插入元素
List<String> resu = jedis.lrange("list", 2, 4);    // 读取指定范围的数据

4.Set

  set 对外提供的功能与list类似是一个列表的功能,特殊之处在于 set 是可以自动排重的

  当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。可以基于 set 轻易实现交集、并集、差集的操作

  sadd

  spop

  smembers

 jedis.sadd("set", "4","1","7" ,"2", "3", "9");  // 新建一个set;或者往已存在的set里加数据,会去重
 Set<String> ressfd = jedis.spop("set", 3);       // 注意: 取出的3个数据,是随机的。
 jedis.smembers("set");                          // 取出set的成员

       sunion(并集) / sinter(交集) / sdiff(差集):

 jedis.sadd("set1", "1","2","3");
 jedis.sadd("set2", "3","4","5" );

 Set<String> union = jedis.sunion("set1", "set2");      //  1,2,3,4,5
 Set<String> inter = jedis.sinter("set1", "set2");      //  3
 Set<String> diff = jedis.sdiff("set1", "set2");        //  1,2

5.Sorted Set

        和set相比,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列

  zadd,zrange,zrem,zcard

posted @ 2019-12-26 16:04  刘大飞  阅读(394)  评论(0编辑  收藏  举报