Redis数据

Redis数据结构

  • Redis时key-value的数据结构,每条数据都是一个键值对
  • 键的类型必须是字符串,但是键不允许重复
  • 值得类型分为五种:
    • string:字符串
    • hash:哈希,值中也是键值对得数据
    • list:列表
    • set:集合,集合内部的元素不允许重复
    • zset:有序集合,集合的内部元素不允许重复

数据类型

除了以下命令,redis还包括很多其它的命令,详见参考:https://doc.redisfans.com

键命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查找数据库中有哪些键
keys 正则表达式

# 判断键是否存在,存在则返回1,否则返回0
exists key1

# 判断键对应的value类型
type key1

# 删除键及对应的值
del key1 key2 ...

# 追加键的过期时间,如果不设定则该key-value将一直存在
expire key seconds

# 查看键的剩余有效时间
ttl key1

String类型

字符串类型是Redis中最为基础的数据存储类型,在redis中是二进制安全的,它可以接受任何格式的数据,且其字符串类型的value最多可以接受数据的长度为512M

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 设置键值
set key value

# 设置键值和过期时间
setex key seconds value

# 设置多个键值
mset key1 value1 key2 value2 ...

# 对key的value字段追加值
append key value

# 获取键对应的值,若键对应的值不存在则返回nil
get key

# 一次获取多个键对应的值
mget key1 key2 key3 ...

Hash类型

hash用于存储对象,对象的结构就是属性、值

hash值得类型为string

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 设置单个属性,value必须是字符串类型
hset key field value

# 设置多个属性值
hset key1 field1 value1 key2 field2 value2 ....

# 获取hash键所有的属性值
hkeys key

# 获取hash中某一个属性的值
hget key field

# 一次获取多个属性的值
hmget key field1 field2

# 获取所有属性的值
hvals key

# 删除整个hash键与值
del key

# 删除属性及对应的值信息
hdel key field1 field2

# 获取hash属性中列表的长度
hlen key

List类型

列表的元素类型为string,列表中元素按照插入顺序进行排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 在指定的键左侧插入数据
lpush key value1 value2 ...

# 在指定的键右侧插入数据
rpush key value1 value2 ...

# 在指定的元素前/后插入数据
linsert key before/after [现有元素] value1 value2 ...

# 返回列表中指定范围内的元素
# start、end是索引下标,索引从0开始,可以是负数,负数表示从尾部开始,-1表示最后一个元素
lrange key start end

# 修改列表中指定索引的值
lset key [索引值] value

# 将列表中前count次出现的值为value的元素移除
# count>0:表示从头向尾开始删除;count<0:表示从尾向头开始删除;count=0:表示删除所有
lrem key [count次] value

Set类型

set是无序集合,元素为string类型,元素具有唯一性,不重复。对集合没有修改操作

1
2
3
4
5
6
7
8
# 添加元素
sadd key member1 member2 ...

# 获取Set类型的key中所有的元素
smembers key

# 删除指定的元素
srem key member1 member2

Zset类型

zset是有序集合,元素是string类型,元素具有唯一性,不重复,但是没有修改操作。

每个元素都会关联一个double类型score,标识权重,通过权重将元素从小到大进行排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 添加zset的数据
zadd key score1 member1 score2 member2 ....

# 获取zset指定范围内的数据
# start、end是索引下标,索引从0开始,可以是负数,负数表示从尾部开始,-1表示最后一个元素
zrange key start end

# 获取权值之间的数据,返回结果包括权值边缘
zrangebyscore key [权值下限] [权值上限]

# 返回zset中成员member的权值
zscore key member

# 删除zset中指定的成员
zrem key member1 member2 ...

# 删除权重在指定范围内的成员,结果包括权值的边缘
zremrangebyscore key by [权值下限] [权值上限]