概述
Redis是一种可基于内存也可持久化的日志型、key-value数据库,所以我们说的Redis支持的五中类型数据是指value的数据类型。五种数据类型:字符串(String)、列表类型(List)、集合类型(Set)、有序集合类型(SortedSet)、散列类型(Hash)。
一、字符串(String)
字符串类型是redis最基本数据类型,可以储存普通字符串、二进制数据、文件、图片或者json串,比如:对象序列化以后可以储存在redis中。
主要操作命令(incr操作是原子性)
二、列表类型(list)
列表类型是存储一个有序的字符串(value)列表,常用的操作是向列表的两端(头尾)添加、删除、获取元素,或者获取某个片段,Redis实现列表的数据结构是基于双向链表,所以列表两端新增、删除元素时间复杂度是O(1),获取的元素越接近两端就越快,通过索引访问比较慢。所以列表很适合用于评论功能、新鲜事、记录日志等功能。可以理解为是一个双向队列
主要操作
针对于lpush、rpush、lpop、rpop操作,lpush、lpop(或者rpush、rpop)搭配实现后进先出(栈),lpush、rpop(rpush、lpop)搭配实现的先进先出(队列)。
删除value元素操作:lrem key count value,
count是一个整数类型:
count > 0表示从列表的左边开始删除前count个元素为value;
count < 0表示从列表的右边开始删除前count个元素为value;
count = 0表示删除所有
三、集合类型(set)
集合类型是存储多个字符串是无序的,并且元素(member)不可以重复。多个集合可以进行交集、并集、差集等操作。数据结构是基于哈希表实现。应用场景比如求两个人的关系,可以把两人认识的人放在两个集合,然后计算集合分析是否有关系;比如微博相互是否相互关注。
命令:
创建两个结合myset:1 和 myset:2
差集运算、并把结果储存(注意差集以第一个集合为主集合):
交集运算、并把结果储存:
并集运算、并把结果储存:
四、有序集合(SortedSet)
有序集合是在集合基础上增加排序功能,每个元素也是唯一的不可以重复,每个元素(member)都会关联一个double类型的分数(score),根据score从小到大排序。数据结构是基于哈希表实现
命令:
获取某个范围排序的元素
五、散列类型(Hash)
散列类型是采用字典结构(key-value)。散列适合存储对象,以对象的类型加唯一id作为键值,然后属性名称为key值,属性的值为value值。
命令如下:
赋值
取值
如果键值不存在则创建保存,存在则不操作
其他
判断键是否存在:exsits key
匹配键值:keys pattern(正则表达式)
删除键:del key
获取键类型:type key