Redis:常用命令总结
目录1 . 前置内容
1.1 基本全局命令
KEYS
EXISTS
DEL
EXPIRE
TTL
TYPE
1.2 数据结构和内部编码
2. String类型
SET
GET
MGET
MSET
INCR
INCRBY
DECR
DECRBY
INCRBYFLOAT
命令小结编辑
内部编码
3 . Hash 哈希类型
HSET
HGET
HEXISTS
HDEL
HKEYS
HVALS
HGETALL
HMGET
HLEN
HINCRBY
HINCRBYFLOAT
命令小结 编辑
内部编码
4 . List列表
LPUSH
LPUSHX
LRANGE
LPOP
LINDEX
LLEN
命令小结编辑
内部编码
5 . Set 集合
SADD
SMEMBERS
SISMEMBER
SCARD
SPOP
SMOVE
SREM
SINTER
SINTERSTORE
SUNION
SUNIONSTORE
SDIFF
SDIFFSTORE
命令小结 编辑
内部编码
6 . Zset 有序集合
ZADD
ZCARD
ZCOUNT
ZRANGE
ZREVRANGE
ZPOPMAX
ZPOPMIN
ZRANK
ZREVRANK
ZSCORE
ZREM
ZINCRBY
ZINTERSTORE
ZUNIONSTORE
命令小结编辑
内部编码
7. 渐进式遍历
8. 数据库命令
1 . 前置内容
1.1 基本全局命令
KEYS
语法
KEYS pattern
用于匹配所有符合模版条件的key
https://i-blog.csdnimg.cn/direct/9a56189e932345a39e17ca245e2f45cd.png
EXISTS
EXISTS key
判定某个 key 是否存在。
上面我们添加了三个key 分别是 k1 k2 k3 我们用存在的key和不存在的key来进行测试,看看结果怎样 https://i-blog.csdnimg.cn/direct/6b432c8eccb649a2ba412022433e25bf.png
DEL
DEL key
删除指定的keyhttps://i-blog.csdnimg.cn/direct/9689bc1da548458a92cd29120f66ef5d.png返回值: 删除掉key的个数
EXPIRE
EXPIRE key seconds
为指定的 key 添加秒级的逾期时间(Time To Live TTL)
https://i-blog.csdnimg.cn/direct/0c80e088048643ac8960e66086b0ec5d.png
TTL
TTL key
获取指定 key 的逾期时间,秒级。
返回值:剩余逾期时间。-1 表现没有关联逾期时间,-2 表现 key 不存在。
https://i-blog.csdnimg.cn/direct/da34a4eaf3be4b298ba7d21c257e74ee.png
TYPE
TYPE key
返回 key 对应的数据类型。
1.2 数据结构和内部编码
type 命令现实返回的就是当前键的数据结构类型,它们分别是:string(字符串)、list(列 表)、hash(哈希)、set(集合)、zset(有序集合),但这些只是 Redis 对外的数据结构,现实上 Redis 针对每种数据结构都有自己的底层内部编码实现,而且是多种实现,如许 Redis 会 在符合的场景选择符合的内部编码。https://i-blog.csdnimg.cn/direct/a9ed5b0485a44d0c89add7b5d8740ac9.png
[*] 字符串(String):Redis 使用简朴动态字符串(SDS)来存储字符串数据。SDS 是一种结构化的字符串表现,可以动态调解大小,而且可以在 O(1) 时间内获取字符串长度。
[*] 列表(List):Redis 使用压缩列表(ziplist)或双向循环链表(linkedlist)来存储列表数据。压缩列表是一种紧凑的数据结构,可以在一定程度上节省内存空间。双向循环链表则提供了更好的性能,但会消耗更多的内存。
[*] 哈希表(Hash):Redis 使用压缩列表或哈希表(hashtable)来存储哈希数据。压缩列表实用于小规模的哈希数据,而哈希表则实用于大规模的哈希数据。
[*] 集合(Set):Redis 使用整数集合(intset)或哈希表来存储集合数据。整数集合实用于存储整数类型的数据,而哈希表实用于存储任意类型的数据。
[*] 有序集合(Sorted Set):Redis 使用跳跃表(skiplist)和哈希表来存储有序集合数据。跳跃表提供了快速的查找和插入操纵,而哈希表则提供了快速的范围查询操纵。
2. String类型
SET
将 string 类型的 value 设置到 key 中。假如 key 之前存在,则覆盖,无论原来的数据类型是什么。之前关于此 key 的 TTL 也全部失效。
SET key value
[*]EX seconds⸺使用秒作为单位设置 key 的逾期时间。
[*]PX milliseconds⸺使用毫秒作为单位设置 key 的逾期时间。
[*]NX ⸺只在 key 不存在时才进行设置,即假如 key 之前已经存在,设置不执行。
[*]XX ⸺只在 key 存在时才进行设置,即假如 key 之前不存在,设置不执行。
GET
获取 key 对应的 value。假如 key 不存在,返回 nil。假如 value 的数据类型不是 string,会报错。
GET key MGET
⼀次性获取多个 key 的值。假如对应的 key 不存在大概对应的数据类型不是 string,返回 nil。
MGET key MSET
⼀次性设置多个 key 的值。
MSET key value INCR
将 key 对应的 string 表现的数字加1。假如 key 不存在,则视为 key 对应的 value 是 0。假如 key 对应的 string 不是⼀个整型大概范围超过了 64 位有符号整型,则报错。
INCR key 返回值:加1之后, key 的值。
INCRBY
将 key 中储存的数字加上指定的增量值。,假如 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。
INCRBY key incr_amount 返回值:加上指定的增量值之后, key 的值。
DECR
将 key 对应的 string 表现的数字减⼀。假如 key 不存在,则视为 key 对应的 value 是 0。
DECR key DECRBY
将 key 对应的 string 表现的数字减去对应的值。假如 key 不存在,则视为 key 对应的 value 是 0。
DECRBY key decr_amount INCRBYFLOAT
将 key 对应的 string 表现的浮点数加上对应的值。假如对应的值是负数,则视为减去对应的值。假如 key 不存在,则视为 key 对应的 value 是 0。假如 key 对应的不是 string,大概不是⼀个浮点数,则报 错。允许接纳科学计数法表现浮点数。
INCRBYFLOAT KEY_NAME INCR_AMOUNT
命令小结https://i-blog.csdnimg.cn/direct/d254172309f84c7b930c909f1b539f0b.png
内部编码
字符串类型的内部编码有 3 种:
[*]int: 8 个字节的长整型。
[*]embstr: 小于等于39个字节的字符串
[*]raw: 大于等于39个字节的字符串
https://i-blog.csdnimg.cn/direct/d096b9f119124bdba3b64686190a9112.png
3 . Hash 哈希类型
https://i-blog.csdnimg.cn/direct/33464218847e42fbb57943ad9aca92c6.png哈希类型中的映射关系通常称为 field-value,用于区分 Redis 团体的键值对(key-value),注意这里的 value 是指 field 对应的值,不是键(key)对应的值,请注意 value 在差异上下文的作用。
HSET
设置 hash 中指定的字段(field)的值(value)。
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HGET myhash field1
"Hello HGET
获取 hash 中指定字段的值。
redis> HSET myhash field1 "foo"
(integer) 1
redis> HGET myhash field1
"foo"
redis> HGET myhash field2
(nil) HEXISTS
判定 hash 中是否有指定的字段。
redis> HSET myhash field1 "foo"
(integer) 1
redis> HEXISTS myhash field1
(integer) 1
redis> HEXISTS myhash field2
(integer) 0 HDEL
删除 hash 中指定的字段。
redis> HSET myhash field1 "foo"
(integer) 1
redis> HDEL myhash field1
(integer) 1
redis> HDEL myhash field2
(integer) 0 HKEYS
获取 hash 中的所有字段。
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HKEYS myhash
1) "field1"
2) "field2" HVALS
获取 hash 中的所有的值。
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HVALS myhash
1) "Hello"
2) "World" HGETALL
获取 hash 中的所有字段以及对应的值。
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World" HMGET
⼀次获取 hash 中多个字段的值
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HMGET myhash field1 field2 nofield
1) "Hello"
2) "World"
3) (nil) HLEN
获取 hash 中的所有字段的个数。
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HLEN myhash
(integer) 2 HINCRBY
将 hash 中字段对应的数值添加指定的值。返回添加后hash的值
redis> HSET myhash field 5
(integer) 1
redis> HINCRBY myhash field 1
(integer) 6
redis> HINCRBY myhash field -1
(integer) 5
redis> HINCRBY myhash field -10
(integer) -5 HINCRBYFLOAT
HINCRBY 的浮点数版本。
redis> HSET mykey field 10.50
(integer) 1
redis> HINCRBYFLOAT mykey field 0.1
"10.6"
redis> HINCRBYFLOAT mykey field -5
"5.6"
redis> HSET mykey field 5.0e3
(integer) 0
redis> HINCRBYFLOAT mykey field 2.0e2
"5200" 命令小结 https://i-blog.csdnimg.cn/direct/d77fe6189e3840e386b353ff15d47e1c.png
内部编码
ziplist(压缩列表):当哈希类型元素个数小于 hash-max-ziplist-entries 配置(默认 512 个)、 同时所有值都小于 hash-max-ziplist-value 配置(默认 64 字节)时,Redis 会使用 ziplist 作为哈 希的内部实现,ziplist 使用更加紧凑的结构实现多个元素的一连存储,所以在节省内存方面比 hashtable 更加优秀。
hashtable(哈希表):当哈希类型无法满足 ziplist 的条件时,Redis 会使用hashtable 作为哈希 的内部实现,因为此时 ziplist 的读写服从会下降,而hashtable 的读写时间复杂度为 O(1)。
4 . List列表
列表(List)是一种简朴的、可变长度的字符串序列,支持在两头进行插入和删除操纵。https://i-blog.csdnimg.cn/direct/cc419ce013444e539f5d51096693ebd0.png
LPUSH
将一个大概多个元素从左侧放入(头插)到 list 中
redis> LPUSH mylist "world"
(integer) 1
redis> LPUSH mylist "hello"
(integer) 2
redis> LRANGE mylist 0 -1
1) "hello"
2) "world" LPUSHX
在 key 存在时,将一个大概多个元素从左侧放入(头插)到 list 中。不存在,直接返回
redis> LPUSH mylist "World"
(integer) 1
redis> LPUSHX mylist "Hello"
(integer) 2
redis> LPUSHX myotherlist "Hello"
(integer) 0
redis> LRANGE mylist 0 -1
1) "Hello"
2) "World"
redis> LRANGE myotherlist 0 -1
(empty array) LRANGE
获取从 start 到 end 区间的所有元素,左闭右闭
redis> RPUSH mylist "one"
(integer) 1
redis> RPUSH mylist "two"
(integer) 2
redis> RPUSH mylist "three"
(integer) 3
redis> LRANGE mylist 0 0
1) "one"
redis> LRANGE mylist -3 2
1) "one"
2) "two"
3) "three"
redis> LRANGE mylist -100 100
1) "one"
2) "two"
3) "three"
redis> LRANGE mylist 5 10
(empty array) LPOP
从 list 左侧取出元素(即头删)。
redis> RPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
redis> LPOP mylist
"one"
redis> LPOP mylist
"two"
redis> LPOP mylist
"three"
redis> LRANGE mylist 0 -1
1) "four"
2) "five" LINDEX
获取从左数第 index 位置的元素
redis> LPUSH mylist "World"
(integer) 1
redis> LPUSH mylist "Hello"
(integer) 2
redis> LINDEX mylist 0
"Hello"
redis> LINDEX mylist -1
"World"
redis> LINDEX mylist 3
(nil) LLEN
获取 list ⻓度。
redis> LPUSH mylist "World"
(integer) 1
redis> LPUSH mylist "Hello"
(integer) 2
redis> LLEN mylist
(integer) 2 命令小结https://i-blog.csdnimg.cn/direct/6c598cd899ae4e1d94e4f760a68983a4.png
内部编码
Ziplist:
[*]当列表的元素数量较少且每个元素的长度较短时,Redis会使用Ziplist编码。
[*]Ziplist是一种紧凑的内存表现方式,可以有用地存储小型列表。
[*]优点:节省内存,恰当小型列表。
[*]缺点:在进行插入和删除操纵时,性能较低。
Linked List:
[*]当列表的元素数量增长到一定阈值时,Redis会将其转换为双向链表。
[*]链表允许在两头快速插入和删除操纵。
[*]优点:支持快速的插入和删除操纵。
[*]缺点:相对于Ziplist,内存占用更高。
Quicklist:
[*]Redis 3.2引入了Quicklist作为列表的默认实现。
[*]Quicklist结合了Ziplist和链表的优点,使用多个Ziplist块来存储元素,并通过链表毗连这些块。
[*]优点:在内存使用和性能之间取得了精良的均衡,恰当大多数使用场景。
5 . Set 集合
集合类型也是保存多个字符串类型的元素的,但和列表类型差异的是,集合中
1) 元素之间是无序的
2)元素不允许重复
一个集合中最多可以存储 https://latex.csdn.net/eq?2%5E%7B32%7D-1个元素。Redis 除了支持集合内的增删查改操纵,同时还支持多个集合取交集、并集、差集,合理地使用好集合类型,能在现实开发中办理许多问题。https://i-blog.csdnimg.cn/direct/dcc53b82fee64b42bf4e46bd92da3416.png
SADD
将⼀个大概多个元素添加到 set 中。注意,重复的元素无法添加到 set 中
redis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
redis> SADD myset "World"
(integer) 0
redis> SMEMBERS myset
1) "Hello"
2) "World" SMEMBERS
获取⼀个 set 中的所有元素,注意,元素间的顺序是无序的。
redis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
redis> SMEMBERS myset
1) "Hello"
2) "World" SISMEMBER
判定⼀个元素在不在 set 中。
redis> SADD myset "one"
(integer) 1
redis> SISMEMBER myset "one"
(integer) 1
redis> SISMEMBER myset "two"
(integer) 0 SCARD
获取⼀个 set 的基数(cardinality),即 set 中的元素个数。
redis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
redis> SCARD myset
(integer) 2 SPOP
Spop 命令用于移除集合中的指定 key 的一个或多个随机元素,移除后会返回移除的元素.
SMOVE
将一个元素从源 set 取出并放入目标 set 中。
redis> SADD myset "one"
(integer) 1
redis> SADD myset "two"
(integer) 1
redis> SADD myotherset "three"
(integer) 1
redis> SMOVE myset myotherset "two"
(integer) 1
redis> SMEMBERS myset
1) "one"
redis> SMEMBERS myotherset
1) "three"
2) "two" SREM
将指定的元素从 set 中删除。
redis> SADD myset "one"
(integer) 1
redis> SADD myset "two"
(integer) 1
redis> SADD myset "three"
(integer) 1
redis> SREM myset "one"
(integer) 1
redis> SREM myset "four"
(integer) 0
redis> SMEMBERS myset
1) "three"
2) "two" SINTER
获取给定 set 的交会合的元素。
redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SINTER key1 key2
1) "c" SINTERSTORE
获取给定 set 的交会合的元素并保存到目标 set 中。
SINTERSTORE destination key redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SINTERSTORE key key1 key2
(integer) 1
redis> SMEMBERS key
1) "c" SUNION
获取给定 set 的并会合的元素
redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SUNION key1 key2
1) "a"
2) "c"
3) "e"
4) "b"
5) "d" SUNIONSTORE
获取给定 set 的并会合的元素并保存到目标 set 中。
SUNIONSTORE destination key redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SUNIONSTORE key key1 key2
(integer) 5
redis> SMEMBERS key
1) "a"
2) "c"
3) "e"
4) "b"
5) "d" SDIFF
获取给定 set 的差会合的元素
SDIFF key SDIFFSTORE
获取给定 set 的差会合的元素并保存到目标 set 中
SDIFFSTORE destination key 命令小结 https://i-blog.csdnimg.cn/direct/1b5bad3621344f498f57937317266910.png
内部编码
集合类型的内部编码有两种:
intset(整数集合):当集合中的元素都是整数而且元素的个数小于 set-max-intset-entries 配置 (默认 512 个)时,Redis 会选用intset 来作为集合的内部实现,从而淘汰内存的使用。• hashtable(哈希表):当集合类型无法满足 intset 的条件时,Redis 会使用 hashtable 作为集合 的内部实现。
6 . Zset 有序集合
有序集合相对于字符串、列表、哈希、集合来说会有⼀些生疏。它保存了集合不能有重复成员的 特点,但与集合差异的是,有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数(score)与之关联,着使得有序集合中的元素是可以维护有序性的,但这个有序不是用下标作为排序依据而是用这个分数。
ZADD
添加大概更新指定的元素以及关联的分数到 zset 中,分数应该符合 double 类型,+inf/-inf 作为正负极限也是合法的。
ZADD key score1 value1 ZCARD
获取⼀个 zset 的基数(cardinality),即 zset 中的元素个数。
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZCARD myzset
(integer) 2 ZCOUNT
返回分数在 min 和 max 之间的元素个数,默认情况下,min 和 max 都是闭区间的
ZCOUNT key min max redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZCOUNT myzset -inf +inf
(integer) 3
redis> ZCOUNT myzset 1 3
(integer) 3
redis> ZCOUNT myzset (1 3
(integer) 2
redis> ZCOUNT myzset (1 (3
(integer) 1 ZRANGE
返回指定区间⾥的元素,分数按照升序。带上 WITHSCORES 可以把分数也返回。
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
redis> ZRANGE myzset 0 -1
1) "one"
2) "two"
3) "three"
redis> ZRANGE myzset 2 3
1) "three"
redis> ZRANGE myzset -2 -1
1) "two"
2) "three" ZREVRANGE
返回指定区间里的元素,分数按照降序。带上 WITHSCORES 可以把分数也返回。
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZREVRANGE myzset 0 -1 WITHSCORES
1) "three"
2) "3"
3) "two"
4) "2"
5) "one"
6) "1"
redis> ZREVRANGE myzset 0 -1
1) "three"
2) "two"
3) "one"
redis> ZREVRANGE myzset 2 3
1) "one"
redis> ZREVRANGE myzset -2 -1
1) "two"
2) "one"
ZPOPMAX
删除并返回分数最高的 count 个元素
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZPOPMAX myzset
1) "three"
2) "3" ZPOPMIN
删除并返回分数最低的 count 个元素
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZPOPMIN myzset
1) "one"
2) "1"
ZRANK
返回指定元素的排名,升序。
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZRANK myzset "three"
(integer) 2
redis> ZRANK myzset "four"
(nil) ZREVRANK
返回指定元素的排名,降序。
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZREVRANK myzset "one"
(integer) 2
redis> ZREVRANK myzset "four"
(nil) ZSCORE
返回指定元素的分数。
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZSCORE myzset "one"
"1" ZREM
删除指定的元素。
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZREM myzset "two"
(integer) 1
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "three"
4) "3" ZINCRBY
为指定的元素的关联分数添加指定的分数值,返回值为新分数值,以字符串形式表现。
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZINCRBY myzset 2 "one"
"3"
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "two"
2) "2"
3) "one"
4) "3" ZINTERSTORE
求出给定有序集合中元素的交集并保存进目标有序集合中,在归并过程中以元素为单位进行归并,元 素对应的分数按照差异的聚合方式和权重得到新的分数。
ZINTERSTORE destination numkeys key [WEIGHTS weight
] redis> ZADD zset1 1 "one"
(integer) 1
redis> ZADD zset1 2 "two"
(integer) 1
redis> ZADD zset2 1 "one"
(integer) 1
redis> ZADD zset2 2 "two"
(integer) 1
redis> ZADD zset2 3 "three"
(integer) 1
redis> ZINTERSTORE out 2 zset1 zset2 WEIGHTS 2 3
(integer) 2
redis> ZRANGE out 0 -1 WITHSCORES
1) "one"
2) "5"
3) "two"
4) "10" ZUNIONSTORE
求出给定有序集合中元素的并集并保存进目标有序集合中,在归并过程中以元素为单位进行归并,元 素对应的分数按照差异的聚合方式和权重得到新的分数。
命令小结https://i-blog.csdnimg.cn/direct/2bc0f4cb6a114cacb8786ae646f0cf91.png
内部编码
ziplist(压缩列表):当有序集合的元素个数小于 zset-max-ziplist-entries 配置(默认 128 个),同时每个元素的值都小于 zset-max-ziplist-value 配置(默认 64 字节)时,Redis 会用 ziplist 来作 为有序集合的内部实现,ziplist 可以有用淘汰内存的使用。
skiplist(跳表):当 ziplist 条件不满足时,有序集合会使⽤ skiplist 作为内部实现,因为此时 ziplist 的操纵服从会下降
7. 渐进式遍历
渐进式遍历(Incremental Traversal)是一种在数据结构中逐步访问元素的方法,通常用于处理大型数据集或流式数据,以避免一次性加载所有数据而导致的内存消耗。
关键概念:
[*] 分批处理:数据被分成多个小批次进行处理,而不是一次性加载所有数据。这种方法可以淘汰内存使用并提高响应速度。
[*] 懒加载:仅在需要时加载数据,而不是预先加载所有数据。这种方式可以提高性能,尤其是在处理大数据集时。
[*] 迭代器模式:使用迭代器来逐步访问数据结构中的元素。迭代器可以提供一种同一的方式来遍历差异类型的数据结构。
https://i-blog.csdnimg.cn/direct/a2e591fa703948cf912d2fdc4343ef8d.png
redis 127.0.0.1:6379> scan 0
1) "17"
2) 1) "key:12"
2) "key:8"
3) "key:4"
4) "key:14"
5) "key:16"
6) "key:17"
7) "key:15"
8) "key:10"
9) "key:3"
10) "key:7"
11) "key:1"
redis 127.0.0.1:6379> scan 17
1) "0"
2) 1) "key:5"
2) "key:18"
3) "key:0"
4) "key:2"
5) "key:19"
6) "key:13"
7) "key:6"
8) "key:9"
9) "key:11" 8. 数据库命令
//切换数据库
select dbIndex
//清除数据库
flushdb / flushall# flushdb 只清除当前数据库,flushall 会清楚所有数
据库。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]