javaredis添加数据类型_Redis常见的5种不同的数据类型详解
⼀、前⾔
Redis除了可以存储键还可以存储常见的5种数据类型,分别是:String、List、Set、Hash、ZSet。对于Redis的命令有⼀部分是可以公⽤的,但是还有⼀些其他的命令是属于特殊使⽤的。
⾸先看看⼀张关于Redis5种数据结构的对⽐:
下边就分别介绍5中国不同的数据结构类型。
⼆、String字符串类型
Redis中的String类型就是⼀个由字节组成的序列,他和其他编程语⾔或者其他键值对存储提供的字符串操作⾮常相似。
⼀个String类型的实例,其中键为hello,值为world:
(1)常⽤命令如下:
(2)Redis中的⾃增命令和⾃减命令:
(3)除了get、set、del、⾃增、⾃减等操作外,Redis还提供了下⾯⼀些操作:
获取字符串长度
往字符串append内容
设置和获取字符串的某⼀段内容
设置及获取字符串的某⼀位(bit)
批量设置⼀系列字符串的内容
如下图所⽰:
(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)除了常见的命令之外,还有交集、并集、差集的计算,如下:
redis支持的五种数据类型
(3)使⽤场景:
共同好友、⼆度好友
利⽤唯⼀性,可以统计访问⽹站的所有独⽴ IP
好友推荐的时候,根据 tag 求交集,⼤于某个 threshold 就可以推荐
五、Hash散列类型
Redis的散列可以存储多个键值对之间的映射。和字符串⼀样,散列存储的值既可以是字符串⼜可以是数字值,并且⽤户同样可以对散列存储的数字执⾏⾃增操作或者是⾃减操作。
⼀个List散列类型的实例,是⼀个包含两个键值对的散列键:
(1)常⽤命令如下:
(2)其他命令包含添加和删除键值对的命令、获取所有键值对的命令、以及对键值对的值进⾏⾃增和⾃减操作的命令,如下所⽰:
六、Redis的有序集合ZSet数据类型
有序集合和散列⼀样,⽤于存储键值对;有序集合的键被称为成员member,每⼀个成员都是独⼀⽆⼆的;⽽有序集合的值被称为分值score,分值必须是浮点数。
有序集合是Redis⾥⾯唯⼀⼀个既可以根据成员访问元素,⼜可以根据分值以及分值的排序来访问元素的结构。
⼀个有序集合类型的实例,zset-key是⼀个包含两个元素的有序集合键:
常⽤命令如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。