redis数据结构

  最近在项目中用到redis的地方不少,所以决定对redis做一个全面的学习。来记录自己的redis知识点。所以可能一直会更新文章内容。

  Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API(官方介绍)。redis是现在主流的非关系型数据库,而redis的集群redis cluster也是主流分布式缓存的解决方案之一。

首先来了解redis的有哪些数据结构吧,

Redis 数据类型分为:字符串类型、散列类型(哈希类型)、列表类型、集合类型、有序集合类型。

1、=字符串类型

这个比较简单,key里面对应的是字符串类型,string 类型的值最大能存储 512MB,使用场景挺多。

赋值命令:set ydmKey 123

取值命令:get ydmKey "123"

2、散列类型

散列类型也叫哈希类型。和java里面的HashMap差不多。存储在该类型中的对象可以是整型,也可以是字符串。使用场景上可以用来存储对象信息,比如用户信息。命令有所不同。

赋值命令:hset ydmkey name ydm

赋值命令:hset ydmkey age 26

赋值命令:hset ydmkey edu daxue

取值命令:hgetall ydmkey

1) "name"
2) "ydm"
3) "age"
4) "26"
5) "edu"
6) "daxue"

3、列表类型

redis的列表类型list是一个有序的字符串列表。实现的数据结构是一个链表。这个类型使用场景很多,比如可以用来保存博客粉丝列表,也可以保存聊天时的最新消息,还可以实现一个简单的消息队列,而这些都是由于它的数据结构决定的。

命令:lpush ydmtestList y

命令:lpush ydmtestList d

命令:lpush ydmtestList m

命令:lrange ydmtestList 0 10

1) "m"
2) "d"
3) "y"
 

  1. lpush+lpop=Stack(栈)

  2. lpush+rpop=Queue(队列)

  3. lpush+ltrim=Capped Collection(有限集合)

  4. lpush+brpop=Message Queue(消息队列)

4、集合

这里的集合set中最大的特点就是数据是不重复的。当你需要存储一堆不能重复的数据的时候,之前的列表类型list支持不了,而使用set就可以满足你了。Set通常可以用来保存好友的列表。而集合还有取交集,并集和差集的操作,所以也可以使用到我们平时使用的软件中的共同好友上。

常用命令:sadd:添加一个String原色到key对应的set集合中。成功返回1,如果元素已经在集合中返回0,,如果key对应的set不存在则返回错误。

smembers:返回集合中的所有的成员。 不存在的集合 key 被视为空集合。

sunion:返回给定集合的并集。不存在的集合 key 被视为空集。

 

5、有序集合

看名字就知道了这个集合和set的区别在于有序。Sort Set是中Set的基础上添加了一个排序的功能,在添加值的时候多添加一个排序属性score。可以应用在一些排行榜的功能上。排序属性是double类型的。这样在插入数据的时候就可以指定排序了。排序的值可以是一样的。

 

你可能感兴趣的:(redis,redis,缓存)