Redis有5种基础的数据结构,非别为string(字符串)、list(列表)、set(集合)、hash(哈希)、和zset(有序集合)。Redis所有的数据结构都是以唯一的key字符串作为名称,然后通过这个key来获取对应的value数据。
接下来对每种类型进行简单说明
一、string(字符串)
key对应的value值为字符串类型,如下图所示:
语法:
1.单个键值对设置
2.批量键值对设置
二、list(列表)
列表相当于java中的LinkedList,是链表不是数组。当列表弹出(pop)最后一个元素之后,该数据结构自动被删除,内存被回收
进栈:rpush
出栈:lpop,rpop
保留某个区间的值:ltrim(start_index,end_index)
根据索引获取元素:lindex
列出某个区间的所有值:lrange(start_index,end_index)
三、hash(哈希)
相当于java中的HashMap,是无序字典,是数组+链表的二维结构
redis中hash字典的值只能是字符串,一些语法命令如下图:
hash结构中也可以计数,对应的指令是hincrby
四、set(集合)
set集合相当于java中的HashSet,内部的键值对是无序的,唯一的。一些指令如下图:
五、zset(有序集合)
zset相当于java中SortedSet和HashMap的结合体。一方面,它具有内部value的唯一性;另一方面,还可以给每个value赋予一个score,代表这个value的排序权重。
zset要支持随机的插入和删除
总结
list/set/hash/zset这四种数据结构是容器型数据结构,共享一下两条通用规则:
1、create if not exits
容器如果不存在,就创建一个再进行操作
2、drop if no elements
如果容器里元素没有了,那么就会容器就会删除,释放内存
3、过期时间
Redis所有的数据结构都可以设置过期时间,时间到了,Redis就会自动删除相应的对象。
注意:如果一个字符串已经设置的过期时间,然后你调用了set方法修改了它,它的过期时间就会消失