# redis五大数据类型
# String(字符串)
# 设置值
set test test1
# 获取值
get test
# 查看所有值
keys *
# 判断值是否存在
EXISTS test
# 追加值,如果没有相当于set
APPEND test ',ceshichenggong'
# 查看key的长度
strlen test
# 数字类型增加1
INCR view
# 数字类型减少1
DECR view
# 指定增量为5
INCRBY view 5
# 指定减量为3
DECRBY view 3
# 截取字符串[1,4]
GETRANGE key 1 4
# 获取全部的字符串,相当于get
GETRANGE key 0 -1
##############################################
# setex (set with expire) #设置过期时间
# setnx (set if not exist) #不存在再设置(在分布式锁中会常常使用!)
# 设置key1 的值为hello,30秒后过期
setex key1 30 'hello'
# 查看还有多久过期
ttl key1
# 如果mykey不存在,创建mykey
setnx mykey redis
#如果mykey存在,创建失败!
setnx mykey 'nihao'
#############################################
#对象
# 设置一个user:1对象 值为json字符串来保存一个对象
set user:1 {name:zhangsan,age:3}
# 获取对象值
get user:1
"{name:zhangsan,age:3}"
# 这里的key是一个巧妙的设计:user:{id}:{filed},如此设计在Redis中是完全OK
mset user:1:name zhangsan user:1:age 2
mget user:1:name user:1:age
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
45
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
45
# LIst
基本的数据类型,列表;在redis里面,我们可以把list玩成栈,队列,阻塞队列,所有的List命令都是用L开头的
# 左边插入
LPUSH list one
# 获取
LRANGE list 0 -1
# 右边插入
RPUSH list four
# 获取
LRANGE list 0 -1
###################################
# 移除列表的右边第一个
RPOP list
# 移除列表的左边第一个
#################################
# 查询值
Lindex list 1
# 移除值
lrem list 1 one
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
小结
- 他实际上是一个链表,before Node after , left,right都可以插入值
- 如果key不存在,创建新的链表
- 如果key存在,新增内容
- 如果移除了所有值,空链表,也代表不存在!
- 在两边插入或者改动值,效率最高!中间元素,相对来说效率会低一点~
# set
set中的值是不能重复的!
# set集合中添加值
sadd myset hello
# 查看指定set的所有值
smembers myset
# 判断某一个值是不是在set集合中!
SISMEMBER myset hello
#移除set集合中的指定元素
srem myset hello
# 查看集合中还有几个元素
scard myset
# 随机抽选一个元素
srandmember myset
# 随机抽选出指定个数的元素
srandmember myset 2
########################################################
# 随机删除一些set集合中的元素!
spop myset
# 将一个指定的值,移动到另外的一个set集合中!
smove myset myset2 "nihao"
数字集合类:
- 交集 SINTER
- 并集 SUNION
- 差集 SDIFF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Hash(哈希)
Map集合,key-map!时候这个值是一个map集合!本质和String类型没有太大区别,还是一个简单的key-value!set myhash field xiaobo
hset myhash field1 xiaobo # set一个具体 key-value
hget myhash field1 xiaobo # 获取一个字段值
hmget myhash field1 field2 # 获取多个字段值
hgetall myhash # 获取全部的数据
hdel myhash field1 # 删除hash指定key字段!对应的value值也就消失了!
hgetall myhash
hlen myhash # 获取hash表的字段数量!
#######################################################
#只获得所有field
#只获得所有value
hkeys myhash #只获得所有field
hvals myhash #只获得所有value
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# Zset(有序集合)
zadd myset 1 0ne #添加一个值
zadd myset 2 two 3 three #添加多个值
zadd salary 2500 zhangsan #添加三个值
zadd salary 5000 lisi
zadd salary 500 wangwu
zrangebyscore salary -inf +inf #从小到大排序
zrevrang salary 0 -1 #从大到小进行排序
zrangebyscore salary -inf +inf withscores #显示全部的用户并且附带成绩
zrangebyscore salary -inf 2500 withscores #显示工资小于2500员工的升降排序
######################################################################
#移除rem中的元素
zrem salary xiaobo #移除有序集合中的指定元素
zcard salary #获取有序集合中的个数
zcount myset 1 3 #获取指定区间的成员数量!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15