网站建设有模板自己能制作,贸易做网站,中关村手机排行榜,58同城怎么做网站Redis常用数据类型 Redis键#xff08;key#xff09; 常用命令 Redis字符串 常用命令 数据结构 Redis列表 ​编辑 常用命令 数据结构 Redis集合 常用命令 数据结构 Redis哈希 常用命令 数据结构 Redis有序集合Zset 常用命令 数据结构 Redis键#xff08;…Redis常用数据类型Redis键key常用命令Redis字符串常用命令数据结构Redis列表​编辑 常用命令数据结构Redis集合常用命令数据结构Redis哈希常用命令数据结构Redis有序集合Zset常用命令数据结构Redis键key常用命令Redis字符串常用命令数据结构如图中所示内部为当前字符串实际分配的空间 capacity 一般要高于实际字符串长度len。当字符串长度小于 1M时扩容都是加倍现有的空间如果超过 1M扩容时一次只会多扩 1M的空间。需要注意的是字符串最大长度为 512M。Redis列表单键多值.Redis 列表是简单的字符串列表按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。它的底层实际是个双向链表对两端的操作性能很高通过索引下标的操作中间的节点性能会较差。常用命令数据结构List 的数据结构为快速链表 quickList。也即是首先在列表元素较少的情况下会使用一块连续的内存存储这个结构是 ziplist压缩列表。。它将所有的元素紧挨着一起存储分配的是一块连续的内存。当数据量比较多的时候才会改成 quicklist。因为普通的链表需要的附加指针空间太大会比较浪费空间。比如这个列表里存的只是 int 类型的数据结构上还需要两个额外的指针 prev 和 next。Redis 将链表和 ziplist 结合起来组成了 quicklist。也就是将多个 ziplist 使用双向指针串起来使用。这样既满足了快速的插入删除性能又不会出现太大的空间冗余。Redis集合Redis set对外提供的功能与 list 类似是一个列表的功能特殊之处在于 set 是可以自动排重的当你需要存储一个列表数据又不希望出现重复数据时set是一个很好的选择并且 set提供了判断某个成员是否在一个set集合内的重要接口这个也是 list 所不能提供的。Redis 的 set是 string类型的无序集合。它底层其实是一个value为 nul的 hash表所以添加删除查找的复杂度都是 O(1)常用命令数据结构Set 数据结构是 dict字典字典是用哈希表实现的。Java 中 Hashset 的内部实现使用的是 HashMap只不过所有的 value 都指向同一个对象Redis 的 set 结构也是一样它的内部也使用 hash 结构所有的 value 都指向同一个内部值。Redis哈希Redis hash 是一个键值对集合。Redis hash 是一个 string类型的 field 和 value 的映射表hash 特别适合用于存储对象。类似 Java 里面的 Mapsting.Object.用户 ID 为查找的 key存储的 value用户对象包含姓名,年龄生日等信息如果用普通的 keykvalue 结构来存储。常用命令数据结构Hash 类型对应的数据结构是两种:ziplist(压缩列表)hashtable(哈希表)。field-value 长度较短且个数较少时使用 ziplist否则使用 hashtable。Redis有序集合ZsetRedis 有序集合 zset 与普通集合 set 非常相似是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的但是评分可以是重复了。因为元素是有序的所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。常用命令数据结构SortedSet(zset)是 Redis 提供的一个非常特别的数据结构一方面它等价于 Java的数据结构 MapString,Double,可以给每一个元素 value 赋予一个权重 score另一方面它又类似于 TreeSet内部的元素会按照权重 score 进行排序可以得到每个元素的名次还可以通过 score 的范围来获取元素的列表。zset 底层使用了两个数据结构。(1)hash,hash的作用就是关联元素 value和权重 score,保障元素 value 的唯一性可以通过元素 value 找到相应的 score 值。(2)跳跃表跳跃表的目的在于给元素 value 排序根据 score 的范围获取元素列表。