概述
Redis
是一个使用C语言编写的非关系型数据库(NoSQL), 它是一个key-value
的存储系统,由于数据都缓存在内存中,因此效率十分高效,并且可以将存储在内存中的键值对数据持久化到磁盘中。
Redis数据结构
Redis
可以存储键(key)与五种不同数据结构类型之间的映射关系。这五种数据结构类型分别为STRING
、LIST
、SET
、HASH
和ZSET
。
结构类型 | 结构存储的值 |
---|---|
STRING | 字符串、整数或者浮点数 |
LIST | 一个链表,链表上的每个节点都包含了一个字符串 |
SET | 不重复的字符串 |
HASH | 键值对的映射关系 |
ZSET | 字符串成员(member)与浮点数分值(score)之间的有序映射,元素之间的排列顺序由分值的大小决定 |
Redis命令
DEL
: 删除一个或多个key,不存在的key会被忽略。
语法:DEL key
DEL key1 key2…(删除多个key)
返回值:被删除key的数量
127.0.0.1:6379> SET name redis
OK
127.0.0.1:6379> DEL name
(integer) 1
EXISTS
: 检查给定的key是否存在 返回值:若key存在,返回1,否则返回0
127.0.0.1:6379> SET str redis
OK
127.0.0.1:6379> EXISTS str
(integer) 1
127.0.0.1:6379> DEL str
(integer) 1
127.0.0.1:6379> EXISTS str
(integer) 0
EXPIRE key seconds
: 设置key的过期时间(单位是秒),超过时间后,将会自动删除该key。
对已经有过期时间的key执行EXPIRE
操作,将会更新它的过期时间
返回值: 如果成功设置过期时间,返回1;如果key不存在或无法设置过期时间,返回0。
127.0.0.1:6379> SET key1 'redis'
OK
127.0.0.1:6379> EXPIRE key1 10
(integer) 1
127.0.0.1:6379> TTL key1
(integer) 5
127.0.0.1:6379> SET key1 'hello'
OK
127.0.0.1:6379> TTL key1
(integer) -1
PERSIST key
: 移除给定key的过期时间
返回值:当过期时间移除成功时返回1;如果key不存在或者key没有设置过期时间则返回0
127.0.0.1:6379> SET mykey "Redis"
OK
127.0.0.1:6379> EXPIRE mykey 20
(integer) 1
127.0.0.1:6379> PERSIST mykey
(integer) 1
127.0.0.1:6379> TTL mykey
(integer) -1
127.0.0.1:6379>
RENAME key newkey
:将key重命名为newkey,如果key与newkey相同,则返回一个错误。如果newkey已经存在则值将被覆盖
127.0.0.1:6379> SET key "redis"
OK
127.0.0.1:6379> RENAME key newkey
OK
127.0.0.1:6379> GET newkey
"redis"
TTL key
: 返回key的剩余时间。如果key不存在或者已过期,返回-2;如果key存在并且没有设置过期时间(永久有效),返回-1
127.0.0.1:6379> SET mykey "Redis"
OK
127.0.0.1:6379> EXPIRE mykey 20
(integer) 1
127.0.0.1:6379> TTL mykey
(integer) 20
TYPE key
: 返回key
所存储的value
的数据结构类型,它可以返回string
, list
, set
, zset
和 hash
等不同的类型。
127.0.0.1:6379> SET key1 "value"
OK
127.0.0.1:6379> LPUSH key2 "value"
(integer) 1
127.0.0.1:6379> SADD key3 "value"
(integer) 1
127.0.0.1:6379> TYPE key1
string
127.0.0.1:6379> TYPE key2
list
127.0.0.1:6379> TYPE key3
set
返回值:返回当前key
的数据类型,如果key
不存在时返回none
APPEND key value
:如果 key
已经存在,并且值为字符串,那么这个命令会把 value
追加到原来值(value)的结尾。 如果 key
不存在,那么它将首先创建一个空字符串的key
,再执行追加操作。
返回值:返回append后字符串值(value)的长度
127.0.0.1:6379> SET key1 "redis"
OK
127.0.0.1:6379> APPEND key1 "hello"
(integer) 10
127.0.0.1:6379> GET key1
"redishello"
DECR key
:对key对应的数字做减1操作。如果key不存在,那么在操作之前,这个key对应的值会被置为0。如果key有一个错误类型的value或者是一个不能表示成数字的字符串,就返回错误。
返回值:数字:减小之后的value
127.0.0.1:6379> SET num 10
OK
127.0.0.1:6379> DECR num
(integer) 9
DECRBY key decrement
:将key对应的数字减decrement。如果key不存在,操作之前,key就会被置为0。如果key的value类型错误或者是个不能表示成数字的字符串,就返回错误。
127.0.0.1:6379> SET num 10
OK
127.0.0.1:6379> DECRBY num 5
(integer) 5
SETEX key seconds value
:设置key对应字符串value,并且设置key在给定的seconds时间之后超时过期。这个命令等效于执行下面的命令:
SET mykey value
EXPIRE mykey seconds
STRLEN key
:返回key的string类型value的长度。如果key对应的非string类型,就返回错误。
返回值:key对应的字符串value的长度,或者0(key不存在)
127.0.0.1:6379> SET mykey "redis"
OK
127.0.0.1:6379> STRLEN mykey
(integer) 5