不扯虚的,Redis是一种非关系型数据库(NoSQL)。简单的说Redis是一种key-value型数据库,其中value有以下5种基本类型,String、Hash、List、Set、SortedSet。下面会一一来简单介绍。”
什么叫非关系型数据库(面试被问过,现在划重点)?关系型数据库是有行有列的,其中每一列都是相同的属性字段,所以叫关系型数据库。非关系型数据库就是一行行记录,每一条记录没有关系(或者叫没有相同属性)。
01
—
String类型
设置
比如设置key为key1,Value值为Value1,设置成功返回OK。
如果想要设置多个Key值,可以使用mset命令。
获取
通过key,获取值。这里使用get命令。
如果想要获取多个值,可以使用mget命令。
删除
删除使用del命令,根据key删除这个值。
删除后,再次去查询这个Key,返回nil代表空。
自增
当Value为整数数据时,才能使用以下命令操作数值的增减。
此外还可以使用incrby命令,每次增加指定的数值。
02
—
Hash类型
Hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。
设置
一次设置一个值,语法:HSET key field value
一次设置多个值,语法:HMSET key field value[field value ...]
取值
一次性取一个值,语法:HGET key field
一次性获取多个值,语法:HMGET key field [field ...]
获取所有字段值,语法:HGETALL key
删除
删除每次删除一个或几个字段,语法:HDEL key field [field ...]
03
—
List类型
Redis的列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。
列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。
添加
向list左侧添加元素,语法:LPUSH key value [value ...]
向list右侧添加元素,语法:RPUSH key value [value ...]
查看
LRANGE命令是列表类型最常用的命令之一,获取列表中的某一片段。语法:LRANGE key start stop
弹出元素
从左侧弹出元素,语法:LPOP key
从右侧弹出元素,语法:RPOP key
需要注意的是,弹出元素,该元素就不在队列里了。
04
—
Set类型
set类型即集合类型,其中的数据是不重复且没有顺序。Redis还提供了多个集合之间的交集、并集、差集的运算。
增加/删除元素
增加元素,可以一次增加一个或多个,语法为:sadd key[filed1,field2..]
删除元素,可以一次删除一个或多个,语法为:srem key [field1,field2]
查看set中的元素
查看集合中的所有元素,使用smembers命令,语法为smember key
集合运算
运算集合的差价,命令 :SDIFF key [key ...]
运算集合的交集,语法:SINTER key [key ...]
运算集合的并集,语法:SUNIONkey [key ...]
05
—
SortedSet类型
SortedSet是一个排序的集合,叫做zset。
新增
向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。
语法:ZADD key score member [score member ...]
获取元素
如果想获取部分元素,可以使用ZRANGE命令。
语法:ZRANGE key start stop[WITHSCORES]
删除
移除有序集key中的一个或多个成员,不存在的成员将被忽略。
语法:ZREM key member [member ...]
06
—
小结
本文简单介绍了Redis中的5种数据结构,并介绍了一些常用的命令。有些命令本文没有涉及,可以去查询一下用法。至于这几个数据结构的使用场景,后续的文章会介绍到。