您的位置:首页 > 数据库 > Redis

Nosql数据库——redis(四)数据类型

2015-09-29 21:44 435 查看
  上篇博客介绍了两种数据类型string和hash,下面我们接着来看~

 1.      List类型

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

  栈和队列的含义:队列是先进先出,而栈是先进后出。

  演示几个比较重要的操作(在window环境下进行的操作):

  Lpush:在key对于的list头部添加字符串元素。(是体现的栈)

  Rpush: 在key对于的list头部添加字符串元素(是体现队列)。






  Lrange 0 -1默认从头部取到尾部(从尾到头为向上的方向),如图所示:






  Linsert:在key对应的特定位置前或者后添加字符串。

  Lset:设置list中指定下标的元素值。






  Lrem:从key对于的list中删除n个和value相同的元素。(n<0从尾删除,n=0全部删除)

  Ltrim保留指定范围内的数据。






  Lpop是从头弹出元素而rpop是从尾弹出元素。



  rpoplpush:从第一个list的尾部进行弹出并且添加到第二个的头部。

  Lindex:返回名称为key的list中index位置的元素。Key均为索引。

  Llen:返回key对于list长度。

 2.      Set类型

  Redis的Set是string类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。

  好友推荐就是取的好友中的差集比如qq中你有的好友我没有,但是我们互加好友就可以拥有。

  Sadd:向名称为key的set中添加元素。相同元素无法插入,因为集合中不存在重复元素值,smembers是查看元素。

0表示是无法插入的,1表示插入成功。






  Srem:删除元素,删除名称为key的set中的元素。






  Spop:(随机)lpop是从头,rpop是从尾,而spop是随机的,因为集合是无序的,不再演示。

  Sdiff:返回所有给定key与第一个key的差集。谁在前面以谁为标准。(sdiffmyset myset1)Sdiffstore,表示返回差集并且存储到一个新的set中去,(sdiff mysetmyset1 myset2(存储差集集合))

  Sinter是交集,Sinterstore,取出交集并且存储到一个集合中,与差集的获取存储一样,只是这里是交集。Sunion是并集,sunionstore是求出并集并且存储到一个集合中。

  Smove:从第一个key对应的set中移除member并且添加到第二个对应的set中。(smove myset myset1“hello”)

  Scard:返回名称为key的set的元素个数。

  Sismember:测试member是否为名称为key的set的元素。

  Srandmember:随机返回名称为key的set的一个元素,但不删除元素。

 3.      Sorted set 有序集合

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

  Zadd:有序添加,不同于set,这里会有一个顺序值。






  Zrem是删除元素,删除名称为key的zset的元素member。不再演示,同与set相同。

  Zincrby:自增属性,与string类型中一样,不再赘述。

  Zrank:返回名称为key的zset中元素的排名,按照score从小到大,也就是下标。Zrevrank,反转,按照score从大到小。

  Zrangebyscore:返回指定范围。根据下标返回(Zrangebyscore myset 2 3 withscores)

  Zcount:返回所有的元素及下标。Zcard返回所有元素的个数。

  Zremrangebyrank:根据下标删除再从小到大显示。Rank是根据索引的删除,而score是根据顺序来进行删除。






  到此五种数据类型介绍完毕,你知道了多少呢,动手实践吧~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: