3.Redis常见的5种不同的数据类型详解


数据类型

可以存储的值

操作

STRING

字符串、整数或者浮点数

对整个字符串或者字符串的其中一部分执行操作
对整数和浮点数执行自增或者自减操作

LIST

链表

从两端压入或者弹出元素
读取单个或者多个元素
进行修剪,只保留一个范围内的元素

SET

无序集合

添加、获取、移除单个元素
检查一个元素是否存在于集合中
计算交集、并集、差集
从集合里面随机获取元素

HASH

包含键值对的无序散列表

添加、获取、移除单个键值对
获取所有键值对
检查某个键是否存在

ZSET

有序集合

添加、获取、删除元素
根据分值范围或者成员来获取元素
计算一个键的排名

下边就分别介绍5中国不同的数据结构类型。

String字符串类型

Redis中的String类型就是一个由字节组成的序列,他和其他编程语言或者其他键值对存储提供的字符串操作非常相似。

一个String类型的实例,其中键为hello,值为world:

1)常用命令如下:

2Redis中的自增命令和自减命令:

3)除了getsetdel、自增、自减等操作外,Redis还提供了下面一些操作:

1、获取字符串长度 
2
、往字符串append内容 
3
、设置和获取字符串的某一段内容 
4
、设置及获取字符串的某一位(bit 
5
、批量设置一系列字符串的内容

如下图所示:

4)应用场景:

String是最常用的一种数据类型,普通的key/value存储都可以归为此类,value其实不仅是String 也可以是数字:比如想知道什么时候封锁一个IP地址(访问超过几次)INCRBY命令让这些变得很容易,通过原子递增保持计数。

List列表类型

Redis中的List其实就是链表(redis 使用双端链表实现的 List),相信学过数据结构知识的人都应该能理解其结构。

使用 List 结构,我们可以轻松地实现最新消息排行等功能(比如新浪微博的 TimeLine )。List 的另一个应用就是消息队列,可以利用 List  PUSH 操作,将任务存在 List 中,然后工作线程再用 POP 操作将任务取出进行执行。

一个List类型的实例,列表包含的元素,相同元素可以重复出现:

需要注意的是:一个List结构可以有序的存储多个字符串,并且是允许元素重复的。

1)常用命令如下:


LPUSH和RPUSH命令分别用于将元素推入列表的左端和右端;LPOP和RPOP命令分别用于从列表的左端和右端弹出元素,也就是删除元素;

其中对于LRANGE命令来说,使用0位范围的起始索引,-1为范围的结束索引,可以取出列表包含元素的所有元素。

(2)除了上边比较常用的命令之外,Redis列表还可以从列表里边移除元素、将元素插入列表中间、将列表修剪至指定长度的命令,以及一些其他命令。

(3)使用场景:

·        微博 TimeLine

·        消息队列

Set集合类型

Redis的集合和列表都可以存储多个字符串,他们的不同支持在于,列表可以存储多个相同的字符串,而集合通过使用散列表来保证自己存储的每个字符串都是各不相同的。

Redis的集合使用的是无序的方式存储元素,所以不可以像List列表那样,将元素推入集合的某一端,或者从集合的某一端弹出元素。

一个Set集合类型的实例,各不相同的元素,无序排列:


1)常用命令如下:


2)除了常见的命令之外,还有交集、并集、差集的计算,如下:

(3)使用场景:

·        共同好友、二度好友

·        利用唯一性,可以统计访问网站的所有独立 IP

·        好友推荐的时候,根据 tag 求交集,大于某个 threshold 就可以推荐

Hash散列类型

Redis的散列可以存储多个键值对之间的映射。和字符串一样,散列存储的值既可以是字符串又可以是数字值,并且用户同样可以对散列存储的数字执行自增操作或者是自减操作。

一个List散列类型的实例,是一个包含两个键值对的散列键:

1)常用命令如下:

2)其他命令包含添加和删除键值对的命令、获取所有键值对的命令、以及对键值对的值进行自增和自减操作的命令,如下所示:


Redis的有序集合ZSet数据类型

有序集合和散列一样,用于存储键值对;有序集合的键被称为成员member,每一个成员都是独一无二的;而有序集合的值被称为分值score,分值必须是浮点数。

有序集合是Redis里面唯一一个既可以根据成员访问元素,又可以根据分值以及分值的排序来访问元素的结构。

一个有序集合类型的实例,zset-key是一个包含两个元素的有序集合键:

1)常用命令如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值