Redis 支持丰富的数据格式,下面是 Redis 支持的数据格式列表:
- Binary-safe strings
- Lists
- Sets
- Sorted sets
- Hashes
- Bit arrays
- HyperLogLogs
在本节中我们讲解 Redis 的基本操作以及 String 类型相关操作。
Redis keys
这里是一些 Redis keys 的规则:
- redis keys 是二进制安全的。
- 太长的 key 不好
- 太短的 key 通常也不好
- 尝试定义一个 schema
- key 的最大长度是 512 MB
Redis Strings
strings 是 redis 中最简单的类型,也是 memcached 唯一的数据类型。(作者这么说是有一点小骄傲的意思)
打开 redis 目录中的 redis-cli 工具,我们来看一下 string 类型怎么用。
127.0.0.1:6379> set mykey somevalue OK 127.0.0.1:6379> get mykey "somevalue"
如上所示,使用 SET 和 GET 命令来存取 string 类型的值。注意 SET 会覆盖掉原有的值,即使后续 value 是一个空值也会把原来的值清空。
我们可以给 SET 命令加一个 nx 参数,指定 key 存在的时候 SET 操作失败;或者加一个 xx 参数,指定只有 key 已经存在的时候 SET 操作才会成功。
127.0.0.1:6379> set mykey newval nx (nil) 127.0.0.1:6379> get mykey "somevalue" 127.0.0.1:6379> set mykey2 newvalue xx (nil) 127.0.0.1:6379> set mykey newvalue xx OK
我们还可以把数字当字符串存储,redis 也为这种数值提供了一系列的原子操作(INCR、INCRBY、DECR、DECRBY 等)。
127.0.0.1:6379> set counter 100 OK 127.0.0.1:6379> get counter "100" 127.0.0.1:6379> incr counter (integer) 101 127.0.0.1:6379> incrby counter 50 (integer) 151
上述原子操作有效地解决了多个客户端的竞争问题。
GETSET 命令可以给一个 key 设置新值并返回旧值。一个典型的使用场景是计算网站的 pv:每次用户访问的时候,我们可以用 INCR 命令把计数器加一,如果我们要每个小时统计一次 pv,使用 GETSET 命令设置新值为 "0",这样就不会丢失任何一个访问请求了。
MSET 和 MGET 可以一次操作多个 key,对减小延迟很有好处(遗憾的是 codis 对这两个操作的支持不够好)
127.0.0.1:6379> mset a 10 b 20 c 30 OK 127.0.0.1:6379> mget a b c 1) "10" 2) "20" 3) "30"
对 Redis key 的操作
Redis 提供一些命令来操作 key,最有用的是 EXIST、DEL 和 TYPE 这三个。EXIST 用来判断一个 key 是否存在,DEL 命令可以删除一个 key,TYPE 命令可以查看这个 key 对应的 value 类型。
127.0.0.1:6379> set mykey hello OK 127.0.0.1:6379> exists mykey (integer) 1 127.0.0.1:6379> del mykey (integer) 1 127.0.0.1:6379> exists mykey (integer) 0 127.0.0.1:6379> set mykey x OK 127.0.0.1:6379> type mykey string 127.0.0.1:6379> del mykey (integer) 1 127.0.0.1:6379> type mykey none
过期时间
这里我们看下 Redis 的过期时间机制:你可以对每个 key 设置一个存活时间,这个时间到了 key 就会自动销毁,跟自动调用 DEL 命令删除的效果一样。
Redis 过期时间需要注意的几点:
- 支持以秒或毫秒为单位来设置过期时间
- Redis 系统对过期时间的解析精度总是毫秒
- 过期时间的信息是被多备份地存储在磁盘上,因此不受 Redis 服务器挂掉的影响。
127.0.0.1:6379> set key some-value OK 127.0.0.1:6379> get key "some-value" 127.0.0.1:6379> expire key 5 (integer) 1 127.0.0.1:6379> get key "some-value" 127.0.0.1:6379> get key (nil)
上例中我们用 EXPIRE 命令指定了 key 的过期时间是 5 秒,在两次 GET 命令期间,这个 key 自动销毁了。
我们还可以使用 PERSIST 命令把 key 的过期时间去掉。
另外我们在创建 key 的时候也可以直接指定过期时间,像这样:
127.0.0.1:6379> set key 100 ex 10 OK 127.0.0.1:6379> ttl key (integer) 8 127.0.0.1:6379> ttl key (integer) -2 127.0.0.1:6379> ttl key (integer) -2 127.0.0.1:6379> get key (nil)
上述例子设置了 key 的值为 100,过期时间是 10 秒,后续用 TTL 命令查看 key 的剩余存活时间,可以看到 key 过期之后存活时间一直显示为 -2(猜测是一种状态标识约定)。
使用 PEXPIRE 和 PTTL 命令可以执行精度为毫秒的对应操作,像下面这样:
127.0.0.1:6379> set key 100 OK 127.0.0.1:6379> get key "100" 127.0.0.1:6379> pexpire key 15000 (integer) 1 127.0.0.1:6379> ttl key (integer) 11 127.0.0.1:6379> pttl key (integer) 8523
相关推荐
1. **数据类型**: Redis支持五大数据类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set),这些类型为各种应用场景提供了丰富的选择。 2. **持久化**: Redis提供了两种主要的持久化...
1. 数据类型:Redis支持五种基本数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set),每种类型都有其特定的应用场景。 2. 持久化:为了防止数据丢失,Redis提供了RDB(定期...
Redis支持多种数据类型,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。这些数据类型允许用户以灵活的方式存储和操作数据。 在Windows上安装Redis-x64-5.0.14,首先需要...
7. **数据类型与操作**:Redis支持多种数据结构,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。了解这些数据类型及其操作方法是使用Redis的基础。 8. **持久化**:Redis...
《深入理解PHPRedis扩展》 ...通过以上内容,我们可以了解到PHPRedis扩展的基本特性和使用方式,以及如何安装和优化。无论是在日常开发还是大型项目中,掌握PHPRedis都能极大地提升我们的工作效率和应用性能。
1. **数据类型**:Redis支持五种基本数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set),这些类型提供了丰富的操作命令,满足各种应用场景。 2. **高性能**:Redis通过内存...
- **数据类型**:Redis支持多种数据类型,如字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(sorted set)。 - **持久化**:Redis可以通过RDB(快照)或AOF(追加日志)两种方式实现数据的持久化,...
1. **数据类型**: 支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)等多种数据结构,适合处理各种应用场景。 2. **持久化**: 提供了RDB(快照)和AOF(Append Only File)两种持久化...
2. **数据类型**:Redis支持丰富的数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。 3. **持久化**:Redis可以通过RDB(快照)或AOF(追加日志)两种方式进行数据持久化,...
支持的数据类型包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。你可以创建、删除、修改键值,以及执行如查找、排序等操作。 3. **数据导入与导出**:工具提供数据导入和...
1. **数据类型**:Redis 支持五大数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。这些类型提供了丰富的操作命令,可以满足多种存储需求。 2. **持久化**:...
- String:基本类型,存储字符串,支持简单的数学运算。 - List:列表,可以存储多个有序的元素。 - Set:集合,无序且不允许重复的元素集合。 - Sorted Set:有序集合,集合基础上增加了分数字段,可以按分数...
- **数据类型**:Redis支持丰富的数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。 - **持久化**:Redis可以通过RDB(快照)或AOF( Append Only File)方式...
8. **数据类型**:Redis支持五种基本数据类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set),每种类型都有其特定的应用场景。 在Windows环境下安装和运行Redis 2.6.12需要...
- **README**:项目介绍和使用指南。 6. **最佳实践**: - **缓存粒度**:合理设置缓存的粒度,避免过于细化导致过多小对象消耗内存。 - **缓存更新策略**:根据业务需求选择合适的更新策略,如定时刷新、手动...
在5.0版本中,Redis引入了Stream数据类型,这是对已有的String、Hash、List、Set和Sorted Set等数据类型的补充。Streams允许存储时间序列数据,非常适合日志记录和实时分析。此外,此版本还增强了复制功能,引入了...
1. 字符串(String):最基本的类型,可以存储任何字符串,包括数字。 2. 哈希(Hash):存储键值对的集合,适合表示对象。 3. 列表(List):有序的元素序列,可以双向插入和删除。 4. 集合(Set):无序的不重复元素集。 5...
7. **数据类型**:Redis支持五种基本数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Sorted Set(有序集合)。每种类型都有其特定的操作命令,比如`LPUSH`向列表头部添加元素,`SADD`向集合...
1. Redis支持五种基本数据类型:String(字符串)、List(列表)、Set(集合)、Hash(哈希表)和Sorted Set(有序集合)。每种数据类型都有其特定的使用场景和操作命令。 2. String是最基础的数据类型,你可以用`...
1. **数据类型**:Redis支持五种基本数据类型,包括String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Sorted Set(有序集合)。 2. **持久化**:Redis提供两种持久化方式,RDB(快照)和AOF(追加日志)...