Redis缓存之数据类型

Redis缓存的数据类型:

1、Strings类型及操作:

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

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

用法:hsetuser:001namewangxihong存储

hgetuser:001name获取

3、List类型及操作:

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

栈:先进后出lpush:在key对应list的头部添加字符串元素

lpushmyList"hello"

lpushmyList"world"

lrangemyList0-1//从0取到尾

结果:worldhello

队列:先进先出rpush:在key对应的尾部添加字符串元素

rpushmylist"hello"

rpushmylist"world"

lrangemylist0-1

结果:helloworld

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

linsert:在key对应的list指定的位置(前或后)添加字符串

rpushmylist2"world"//在尾部压入world

linsertmylist2before"world""hello"//在world之前压入hello

lrangemylist20-1//获取从0到尾的所有数据

结果:helloworld

lrem:从key对应的list中删除n个和value相同的元素

rpushmylist"hello"

rpushmylist"world"

lremmylist1"hello"

lrangemylist0-1

结果:world

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

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

4、Set类型及操作:

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

sadd:向名称为key的集合set中添加元素

saddmyset"hello"

srem:删除名称为key的set中的元素

sremmyset"hello"

spop:随机删除并返回一个集合中元素

spopmyset

sdiff:返回所有给定key与第一个key的差集

sdiffmyset1myset2//取集合myset1和myset2的差集,返回在myset1中存在但在myset2中不存在的所有数据。

sdiffstore:返回给定key与第一个key的差集,并将结果另外存储到一个key中

sdiffstoremyset3myset1myset2//将myset1和myset2的差集返回并存储到myset3中。

sinter:返回所有集合的交集

sintermyset1myset2//返回两个集合的交集

sinterstore:返回两个集合交集,并存储到另外一个集合中。

sunionstore:返回所有给定集合的并集,并存储到另一个集合中

sunionstoremyset3myset1myset2

smove:从第一个key对应的集合中移除member并添加到第二个集合中

smovemyset2myset3three//将three从myset2中删除并添加到myset3中。

5、sortedsets类型及操作:

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

zadd:向名称为key的zset中添加元素member,score用于排序。如果改元素存在,则更新其顺序。

zaddmyset1"hello"

zaddmyset2"world"

zaddmyset3"world"

zrangemyset0-1withscores//输出集合元素(带顺序序号)

结果:"hello""1""world""3"

zrem:删除有续集和中的元素

zremmysethello//删除myset中的hello元素

zrange:将集合中的元素根据顺序进行升序排列

zrangemyset0-1withscores

zrevrange:将集合中的元素根据顺序进行倒序排列

相关推荐