redis学习笔记

string-----
redis的string类型是二进制安全的,也就是说redis的string类型的val可以保存任意字符,包括二进制。所以说redis的string类型可以保存图片或序列化对象等信息。从内部实现来看,redis中string类型的值可以看作是一个byte数组。最大上限是1G字节。

这里可以得出一个关系,如果只看redis的string类型数据时,可以把redis看作一个有持久化特性的memcached。

hash-----
redis hash时一个string类型的field和value的映射表。hash特别适合用于存储对象。

hset myhash key val
hget myhash key
hincrby myhash key 5
hdel myhash key
hkeys myhash
hvals myhash
hgetall myhash

list----
redis的list类型其实就是一个每个子元素都是string类型的双向链表。链表的最大长度时2的32次方。我们可以用push和pop操作从链表的头部或者尾部添加删除元素。这使得redis里面的list同时具有栈和队列的特点,既可以当作栈用又可以当作队列使用。

set----
set是string类型元素的集合,和我们数学中的集合概念很相似。对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。

sorted sets----
sorted sets是set的一个升级版本,它在set的基础上增加了一个顺序属性。
不同的是,每个元素都会关联一个double类型的score。sorted set的实现是skip list和hash table的混合体。

当元素被添加到集合中时,一个元素到score的映射被添加到hash table中,所以给定一个元素获取score的开销是o(1),另一个score到元素的映射被添加到skip list,并按照score排序,所以就可以有序获取集合中的元素。添加,删除操作开销都是o(log(n)),和skip list的开销一致,redis的skip list实现用的是双向链表,这样就可以逆序从尾部取元素,sorted set最经常的使用方式应该是作为索引来使用,我们可以把要排序的字段作为score存储,对象的id当作元素来存储。

你可能感兴趣的:(redis学习笔记)