网上买手表哪个网站可以买到正品,搞个网站需要多少钱,哪些专业能建网站,网站推广优化怎么做最好概述
Redis 是速度非常快的非关系型#xff08;NoSQL#xff09;内存键值数据库#xff0c;可以存储键和五种不同类型的值之间的映射。
键的类型只能为字符串#xff0c;值支持五种数据类型#xff1a;字符串、列表、集合、散列表、有序集合。
Redis 支持很多特性…概述
Redis 是速度非常快的非关系型NoSQL内存键值数据库可以存储键和五种不同类型的值之间的映射。
键的类型只能为字符串值支持五种数据类型字符串、列表、集合、散列表、有序集合。
Redis 支持很多特性例如将内存中的数据持久化到硬盘中使用复制来扩展读性能使用分片来扩展写性能。
数据类型
数据类型可以存储的值操作STRING字符串、整数或者浮点数对整个字符串或者字符串的其中一部分执行操作对整数和浮点数执行自增或者自减操作LIST列表从两端压入或者弹出元素对单个或者多个元素进行修剪只保留一个范围内的元素SET无序集合添加、获取、移除单个元素检查一个元素是否存在于集合中计算交集、并集、差集从集合里面随机获取元素HASH包含键值对的无序散列表添加、获取、移除单个键值对获取所有键值对检查某个键是否存在ZSET有序集合添加、获取、删除元素根据分值范围或者成员来获取元素计算一个键的排名
STRING
Redis 的 String 类型使用 SDS简单动态字符串作为底层的数据结构实现。SDS 与 C 字符串有所不同它不仅可以保存文本数据还可以保存二进制数据。这是因为 SDS 使用 len 属性的值而不是空字符来判断字符串是否结束并且 SDS 的所有 API 都会以处理二进制的方式来处理 SDS 存放在 buf[] 数组里的数据。因此SDS 不仅能存放文本数据还能保存图片、音频、视频、压缩文件等二进制数据。
另外Redis 的 SDS API 是安全的拼接字符串不会造成缓冲区溢出。这是因为 SDS 在拼接字符串之前会检查 SDS 空间是否满足要求如果空间不够会自动扩容从而避免了缓冲区溢出的问题。
此外获取字符串长度的时间复杂度是 O(1)因为 SDS 结构里用 len 属性记录了字符串长度所以获取长度的复杂度为 O(1)。相比之下C 语言的字符串并不记录自身长度所以获取长度的复杂度为 O(n)。这些特性使得 SDS 成为 Redis 的一个重要组成部分。 set hello world
OKget hello
worlddel hello
(integer) 1get hello
(nil)LIST
Redis 的 List 类型底层数据结构可以由双向链表或压缩列表实现。如果列表元素个数小于 512 个且每个元素的值都小于 64 字节则 Redis 会使用压缩列表作为底层数据结构否则Redis 会使用双向链表作为底层数据结构。然而在 Redis 3.2 版本之后List 类型底层数据结构只由 quicklist 实现代替了双向链表和压缩列表。 rpush list-key item
(integer) 1rpush list-key item2
(integer) 2rpush list-key item
(integer) 3 lrange list-key 0 -1
1) item
2) item2
3) item lindex list-key 1
item2 lpop list-key
item lrange list-key 0 -1
1) item2
2) itemSET
Set 类型的底层数据结构可以是哈希表或整数集合。当集合中的元素都是整数并且元素个数小于512时Redis使用整数集合作为Set类型的底层数据结构否则Redis使用哈希表作为Set类型的底层数据结构。 sadd set-key item
(integer) 1sadd set-key item2
(integer) 1sadd set-key item3
(integer) 1sadd set-key item
(integer) 0 smembers set-key
1) item
2) item2
3) item3 sismember set-key item4
(integer) 0sismember set-key item
(integer) 1 srem set-key item2
(integer) 1srem set-key item2
(integer) 0 smembers set-key
1) item
2) item3HASH
Redis 中的 Hash 类型的底层数据结构可以是压缩列表或哈希表。如果元素个数小于 512 个且每个元素的值都小于 64 字节Redis 会使用压缩列表作为底层数据结构否则会使用哈希表。在 Redis 7.0 中压缩列表已经废弃改用 listpack 数据结构来实现。 hset hash-key sub-key1 value1
(integer) 1hset hash-key sub-key2 value2
(integer) 1hset hash-key sub-key1 value1
(integer) 0 hgetall hash-key
1) sub-key1
2) value1
3) sub-key2
4) value2 hdel hash-key sub-key2
(integer) 1hdel hash-key sub-key2
(integer) 0 hget hash-key sub-key1
value1 hgetall hash-key
1) sub-key1
2) value1ZSET
Zset 类型的底层数据结构可以是压缩列表或跳表。
如果有序集合的元素个数小于 128 个且每个元素的值小于 64 字节则 Redis 会使用压缩列表作为 Zset 类型的底层数据结构。
如果有序集合的元素个数大于等于 128 个或者每个元素的值大于等于 64 字节则 Redis 会使用跳表作为 Zset 类型的底层数据结构。
需要注意的是Redis 7.0 中废弃了压缩列表数据结构改用 listpack 数据结构来实现。 zadd zset-key 728 member1
(integer) 1zadd zset-key 982 member0
(integer) 1zadd zset-key 982 member0
(integer) 0 zrange zset-key 0 -1 withscores
1) member1
2) 728
3) member0
4) 982 zrangebyscore zset-key 0 800 withscores
1) member1
2) 728 zrem zset-key member1
(integer) 1zrem zset-key member1
(integer) 0 zrange zset-key 0 -1 withscores
1) member0
2) 982最后
为了方便其他设备和平台的小伙伴观看往期文章
微信公众号搜索Let us Coding关注后即可获取最新文章推送
看完如果觉得有帮助欢迎 点赞、收藏、关注