Redis值的5种结构

Redis简介

Redis是一个速度非常快的非关系型数据库,它可以存储键(key)和5种不同类型的值(value)之间的映射。

5种不同类型的值的结构

1.String类型(字符串类型)

String类型存储的数据类型可以是字符串,整数或者浮点数。该结构可以执行的操作:对整数和浮点数执行自增或自减操作。
字符串拥有一些与其他键值存储相似的命令:
(1)GET 获取存储在指定key中的value
(2)SET 设置指定key中的value
(3)DEL 删除指定key

话不多说,上代码,打开redis-cli客户端,依次尝试3个命令,体会作用。


2.List类型(列表类型)

List类型的结构和数据结构中的链表类似。
List类型基本命令:
(1)RPUSH
   将给定值推入列表的右端
(2)LRANGE
   获取列表在指定两个索引之间的值
(3)LINDEX
   根据指定索引获取该位置上的值
(4)LPOP
   从列表左端弹出值,并返回弹出的值

尝试4个命令,体会作用。


3.Set类型(集合类型)

Set类型和List类型结构的区别,Set类型利用散列表的特点,确保存储在Set中的字符串不相同。
Set类型基本命令:
(1)SADD
   将给定元素加入到集合中
(2)SMEMBERS
   返回集合中包含的所有元素
(3)SISMEMBER
   判断指定元素是否在集合中
(4)SREM
   如果指定元素存在于集合中,那么移除这个元素

尝试4个命令。


4.Hash类型(散列类型)

Redis的散列可以存储多个键值对之间的映射。注意:Redis中的Hash类型和java中的Hashmap一样,当Redis中的Hash表中存储的数据所占总空间的比例达到或超过负载因子的大小时,Redis会对该Hash表进行rehash操作,并且整个rehash过程是分步完成的,不是一次性完成的。
Hash类型基本命令:
(1)HSET
   设定键值对的键和值
(2)HGET
   获取指定散列键的值
(3)HGETALL
   获取散列包含的所有键值对
(4)HDEL

   如果指定键存在于散列中,那么移除这个键


5.Zset类型(有序集合)

有序集合和散列一样,都可以用来存储键值对,不过有序集合中键值对的顺序是根据用户设置的score值排定的。在Redis中zset是通过跳跃表实现的,在大部分情况下,跳跃表的查找性能和平衡二叉树媲美,但跳跃表的实现比平衡二叉树简单的多。
(1)ZADD
   将给定分值的成员添加到有序集合里面
(2)ZRANGE
   根据给定的索引值取出集合中对应的元素
(3)ZRANGEBYSCORE
   根据给定的分值范围取出所有分值在此范围内的元素
(4)ZREM

   如果给定成员存在于集合中,那么移除这个元素


Redis 支持多种数据结构类型,这些数据结构为开发者提供了丰富的操作能力,适用于各种业务场景。以下是 Redis 支持的主要数据结构类型: ### 字符串(String) 字符串是 Redis 中最基本的数据结构,可以存储文本或二进制数据。它支持多种编码方式,包括整数(int)、短字符串(embstr)和长字符串(raw),根据存储内容自动选择最合适的编码方式[^5]。例如,存储一个简单的键对: ```java // 存储字符串 SET mykey "Hello" // 获取字符串 GET mykey ``` ### 列表(List) 列表是基于链表实现的有序集合,支持在头部或尾部进行高效的插入和删除操作。列表适用于消息队列等场景。例如: ```java // 向列表头部添加元素 LPUSH mylist "world" // 向列表尾部添加元素 RPUSH mylist "hello" // 获取列表中的元素 LRANGE mylist 0 -1 ``` ### 集合(Set) 集合是一个无序且元素唯一的数据结构,类似于 Java 中的 HashSet。集合支持高效的成员检查和集合运算(如并集、交集)。例如,存储一组唯一的用户 ID: ```java // 向集合中添加元素 SADD myset "member1" // 获取集合中的所有元素 SMEMBERS myset ``` 集合的底层实现包括哈希表(hashtable)和整数集合(intset),根据元素类型和数量自动选择[^3]。 ### 哈希(Hash) 哈希类似于一个小型的数据库表,存储字段和的映射关系,适用于存储对象属性。例如,存储商品信息: ```java // 存储哈希字段和 HSET goods apple "苹果" // 获取哈希中的字段 HGET goods apple ``` 哈希表的实现支持高效的读写操作,适用于存储结构化数据[^4]。 ### 有序集合(ZSet 或 Sorted Set) 有序集合是集合的一个扩展,每个元素都关联一个分数,用于排序。有序集合支持范围查询和排名计算,适用于排行榜等场景。例如: ```java // 向有序集合中添加元素及其分数 ZADD myzset 1 "one" // 获取有序集合中的元素 ZRANGE myzset 0 -1 WITHSCORES ``` 有序集合的底层实现通常使用跳跃表(Skip List)和哈希表相结合,以支持高效的排序和查找操作。 ### 数据过期与持久化 Redis 提供了 `EXPIRE` 命令来为 key 设置过期时间,不同数据结构的持久化策略可能不同。根据业务需求决定是否需要启用 Redis 的持久化机制(RDB 或 AOF),以及数据结构的持久化需求[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值