Redis缓存之数据类型

Redis缓存的数据类型:

   1、 Strings类型及操作:
        String是最简单的类型,一个Key对应一个Value,String类型是二进制安全的,Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。

  2、 Hash是string类型的field和value的映射表,他的添加和删除操作都是0(1)(平均)。hash特别适合用于存储对象,相较于对象的每个字段存成单个的String类型。将一个对象存储在hash类型中会占用更少的内存,并且可以方便存取整个对象。
        用法:hset user:001 name wangxihong 存储
              hget user:001 name            获取

  3、 List类型及操作:
        List是一个链表结构,主要功能就是push、pop、获取一个范围的所有值,操作中key可以理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素。这样list既可以作为栈又可以作为队列。

    栈:先进后出   lpush:在key对应list的头部添加字符串元素
    lpush myList "hello"
    lpush myList "world"         
    lrange myList  0 -1         //从0取到尾

    结果:world  hello

    队列:先进先出   rpush:在key对应的尾部添加字符串元素
    rpush mylist "hello"
    rpush mylist "world"
    lrange mylist 0 -1
   
    结果:hello world

    -------------------

    linsert:在key对应的list指定的位置(前或后)添加字符串
    rpush mylist2 "world"                       //在尾部压入world
    linsert mylist2  before "world" "hello"     //在world之前压入hello
    lrange mylist2 0 -1                         //获取从0到尾的所有数据
   
    结果:hello world
  
    lrem:从key对应的list中删除n个和value相同的元素
    rpush mylist "hello"
    rpush mylist "world"
    lrem mylist 1 "hello"
    lrange mylist 0 -1
  
    结果:world

    lpop:从头删除一个元素,并返回删除的值
    rpop:从尾删除一个元素,并返回删除的元素

    4、Set类型及操作:
        Set是集合,他是string类型的无序集合。set是通过hash table实现的添加、删除和查找的复杂度都是0(1),对集合我们可以获取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐(取差集)和blog的tag功能。
        sadd:向名称为key的集合set中添加元素
             sadd myset "hello"
        srem:删除名称为key的set中的元素
             srem myset "hello"
        spop:随机删除并返回一个集合中元素
             spop myset
        sdiff:返回所有给定key与第一个key的差集
             sdiff myset1 myset2      //取集合myset1和myset2的差集,返回在myset1中存在但在myset2中不存在的所有数据。
        sdiffstore:返回给定key与第一个key的差集,并将结果另外存储到一个key中
             sdiffstore myset3 myset1 myset2  //将myset1和myset2的差集返回并存储到myset3中。

        sinter:返回所有集合的交集
             sinter myset1 myset2       //返回两个集合的交集
        sinterstore:返回两个集合交集,并存储到另外一个集合中。

        sunionstore:返回所有给定集合的并集,并存储到另一个集合中
             sunionstore myset3 myset1 myset2
       
        smove:从第一个key对应的集合中移除member并添加到第二个集合中
             smove myset2 myset3 three         //将three从myset2中删除并添加到myset3中。


   5、 sorted sets类型及操作:
        sorted set是set的一个升级版本,它在set的基础上增加一个顺序属性,这一属性在修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。

        zadd:向名称为key的zset中添加元素member,score用于排序。如果改元素存在,则更新其顺序。
            zadd myset 1 "hello"    
            zadd myset 2 "world"
            zadd myset 3 "world"
            zrange myset 0 -1 withscores     //输出集合元素(带顺序序号)
            结果:"hello" "1" "world" "3"
        zrem:删除有续集和中的元素
            zrem myset hello               //删除myset中的hello元素
        zrange:将集合中的元素根据顺序进行升序排列
            zrange myset 0 -1 withscores
        zrevrange:将集合中的元素根据顺序进行倒序排列

              

猜你喜欢

转载自wangxinhong4468.iteye.com/blog/2214021