0%

【Redis】Redis数据类型

关于在linux中如何操作Redis不同的数据类型

1. Redis五大数据类型

  • (1)String(字符串)
  • (2)Hash(哈希,类似Java里的Map)
  • (3)List(列表)
    • 底层实际是一个链表
  • (4)Set (集合)
  • (5)Zset(sorted set:有序集合)

2. Redis操作数据库命令


3. Redis Key常用操作

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
//查询当前数据库key数量
key *

//添加键值
set [key] [value]

//获取键值
get [key]

//删除键值
del [key]

//判断是否存在指定key(1存在,0不存在)
exists [key]

//移动指定key到指定数据库
move [key] [database]

//为指定key设置过期时间(单位:秒)
exprie [key] [time]

//查看指定key还是多少时间过期(-1表示永不过期,-2表示已过期,过期就会移除当前key)
ttl [key]

//查看指定key的数据类型
type [key]

4. Redis 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
27
28
29
30
31
32
33
34
35
//在原有字符串拼接新数据
append [key] [value]

//对于数字类型String自增1
incr [key]

//对于数字类型String自减1
decr [key]

//对于数字类型String增加特定值
incrby [key] [value]

//对于数学类型String减少特定值
decrby [key] [value]

//获取字符串指定范围值(0, -1获取全部)
getrange [key] [start] [end]

//给字符串特定位置开始填加新值
setrange [key] [start] [value]

//新增键值的同时设置过期时间(单位:秒)
setex [key] [time] [value]

//新增键值时判断该键是否存在,存在就不覆盖
setnx [key] [value]

//一次新增多个键值
mset [key1] [value1] [key2] [value2] ...

//一次获取多个键值
mget [key1] [key2] ...

//一次新增多个键值并判断是否存在,一旦有一个存在,直接取消新增
msetnx [key1] [value1] [key2] [value2] ...

5. Redis List常用操作

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
27
28
29
30
31
32
33
34
35
//从左边为新数据进行插入列表数据
lpush [list] [value1] [value2] [value3] ...

//从右边做为新数据进行插入列表数据
rpush [list] [value1] [value2] [value3] ...

//按指定范围查看列表数据
lrange [list] [start] [end]

//出栈最左边的数据
lpop [list]

//出栈最右边的数据
rpop [list]

//按角标索引数据
lindex [list] [index]

//获取列表长度
llen [list]

//删除列表中指定次数的值
lrem [list] [times] [value] //例:lren list01 2 3:删除list01中值为3数据,删除两次

//按范围截取指定列表的值,并重新覆盖该列表
ltrim [list] [start] [end]

//将列表1最右边数据移除,并将该数据添加到列表2的最右边(两个命令的结合)
rpoplpush [list1] [list2]

//将指定下标的数据进行替换
lset [list] [index] [value]

//在指定列表的指定值(value1)前面/后面插入数据(value2)
linsert [list] before/after [value1] [value2]

6. Redis Set常用操作

Set和List差不多,只是Set的数据不允许重复,List数据允许

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
27
28
29
//新增set型数据(自动过滤重复数据)
sadd [set] [value1] [value2] [value3] ...

//获取set集合数据
smembers [set]

//判断set集合中是否存在指定数据
sismenber [set] [value]

//删除set集合指定数据
srem [set] [value]

//随机获取指定数量的数据
srandmember [set] [number]

//随机出栈(可返回查询信息)一个数据
spop [set]

//将set集合(set1)中一个指定数据移动到另一个set集合(set2)中
smove [set1] [set2] [value]

//查询两个集合的差集(以set1为准)
sdiff [set1] [set2]

//查询两个集合的交集
sinter [set1] [set2]

//查询两个集合并集
sunion [set1] [set2]

7. Redis Hash常用操作

hash可以暂时理解为K-V形式,key是String类型,value是个对象
深层次理解为KV模式,但value是一个键值对

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
27
28
29
30
31
32
33
34
35
36
37
38
//新增hash
hset [key] [v-key] [v-value]

//获取hash
hget [key] [v-key]

//一次添加多个hash
hmset [key] [v-key1] [v-value1] [v-key2] [v-value2] ...

//一次获取多个hash(仅返回值)
hmget [key] [v-key1] [v-key2] ...

//一次获取多个hash(返回键和值)
hgetall [key]

//删除hash
hdel [key] [v-key]

//返回键的长度
hlen [key]

//判断指定hash是否存在某个v-key
hexists [key] [v-key]

//获取某个hash里面的所有v-key
hkeys [key]

//获取某个hash里面的所有v-value
hvals [key]

//对于某个hash里面的数字型v-value增加指定数字 (没有自减,需要减使用负数)
hincrby [key] [v-key] [number]

//对于某个hash里面的数字型v-value增加指定浮点数字
hincrbyfloat [key] [v-key] [float-number]

//新增hash时判断该v-key是否存在,存在就取消新增
hsetnx [key] [v-key] [v-value]

8. Redis Zset常用操作

Zset 是 sort set 的简称
zset是在原有set的基础上,添加了个score值

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//新增一个zset
zadd [zset] [score1] [value1] [score2] [value2] [score3] [value3] ...

//按指定范围获取zset的数据(只获取value)
zrange [zset] [start] [end]

//按指定范围获取zset的数据(获取value和score)
zrange [zset] [start] [end] withscores

//按指定score范围获取zset的数据(只获取value)
zrangebyscore [zset] [score-start] [score-end] //例:zrangebyscore student 60 100 获取60-100分的学生信息

//按指定score范围获取zset的数据(只获取value)('('为不包含)
zrangebyscore [zset] ([score-start] ([score-end] //例:zrangebyscore student (60 (100 获取61-99分的学生信息,不包含60和100

//按指定score范围获取zset的数据(获取value和score)
zrangebyscore [zset] [score-start] [score-end] withscores

//按指定score范围获取zset的数据,并指定下标开始截取指定长度数据
zrangebyscore [zset] [score-start] [score-end] limit [start] [number]

//删除zset的数据(会自动删除对应的score)
zrem [zset] [value]

//获取zset的长度
zcard [zset]

//根据指定score范围统计获取长度
zcount [zset] [score-start] [score-end]

//获取value对应的下标
zrank [zset] [value]

//获取指定value对应的score
zscore [zset] [value]

//逆序(从右到左)获取value对应的下标
zrevrank [zset] [value]

//按指定范围逆序获取zset数据
zrevrange [zset] [start] [end]

//按指定分数返回逆序获取zset数据(注意:分数也要反转)
zrevrangebyscore [zset] [score-end] [score-start]