网站屏蔽国内ip,关于江西建设监督网网站迁移,邵阳做网站公司,门户网站建设招标公告目录 Redis数据类型
编辑
1.List类型
#xff08;1#xff09;常见命令
#xff08;2#xff09;内部编码
2.Set类型
#xff08;1#xff09;常见命令
#xff08;2#xff09;内部编码 Redis数据类型 查阅Redis官方文档可知#xff0c;Redis提供给用户的核…目录 Redis数据类型
编辑
1.List类型
1常见命令
2内部编码
2.Set类型
1常见命令
2内部编码 Redis数据类型 查阅Redis官方文档可知Redis提供给用户的核心数据类型有以下九个从上到下依次是字符串哈希列表集合有序集合流位图位域地址空间。因为Redis本身就是通过键值对的方式存储数据这些数据类型都存在于Redis的value中 不同的数据类型所需要的插入命令也不相同。下面我将依据官方文档对这九种数据类型依次进行介绍本篇文章将着重对ListSet两种数据类型进行介绍。 1.List类型 List类型是用来存储多个有序的字符串需要注意此处的有序指的是插入先后顺序并不是大小。在 Redis 中可以对列表两端插⼊push和弹出pop还可以获取指定范围的元素列表、 获取指定索引下标的元素等。
1常见命令
操作List类型的常用命令有lpushlpushxrpushrpushxlrangelpoprpoplindexlinsertllenblpopbrpop。下面将按顺序依次介绍用法。
操作类型命令时间复杂度添加 rpush key value [value ...] O(k)k 是元素个数 lpush key value [value ...] O(k)k 是元素个数 linsert key before | after pivot value O(n)n 是 pivot 距离头尾的距离 查找 lrange key start end O(sn)s 是 start 偏移量n 是 start 到 end 的范围 lindex key index O(n)n 是索引的偏移量 llen key O(1) 删除 lpop key O(1) rpop key O(1) lremkey count value O(k)k 是元素个数 ltrim key start end O(k)k 是元素个数 修改 lset key index value O(n)n 是索引的偏移量 阻塞操作 blpop brpop O(1)
LPUSH key element [element ...] lpush命令用于将一个或多个元素从左侧插入。
LPUSHX key element [element ...]
lpushx命令用于当key存在时将元素从左侧插入不存在则直接返回。
RPUSH key element [element ...]
rpush命令用于将一个或多个元素从右侧尾部插入。
RPUSHX key element [element ...] rpushx命令用于当key存在时讲一个或者多个元素从右侧插入。
LRANGE key start stop lrange用于获取从start到end区间的所有元素左闭右闭。
LPOP key lpop用于从list左侧取出元素头删。
RPOP key
rpop用于从list右侧取出元素尾删 。
LINDEX key index lindex用于获取从左数第indedx位置的元素。
LINSERT key BEFORE | AFTER pivot element linsert用于在特定位置前或后插入元素。
LLEN key
llen用于获取list长度 。
BLPOP key [key ...] timeout blpop是lpop的阻塞版本当所有key对应的列表都为为空时执行该命令的客户端将会阻塞直到某个列表被其他客户端插入元素或者设置的timeout时间到。 BRPOP key [key ...] timeout brpop是rpop的阻塞版本具体机制参考上面的blpop。
2内部编码 List类型在内存中存储时的内部编码有ziplistlinkedlist两种方式。Redis会根据当前值的类型和长度动态决定使用哪种内部编码实现可以通过object encoding key 命令来查看编码方式。
ziplist压缩列表当列表的元素个数⼩于 list-max-ziplist-entries 配置默认 512 个同时列表中每个元素的⻓度都⼩于 list-max-ziplist-value 配置默认 64 字节时Redis 会选⽤ziplist 来作为列表的内部编码实现来减少内存消耗。linkedlist链表当列表类型⽆法满⾜ ziplist 的条件时Redis 会使⽤ linkedlist 作为列表的内部实现。
2.Set类型
集合类型也是保存多个字符串类型的元素的但和列表类型不同的是集合中元素之间是⽆序的元素不允许重复。Redis 除了⽀持集合内的增删查改操作同时还⽀持多个集合取交集、并集、差集合理地使⽤好集合类型能在实际开发中解决很多问题。 1常见命令
操作Set类型的常用命令有saddsmemberssismemberscardspopsmovesremsintersinterstoresunionsunionstoresdiffsdiffstore。下面将按顺序依次介绍用法。
SADD key member [member ...]
时间复杂度O1sadd用于将一个或者多个元素添加到set中重复的元素无法添加到set中。
SMEMBERS key 时间复杂度ONsmembers用于获取一个set中的所有元素元素间的顺序是无序的。
SISMEMBER key member
时间复杂度O1 sismember用于判断一个元素在不在set中。 SCARD key 时间复杂度O1scard用于获取set的元素个数。
SPOP key [count]
时间复杂度ONspop用于从set中删除并返回一个或多个元素。
SMOVE source destination member 时间复杂度O1smove用于将一个元素从源set取出并放入目标set中。
SREM key member [member ...] 时间复杂度ONsrem用于将指定的元素从set中删除。
SINTER key [key ...]
时间复杂度ON*MN 是最⼩的集合元素个数. M 是最⼤的集合元素个数 sinter用于获取给定set的交集中的元素。 SINTERSTORE destination key [key ...]
时间复杂度ON*MN 是最⼩的集合元素个数. M 是最⼤的集合元素个数 sinterstore用于获取给定set的交集中的元素并保存在目标set中。
SUNION key [key ...]
时间复杂度ONN 给定的所有集合的总的元素个数 sunion用于获取给定set的并集中的元素。
SUNIONSTORE destination key [key ...]
时间复杂度ON sunionstore用于获取给定set的并集中的元素并保存在目标set中。
SDIFF key [key ...] 时间复杂度ONN 给定的所有集合的总的元素个数sdiff用于获取指定set的差集中的元素。
SDIFFSTORE destination key [key ...]
时间复杂度ONsdiffstore用于取给定set的并集中的元素并保存在目标set中。
2内部编码
集合类型在内存中存储时的内部编码方式有insethashtable两种方式。Redis会根据当前值的类型和长度动态决定使用哪种内部编码实现可以通过object encoding key 命令来查看编码方式。
intset整数集合当集合中的元素都是整数并且元素的个数⼩于 set-max-intset-entries 配置默认 512 个时Redis 会选⽤ intset 来作为集合的内部实现从⽽减少内存的使⽤。hashtable哈希表当集合类型⽆法满⾜ intset 的条件时Redis 会使⽤ hashtable 作为集合的内部实现。 ❤️ 我是小皮侠谢谢大家都能看到这里 主页已更新Java基础内容数据结构基础数据库算法 未来会更新Java项目SpringBootRedis以及各种Java路线会用到的技术。 求点赞求收藏求评论求关注 ♀️谢谢大家