Redis是一个速度非常快的非关系型数据库,使用内存作为主存储,内存中的数据也可以被持久化到硬盘。Redis以键值对形式(key-value)存储数据,其中值可以分为5种类型:
- 字符串(string)
- 列表(list)
- 哈希(hash)
- 集合(set)
- 有序集合(zset)
- key
Redis 基本命令
字符串
Redis的字符串(string)可以存储字符串、整数、浮点数。String命令及描述如下表所示:
String命令 | 描述 |
set key value | 设置字符串key的值 |
get key | 获取字符串key的值 |
del key | 删除key |
strlen key | 获取值长度 |
mset key1 value1 key2 value2... | 设置多个值 |
mget key1 key2... | 获取多个值 |
append key value | 追加值 |
incr key | 将key对应的值加一 |
decr key | 将key对应的值减一 |
incrby key intnum | 将key对应的值加整数 |
decby key intnum | 将key对应的指减整数 |
127.0.0.1:6379> mset age 30 sex man
OK
127.0.0.1:6379> mget age sex
1) "30"
2) "man"
127.0.0.1:6379> append name lisi
(integer) 4
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> strlen name
(integer) 4
127.0.0.1:6379> incr age
(integer) 31
127.0.0.1:6379> incrby age 10
(integer) 41
127.0.0.1:6379> decr age
(integer) 40
127.0.0.1:6379> decrby age 20
(integer) 20
127.0.0.1:6379>
列表
Redis的列表(list)可以有序地存储多个字符串。List命令及描述如下所示:
索引值从0开始,可以为负数
List命令 | 描述 |
lpush key1 value1 value2 ... | 在列表key左端插入一个或者多个值 |
rpush key1 value1 value2 ... | 在列表key右端插入一个或者多个值 |
linsert key before/after pivot value | 在一个元素的前/后插入新的元素 |
lset key index value | 设置指定索引的元素值 |
lpop key | 在列表key左端弹出一个值 |
rpop key | 在列表key右端弹出一个值 |
llen key | 获取列表key的长度 |
lindex key index | 获取列表key中index位置的值 |
lrange key start end | 获取列表key中位置在[start,end]范围的值 |
ltrim key start end | 裁剪列表,改为元集合的一个子集 |
127.0.0.1:6379> lpush fond study game sing
(integer) 3
127.0.0.1:6379> lrange fond 0 -1
1) "sing"
2) "game"
3) "study"
127.0.0.1:6379> rpush friends Jane Jack
(integer) 2
127.0.0.1:6379> linsert friends after Jack kangkang
(integer) 3
127.0.0.1:6379> lrange friends 0 -1
1) "Jane"
2) "Jack"
3) "kangkang"
127.0.0.1:6379> lset fond 2 swim
OK
127.0.0.1:6379> lpop fond
"sing"
127.0.0.1:6379> rpop friends
"kangkang"
127.0.0.1:6379> lrange fond 0 -1
1) "game"
2) "swim"
127.0.0.1:6379> llen fond
(integer) 2
127.0.0.1:6379> lindex fond 0
"game"
127.0.0.1:6379> ltrim friends 0 2
OK
127.0.0.1:6379> lrange friends 0 -1
1) "Jane"
2) "Jack"
哈希
Redis的哈希(Hash)可以存储多个键值对,其中的键和值都是字符串。Hash命令及描述如下表所示:
Hash命令 | 描述 |
hset key field value | 将哈希key的field字段赋值为value |
hmset key field1 value1 field2 value2... | 设置多个值 |
hdel key field1 field2... | 删除哈希key的一个或多个字段 |
hget key field | 获取哈希key的field字段的值 |
hmget key field1 field 2 | 获取多个属性的值 |
hgetall key | 获取哈希key 的所有字段和值 |
hkeys key | 获取所有属性 |
hvals key | 获取所有值 |
hlen key | 返回包含数据的个数 |
hexists key field | 判断属性是否存在,存在返回1,不存在返回0 |
hstrlen key field | 返回值的字符串长度 |
127.0.0.1:6379> hset point x 10
(integer) 1
127.0.0.1:6379> hmset point y 20
OK
127.0.0.1:6379> hget point y
"20"
127.0.0.1:6379> hmget point
(error) ERR wrong number of argu
127.0.0.1:6379> hmget point x z
1) "10"
2) "30"
127.0.0.1:6379> hgetall point
1) "x"
2) "10"
3) "y"
4) "20"
5) "z"
6) "30"
127.0.0.1:6379> hkeys point
1) "x"
2) "y"
3) "z"
127.0.0.1:6379> hvals point
1) "10"
2) "20"
3) "30"
127.0.0.1:6379> hlen point
(integer) 3
127.0.0.1:6379> hexists point w
(integer) 0
127.0.0.1:6379> hstrlen point x
(integer) 2
127.0.0.1:6379> hdel point x y z
(integer) 3
集合
Redis中的集合(set)可以存储多个唯一的字符串。set命令及描述如下表所示:
set命令 | 描述 |
sadd key member 1 member 2... | 向集合key中添加一个或多个成员 |
srem key member 1 member 2... | 删除集合key中一个或者多个成员 |
smembers key | 获取集合key中所有成员 |
scard key | 获取集合key中成员数量 |
sismember key member | 判断member是否集合key的成员 |
sinter key 1 key 2... | 求多个集合的交集 |
sdiff key 1 key 2... | 求多个集合的差集 |
sunion key 1 key 2... | 求多个集合的合集 |
127.0.0.1:6379> sadd color red black blue whi
(integer) 4
127.0.0.1:6379> smembers color
1) "black"
2) "white"
3) "blue"
4) "red"
127.0.0.1:6379> scard color
(integer) 4
127.0.0.1:6379> sismember color yellow
(integer) 0
127.0.0.1:6379> sadd colors red blue yellow p
(integer) 4
127.0.0.1:6379> sinter color colors
1) "blue"
2) "red"
127.0.0.1:6379> sdiff color colors
1) "black"
2) "white"
127.0.0.1:6379> sunion color colors
1) "yellow"
2) "black"
3) "pink"
4) "white"
5) "blue"
6) "red"
127.0.0.1:6379> srem color red black
(integer) 2
有序集合
Redis中的有序集合(ZSet)与集合(Set)类似,可以存储多个唯一的字符串,
但在有序集合中,每个成员都有一个分数,所有成员按给定分数在集合中有序排列。
Zset命令及描述如下图所示:
Zset命令 | 描述 |
zadd key score 1 member 1 score2 member2.. | 向有序集合key中添加一个或多个成员 |
zrem key member member2... | 删除有序集合key中一个或多个成员 |
zrange key start stop | 获取有序集合key中位置在[start,end]范围的所有成员 |
zrangebyscore key minmax | 获取有序集合key中分值在[min,max]范围的所有成员 |
zcount key key min max | 获取有序集合key中分值在[min,max]范围的个数 |
zcard key | 返回元素的个数 |
zscore key member | 返回有序集合key中,成员member的分值 |
127.0.0.1:6379> zadd country 1 China 2 Russia 3 India 4 France
(integer) 5
127.0.0.1:6379> zrange country 0 -1
1) "China"
2) "Russia"
3) "India"
4) "France"
5) "Italy"
127.0.0.1:6379> zrangebyscore country 1 3
1) "China"
2) "Russia"
3) "India"
127.0.0.1:6379> zcount country 1 4
(integer) 4
127.0.0.1:6379> zcard country
(integer) 5
127.0.0.1:6379> zscore country China
"1"
KEY
key命令 | 描述 |
keys pattern | 查找键,参数支持正则 |
exists key | 判断键是否存在,如果存在返回1,不存在返回0 |
type key | 查看键及对应的值 |
del key1 key2 ... | 删除键及对应的值 |
expire key seconds | 设置过期时间,以秒为单位 |
ttl key | 查看有效时间,以秒为单位 |
- 更多请参考官网 https://redis.io