string 字符串 是 Redis 最简单的数据结构。Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据。不同类型的数据结构的差异就在于 value 的结构不一样。
字符串结构使用非常广泛,一个常见的用途就是缓存用户信息。我们将用户信息结构体使用 JSON 序列化成字符串,然后将序列化后的字符串塞进 Redis 来缓存。同样,取用户信息会经过一次反序列化的过程。
Redis 的字符串是动态字符串,是可以修改的字符串,内部结构实现上类似于 Java 的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配,如图中所示,内部为当前字符串实际分配的空间 capacity 一般要高于实际字符串长度 len。当字符串长度小于 1M 时,扩容都是加倍现有的空间,如果超过 1M,扩容时一次只会多扩 1M 的空间。需要注意的是字符串最大长度为 512M
键值对
> set name hellc
OK
> get name
"hellc"
> exists name
(integer) 1
> del name
(integer) 1
> get name
(nil)
批量键值对
可以批量对多个字符串进行读写,节省网络耗时开销。
> set name1 hellc
OK
> set name2 hellc1
OK
> mget name1 name2 name3 # 返回一个列表
1) "hellc"
2) "hellc1"
3) (nil)
> mset name1 boy name2 girl name3 unknown
> mget name1 name2 name3
1) "boy"
2) "girl"
3) "unknown"
过期和 set 命令扩展
可以对 key 设置过期时间,到点自动删除,这个功能常用来控制缓存的失效时间。不过这个「自动删除」的机制是比较复杂的,如果你感兴趣,可以继续深入阅读第 26 节《朝生暮死——过期策略》
> set name hellc
> get name
"hellc"
> expire name 5 # 5s 后过期
... # wait for 5s
> get name
(nil)
> setex name 5 hellc # 5s 后过期,等价于 set+expire
> get name
"hellc"
... # wait for 5s
> get name
(nil)
> setnx name hellc# 如果 name 不存在就执行 set 创建
(integer) 1
> get name
"hellc"
> setnx name hellc1
(integer) 0 # 因为 name 已经存在,所以 set 创建不成功
> get name
"hellc" # 没有改变
计数
如果 value 值是一个整数,还可以对它进行自增操作。自增是有范围的,它的范围是 signed long 的最大最小值,超过了这个值,Redis 会报错。
> set age 30
OK
> incr age
(integer) 31
> incrby age 5
(integer) 36
> incrby age -5
(integer) 31
> set hellc 9223372036854775807
OK
> incr hellc
(error) ERR increment or decrement would overflow
字符串是由多个字节组成,每个字节又是由 8 个 bit 组成,如此便可以将一个字符串看成很多 bit 的组合,这便是 bitmap「位图」数据结构,位图的具体使用会放到后面
- 大小: 7.8 KB
- 大小: 17.4 KB
分享到:
相关推荐
此外,理解Redis的数据结构(如String、Hash、List、Set、Sorted Set)和它们的适用场景,有助于优化存储和查询性能。 10. **错误处理和异常安全**:在C++中,良好的错误处理和异常安全代码是必要的。当Redis操作...
除了基本的字符串操作,Redis还支持哈希(Hashes)、集合(Sets)、有序集合(Sorted Sets)和列表(Lists)等多种数据结构。例如,创建一个哈希: ```csharp var hash = new Dictionary<string, string> { { ...
Redis支持多种数据类型,本篇文章将对Redis的基础数据结构进行讲解,包括string(字符串)、list(列表)、set(集合)、hash(哈希)以及zset(有序集合)。掌握这些基础数据结构对使用Redis至关重要。 首先,字符...
Redis是一款高性能的键值存储系统,它以其丰富的数据结构、高效的数据操作以及强大的持久化机制在现代互联网架构中扮演着重要角色。本篇文章主要探讨Redis的核心数据结构和核心原理,以及如何利用IO多路复用技术处理...
在C#中使用Redis,首先要理解Redis的数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。这些数据结构对应于C#中的不同对象类型,例如字符串可以映射为string,...
在IT行业中,Redis是一款广泛应用的高性能键值存储系统,它以速度快、数据持久化和丰富的数据结构而闻名。而C++作为一门强大的编程语言,与Redis的结合使得开发者能够高效地利用Redis的功能。本篇文章将深入探讨如何...
对于Redis,Python的`redis`库提供了一套完整的API来操作各种数据结构;而对于MySQL,`pymysql`或`mysql-connector-python`等库则提供了SQL操作的接口。在实际应用中,这样的组合常常用于实现数据缓存、数据库读写...
Redis 支持多种数据结构,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。这些数据结构为应用程序提供了丰富的操作,比如存储用户信息、缓存页面内容、实现队列功能等。 ...
在Redis中,一个`String`可以是任何数据类型,比如简单的字符串、数字甚至是序列化后的复杂数据结构。 #### Redis String的内部实现 Redis中的字符串数据类型主要由`redisObject`(简称为`robj`)结构体表示。`...
Redis字符串类型是Redis数据库中最基础的数据结构之一,用于存储单个值。在Redis中,字符串类型不仅限于简单的文本,还可以表示整数或其他简单的数据。本文将深入探讨Redis如何存储和处理字符串类型。 首先,Redis...
Redis 支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等,还支持通过主从复制实现高可用性,以及通过LUA脚本、事务、发布订阅等特性来增强...
Redis是一款开源的高性能键值对存储数据库,它支持五种基础数据结构:字符串(string)、列表(list)、集合(set)、哈希(hash)和有序集合(zset)。这些数据结构为Redis提供了丰富多样的数据操作方式,使其广泛...
Redis 是一个高性能的内存数据结构服务器,常被用作数据库、缓存和消息中间件。它的特点是速度快,因为它将所有数据存储在内存中,并通过异步持久化到磁盘以保证数据安全性。Redis 支持丰富的数据类型,包括字符串...
Redis 是一款高性能的键值数据库,其基础数据结构包括字符串(string)、列表(list)、集合(set)、哈希(hash)和有序集合(zset)。这些数据结构在 Redis 中有着广泛的应用,下面将详细介绍它们的特点和用途。 1. 字符串...
5. **数据结构与操作**:Redis支持的数据结构包括: - 字符串(String):基本类型,可以存储文本或二进制数据。 - 哈希(Hash):键值对的集合,用于存储对象。 - 列表(List):按顺序存储元素,支持两端插入和删除。...
1. **Redis的数据类型**:Redis提供了多种数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。这些数据类型使得Redis在处理各种应用场景时非常灵活。 2. **持久化...
Redis使用多种自定义的数据结构来存储和操作数据,如字符串(String)、哈希表(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。这些数据结构在源码中都有对应的实现,例如` SDS (Simple Dynamic ...
1. 字符串(String):这是最基础的数据类型,对应数据结构是简单的字符串。在Redis中,字符串可以用来存储各种类型的数据,例如数字、文本等。 2. 列表(List):列表可以存储一组数据,有两种实现方式:压缩列表...
### Redis中最常用的String数据结构——SDS #### 引言 在探讨Redis中String数据结构的奥秘前,我们先回顾一下Redis之所以高效的原因。单线程机制避免了上下文切换,基于内存的操作大大提升了访问速度,而多路复用...
在本资料"05-Redis 核心数据结构 & Redis 6 新特性详解-郭嘉.zip"中,我们将深入探讨Redis的核心数据结构以及最新的Redis 6版本的新特性。 一、Redis核心数据结构 1. 字符串(String):Redis最基础的数据类型,可...