概述

Redis是一种可基于内存也可持久化的日志型、key-value数据库,所以我们说的Redis支持的五中类型数据是指value的数据类型。五种数据类型:字符串(String)、列表类型(List)、集合类型(Set)、有序集合类型(SortedSet)、散列类型(Hash)。

一、字符串(String)

字符串类型是redis最基本数据类型,可以储存普通字符串、二进制数据、文件、图片或者json串,比如:对象序列化以后可以储存在redis中。

主要操作命令(incr操作是原子性)

redis list 元素是否存在 redis list类型_列表

二、列表类型(list)

列表类型是存储一个有序的字符串(value)列表,常用的操作是向列表的两端(头尾)添加、删除、获取元素,或者获取某个片段,Redis实现列表的数据结构是基于双向链表,所以列表两端新增、删除元素时间复杂度是O(1),获取的元素越接近两端就越快,通过索引访问比较慢。所以列表很适合用于评论功能、新鲜事、记录日志等功能。可以理解为是一个双向队列

 

主要操作

redis list 元素是否存在 redis list类型_列表_02

针对于lpush、rpush、lpop、rpop操作,lpush、lpop(或者rpush、rpop)搭配实现后进先出(栈),lpush、rpop(rpush、lpop)搭配实现的先进先出(队列)。

redis list 元素是否存在 redis list类型_数据类型_03

删除value元素操作:lrem key count value,

count是一个整数类型:

count > 0表示从列表的左边开始删除前count个元素为value;

count < 0表示从列表的右边开始删除前count个元素为value;

count = 0表示删除所有

三、集合类型(set)

集合类型是存储多个字符串是无序的,并且元素(member)不可以重复。多个集合可以进行交集、并集、差集等操作。数据结构是基于哈希表实现。应用场景比如求两个人的关系,可以把两人认识的人放在两个集合,然后计算集合分析是否有关系;比如微博相互是否相互关注。

命令:

redis list 元素是否存在 redis list类型_集合_04

创建两个结合myset:1 和 myset:2

redis list 元素是否存在 redis list类型_redis_05

差集运算、并把结果储存(注意差集以第一个集合为主集合):

redis list 元素是否存在 redis list类型_集合_06

redis list 元素是否存在 redis list类型_集合_07

交集运算、并把结果储存:

redis list 元素是否存在 redis list类型_集合_08

redis list 元素是否存在 redis list类型_列表_09

 

并集运算、并把结果储存:

redis list 元素是否存在 redis list类型_redis list 元素是否存在_10

redis list 元素是否存在 redis list类型_列表_11

四、有序集合(SortedSet)

有序集合是在集合基础上增加排序功能,每个元素也是唯一的不可以重复,每个元素(member)都会关联一个double类型的分数(score),根据score从小到大排序。数据结构是基于哈希表实现

命令:

redis list 元素是否存在 redis list类型_redis list 元素是否存在_12

获取某个范围排序的元素

redis list 元素是否存在 redis list类型_列表_13

五、散列类型(Hash)

散列类型是采用字典结构(key-value)。散列适合存储对象,以对象的类型加唯一id作为键值,然后属性名称为key值,属性的值为value值。

命令如下:

redis list 元素是否存在 redis list类型_redis_14

赋值

redis list 元素是否存在 redis list类型_redis_15

取值

redis list 元素是否存在 redis list类型_集合_16

如果键值不存在则创建保存,存在则不操作

redis list 元素是否存在 redis list类型_集合_17

其他

判断键是否存在:exsits key

redis list 元素是否存在 redis list类型_集合_18

匹配键值:keys pattern(正则表达式)

redis list 元素是否存在 redis list类型_redis_19

删除键:del key

redis list 元素是否存在 redis list类型_集合_20

获取键类型:type key

redis list 元素是否存在 redis list类型_列表_21