本文共 1465 字,大约阅读时间需要 4 分钟。
缓存和分布式锁等等
举例:
有docker方式,Github源码编译方式,直接安装方式
这里推荐docker安装方式,
string
内部表示就是一个字符数组。redis的字符串是动态字符串,是可以修改的字符串。采用预分配冗余内存的方式来减少内存的频繁分配。 当字符串长度小于1MB时,扩容都是加倍现有的空间。如果字符串长度超过1MB,扩容时一次就只会多扩1MB的空间。需要注意的是字符串的最大长度为512MB。 list 开始可以认为内部实现是一个双向的链表 redis的列表结构常用来做异步队列。将需要延后处理的任务结构体序列化成字符串,塞进Redis的列表,另一个线程从这个列表中轮询数据进行处理 如果再深入一点,你会发现Redis底层存储的不是一个简单的linkedlist,而是称为“快速链表(quicklist)的一个结构” 首先在列表元素较少的情况下,会使用一块连续的内存存储,这个结构是ziplist,即压缩列表。它将所有的元素彼此紧挨着一起存储,分配的是一块连续的内存。当数据量比较大的时候才会改成quicklist。因为普通的链表需要的附加指针空间太大,会浪费空间,还会加重内存的碎片化,比如某普通链表里存的只是int类型的数据,结构上还需要两个额外的指针prev和next。所以redis将链表和ziplist结合起来组成了quicklist,也就是将多个ziplist使用双向指针串起来使用。quicklist即满足了快速的插入删除性能,又不会出现太大的空间冗余。后面进阶部分会再讲到 hash 无序字典,由“数组+链表”组成,可参考 跟语言里的hash不同的是,redis中的字典的key只能是字符串
当hash结构移除了最后一个元素后,该数据结构被自动删除,内存被回收 set 有自去重功能 当集合中移除了最后一个元素后,该数据结构被自动删除,内存被回收 zset zset是redis提供的最有特色的数据结构,一方面它是一个set,保证了内部value的唯一性,另一方面它可以给每个value赋予一个score,代表这个value的排序权重。它的内部实现用的是一个叫做“跳跃列表”的数据结构。 当zset中移除了最后一个元素后,该数据结构被自动删除,内存被回收 list,set,hash,zset这四种数据结构是容器型数据结构,它们共享下面的两条通用规则:
redis的树有数据结构都可以设置过期时间,时间到了,Redis会自动删除相应对象。需要注意的是,过期时间是以对象为单位的,比如一个hash结构的过期是整个hash对象的过期,而不是其中的某个子Key的过期
如果一个字符串已经设置了过期时间,然后你调用set方法修改了它,它的过期时间会消失
转载地址:http://qdbrb.baihongyu.com/