Redis有5种基础的数据结构,非别为string(字符串)、list(列表)、set(集合)、hash(哈希)、和zset(有序集合)。Redis所有的数据结构都是以唯一的key字符串作为名称,然后通过这个key来获取对应的value数据。

接下来对每种类型进行简单说明

一、string(字符串)

key对应的value值为字符串类型,如下图所示:

redisson 数据结构 redis的数据结构_字符串

语法:

1.单个键值对设置

redisson 数据结构 redis的数据结构_java_02

2.批量键值对设置

redisson 数据结构 redis的数据结构_java_03

二、list(列表)

列表相当于java中的LinkedList,是链表不是数组。当列表弹出(pop)最后一个元素之后,该数据结构自动被删除,内存被回收

redisson 数据结构 redis的数据结构_redisson 数据结构_04

redisson 数据结构 redis的数据结构_redis_05

 进栈:rpush

出栈:lpop,rpop

保留某个区间的值:ltrim(start_index,end_index)

根据索引获取元素:lindex

列出某个区间的所有值:lrange(start_index,end_index)

redisson 数据结构 redis的数据结构_java_06

 

 

三、hash(哈希)

相当于java中的HashMap,是无序字典,是数组+链表的二维结构

redisson 数据结构 redis的数据结构_redisson 数据结构_07

redis中hash字典的值只能是字符串,一些语法命令如下图:

 

redisson 数据结构 redis的数据结构_java_08

 hash结构中也可以计数,对应的指令是hincrby

redisson 数据结构 redis的数据结构_redisson 数据结构_09

 

四、set(集合)

set集合相当于java中的HashSet,内部的键值对是无序的,唯一的。一些指令如下图:

redisson 数据结构 redis的数据结构_java_10

五、zset(有序集合)

zset相当于java中SortedSet和HashMap的结合体。一方面,它具有内部value的唯一性;另一方面,还可以给每个value赋予一个score,代表这个value的排序权重。

zset要支持随机的插入和删除

redisson 数据结构 redis的数据结构_数据结构_11

 

redisson 数据结构 redis的数据结构_redisson 数据结构_12

 

总结

list/set/hash/zset这四种数据结构是容器型数据结构,共享一下两条通用规则:

1、create if not exits

容器如果不存在,就创建一个再进行操作

2、drop if no elements

如果容器里元素没有了,那么就会容器就会删除,释放内存

3、过期时间

Redis所有的数据结构都可以设置过期时间,时间到了,Redis就会自动删除相应的对象。

注意:如果一个字符串已经设置的过期时间,然后你调用了set方法修改了它,它的过期时间就会消失