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:将集合中的元素根据顺序进行倒序排列
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值