网站建设包含的费用内容,黑帽seo工具,中国风配色网站,海南网站建设制作简介 List 的特点#xff1a;单键多值。底层实际是个双向链表#xff0c;对两端的操作性能很高#xff0c;通过索引下标的操作中间的节点性能会较差。 Redis 列表是简单的字符串列表#xff0c;按照插入顺序排序。你可以添加一个元素到列表的头部#xff08;左边#xff…简介 List 的特点单键多值。底层实际是个双向链表对两端的操作性能很高通过索引下标的操作中间的节点性能会较差。 Redis 列表是简单的字符串列表按照插入顺序排序。你可以添加一个元素到列表的头部左边或者尾部右边它的底层实际是个双向链表对两端的操作性能很高通过索引下标的操作中间的节点性能会较差。
常用命令
lpush/rpush key value1 value2 value3 ... 指令从左边 / 右边插入一个或多个值左右也就是首尾lrange key start stop 指令按照索引下标获得元素(从左到右先进后出)lrange key 0 -1 指令如果 start 是 0stop 是 -1代表获取所有元素
127.0.0.1:6379 lpush k1 v1 v2 v3
(integer) 3
127.0.0.1:6379 lrange k1 0 -1
1) v3
2) v2
3) v1127.0.0.1:6379 rpush k2 v1 v2 v3
(integer) 3
127.0.0.1:6379 lrange k2 0 -1
1) v1
2) v2
3) v3
127.0.0.1:6379 lpop/rpop key 指令从左边 / 右边吐出一个值。吐出后该值就不存在 key 中
127.0.0.1:6379 lrange k2 0 -1
1) v1
2) v2
3) v3
127.0.0.1:6379 lpop k2
v1
127.0.0.1:6379 lrange k2 0 -1
1) v2
2) v3
127.0.0.1:6379 rpop k2
v3
127.0.0.1:6379 lrange k2 0 -1
1) v2lindex key index 指令按照索引下标获得元素(从左到右)-1 代表最后一个0 代表是第一个
127.0.0.1:6379 lpush name feng rong xu
(integer) 3
127.0.0.1:6379 lpush second xustudyxu
(integer) 1
127.0.0.1:6379 rpoplpush name second
feng
127.0.0.1:6379 lrange name 0 -1
1) xu
2) rong
127.0.0.1:6379 lrange second 0 -1
1) feng
2) xustudyxulindex key index 指令按照索引下标获得元素(从左到右)-1 代表最后一个0 代表是第一个
127.0.0.1:6379 lindex name 0
xullen key 指令获得列表长度
127.0.0.1:6379 llen name
(integer) 2linsert key before/after value newValue 指令在元素某个值的前面 / 后面插入新值如果 value 有多个则插入最前面的那个
127.0.0.1:6379 lrange name 0 -1
1) xu
2) rong127.0.0.1:6379 linsert name before rong Rong
(integer) 3
127.0.0.1:6379 lrange name 0 -1
1) xu
2) Rong
3) rong
127.0.0.1:6379 linsert name after rong test1
(integer) 4
127.0.0.1:6379 lrange name 0 -1
1) xu
2) Rong
3) rong
4) test1lrem key n value 指令从左边删除 n 个 value(从左到右)如果有多个一样的 lement则删除列表最前面的的
127.0.0.1:6379 lpush name rong rong rong
(integer) 7
127.0.0.1:6379 lrange name 0 -1
1) rong
2) rong
3) rong
4) xu
5) Rong
6) rong
7) test1
127.0.0.1:6379 lrem name 2 rong
(integer) 2
127.0.0.1:6379 lrange name 0 -1
1) rong
2) xu
3) Rong
4) rong
5) test1lset key index value 指令将列表 key 下标为 index 的值替换成 value
127.0.0.1:6379 lrange name 0 -1
1) rong
2) xu
3) Rong
4) rong
5) test1
127.0.0.1:6379 lrange name 0 -1
1) rong
2) xu
3) Rong
4) rong
5) test1
127.0.0.1:6379 lset name 1 Rong
OK
127.0.0.1:6379 lrange name 0 -1
1) rong
2) Rong
3) Rong
4) rong
5) test1数据结构
List的数据结构为快速链表quickList。首先在列表元素较少的情况下会使用一块连续的内存存储这个结构是ziplist也即是压缩列表。它将所有的元素紧挨着一起存储分配的是一块连续的内存。当数据量比较多的时候才会改成quicklist。因为普通的链表需要的附加指针空间太大会比较浪费空间。比如这个列表里存的只是int类型的数据结构上还需要两个额外的指针prev和next
集合Set
简介 Redis set对外提供的功能与list类似是一个列表的功能特殊之处在于set是可以自动排重的当你需要存储一个列表数据又不希望出现重复数据时set是一个很好的选择并且set提供了判断某个成员是否在一个set集合内的重要接口这个也是list所不能提供的。 Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表所以添加删除查找的复杂度都是O(1)。
一个算法随着数据的增加执行时间的长短如果是O(1)数据增加查找数据的时间不变。
常用命令
sadd key value1 value2 ... 指令将一个或多个 member 元素加入到集合 key 中已经存在的 member 元素将被忽略
127.0.0.1:6379 sadd k1 v1 v2 v3
(integer) 3smembers key 指令取出该集合的所有值
127.0.0.1:6379 smembers k1
1) v1
2) v2
3) v3sismember key value 指令判断集合是否为含有该值有 1没有 0
127.0.0.1:6379 sismember k1 v4
(integer) 0
127.0.0.1:6379 sismember k1 v3
(integer) 1scard key 指令返回该集合的元素个数
127.0.0.1:6379 scard k1
(integer) 3srem key value1 value2 ... 指令删除集合中的某个元素
127.0.0.1:6379 srem k1 v1 v2
(integer) 2
127.0.0.1:6379 smembers k1
1) v3spop key 指令随机从该集合中吐出一个值key 里就没有该值了
127.0.0.1:6379 sadd k2 v1 v2 v3 v4
(integer) 4
127.0.0.1:6379 spop k2
v4
127.0.0.1:6379 smembers k2
1) v1
2) v2
3) v3srandmember key n 指令随机从该集合中取出 n 个值。不会从集合中删除
127.0.0.1:6379 srandmember k2 2
1) v1
2) v2
127.0.0.1:6379 srandmember k2 2
1) v1
2) v3smove key1 key2 value 指令把集合中一个值从一个集合移动到另一个集合其中 key1 为要获取的集合key2 为放入的集合
127.0.0.1:6379 sadd k1 v1 v2 v3
(integer) 3
127.0.0.1:6379 sadd k2 v3 v4 v5
(integer) 3
127.0.0.1:6379 smove k1 k2 k3
(integer) 0
127.0.0.1:6379 smembers k1
1) v1
2) v2
3) v3
127.0.0.1:6379 smembers k2
1) v3
2) v4
3) v5sinter key1 key2 指令返回两个集合的交集元素
127.0.0.1:6379 sadd k3 v4 v6 v7
(integer) 3
127.0.0.1:6379 sinter k2 k3
1) v4sunion key1 key2 指令返回两个集合的并集元素
127.0.0.1:6379 sunion k2 k3
1) v3
2) v4
3) v5
4) v6
5) v7sdiff key1 key2 指令返回两个集合的差集元素(key1 中的不包含 key2 中的)
127.0.0.1:6379 sdiff k2 k3
1) v3
2) v5