前面介绍了Redis的集中数据结构,包括string、list、hash、set、zset。其中很多命令都是对value的操作,这章主要涉及到对key进行管理。
Redis 的keys命令用于管理键。
KEYS * 匹配数据库中所有 key 。
KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
KEYS h*llo 匹配 hllo 和 heeeeello 等。
KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符号用 \ 隔开。
EXISTS 命令的作用是判断指定key是否存在 MOVE命令的作用是将当前数据库的 key 移动到给定的数据库 db 当中
RENAME命令可以将原有的 key 修改为新的key名称
在 redis 中可以使用SORT命令来实现排序
redis 支持序列化,使用DUMP命令来序列化给定key的值
为key设置生存时间需要使用EXPIRE命令
TTL命令的作用是获取给定 key 剩余生存时间(TTL, time to live);当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。
总结下:
Redis数据库里的每个键值对都是由对象组成的,其中数据库的键总是一个字符串对象;值则可以是string,list,hash,set,sortedset这五种对象的一种。
例子:
创建一个键位字符串对象,值为字符串对象:set msg "Hello Spark"
创建一个键位字符串对象,值为列表 对象:rpush numb 1 3 5 7 8
Redis没有直接使用C语言传统的字符串表示,而是自己构建了一种名为:简单动态字符串(SDS)的抽象类型,将SDS用作Redis默认字符串表示。而传统的C字符串只会作为字符串字面量用在一些无须字符串值进行修改的地方。当需要的是可以被修改的字符串值时,就会用SDS表示字符串了。
SET msg "hello world"
那么Redis将在数据库中创建一个新的键值对,其中:
·键值对的键是一个字符串对象,对象的底层实现是一个保存着字符串“msg”的SDS。
·键值对的值也是一个字符串对象,对象的底层实现是一个保存着字符串“hello world”的SDS。
RPUSH fruits "apple" "banana" "cherry"
那么Redis将在数据库中创建一个新的键值对,其中:
·键值对的键是一个字符串对象,对象的底层实现是一个保存了字符串“fruits”的SDS。
·键值对的值是一个列表对象,列表对象包含了三个字符串对象,这三个字符串对象分别由三个SDS实现:第一个SDS保存着字符串“apple”,第二个SDS保存着字符串“banana”,第三个SDS保存着字符串“cherry”。
除了用来保存数据库中的字符串值之外,SDS还被用作缓冲区(buffer):AOF模块中的AOF缓冲区,以及客户端状态中的输入缓冲区,都是由SDS实现的,在之后介绍AOF持久化和客户端状态的时候,我们会看到SDS在这两个模块中的应用。