登录docker中redis服务器
redis-cli -h 127.0.0.1 -p 6379 -a password
Redis中有哪些基本数据类型
- String类型,主要用于存放单一变量。
- Hash类型,主要用于存放对象。
- List类型,主要用于按顺序存放元素,支持栈结构,也支持队列结构。
- Set类型,主要用于无序去重存放元素。
- Zset类型,主要用于按照指定分值顺序去重存放元素。
String数据类型
# 设置字符串值
127.0.0.1:6379> set name zhangsan
OK
# 获取字符串值
127.0.0.1:6379> get name
"zhangsan"
# 设置数字值
127.0.0.1:6379> set age 20
OK
# 自增数字
127.0.0.1:6379> incr age
(integer) 21
# 自减数字
127.0.0.1:6379> decr age
(integer) 20
# 获取字符串长度
127.0.0.1:6379> strlen name
(integer) 8
# 截取子串,包括开始位置和结束位置
127.0.0.1:6379> getrange name 0 1
"zh"
# 删除key
127.0.0.1:6379> del name age
(integer) 2
# 设置多个值
127.0.0.1:6379> mset name zhangsan age 30 sex man
OK
# 获取多个值
127.0.0.1:6379> mget name age sex
1) "zhangsan"
2) "30"
3) "man"
# 替换key的值
127.0.0.1:6379> getset age 29
"30"
# 追加值
127.0.0.1:6379> APPEND name 001
(integer) 11
# 获取值
127.0.0.1:6379> get name
"zhangsan001"
# 设置值,有效期在20秒
127.0.0.1:6379> setex name 20 zhangsan
OK
Hash数据类型
# 设置对象userObj,属性值id为1
127.0.0.1:6379> hset userObj id 1
(integer) 1
# 设置对象userObj,属性值name为zhangsan
127.0.0.1:6379> hset userObj name zhangsan
(integer) 1
# 获取对象userObj全部属性值
127.0.0.1:6379> hgetall userObj
1) "id"
2) "1"
3) "name"
4) "zhangsan"
# 获取对象userObj单个属性name的值
127.0.0.1:6379> hget userObj name
"zhangsan"
# 设置对象userObj多个属性值
127.0.0.1:6379> hmset userObj sex man age 30
OK
# 获取对象userObj多个属性值
127.0.0.1:6379> hmget userObj sex age
1) "man"
2) "30"
# 删除对象userObj中的属性sex
127.0.0.1:6379> hdel userObj sex
(integer) 1
# 获取对象userObj中的所有键
127.0.0.1:6379> hkeys userObj
1) "id"
2) "name"
3) "age"
# 获取对象userObj中的所有值
127.0.0.1:6379> hvals userObj
1) "1"
2) "zhangsan"
3) "30"
List数据类型
# 入栈
127.0.0.1:6379> lpush mylist aa bb cc dd ee
(integer) 5
# 入栈
127.0.0.1:6379> lpush mylist ff hh gg
(integer) 8
# 获取栈长度
127.0.0.1:6379> llen mylist
(integer) 8
# 出栈
127.0.0.1:6379> lpop mylist
"gg"
# 获取栈长度
127.0.0.1:6379> llen mylist
(integer) 7
# 查看栈内的所有元素
127.0.0.1:6379> lrange mylist 0 -1
1) "hh"
2) "ff"
3) "ee"
4) "dd"
5) "cc"
6) "bb"
7) "aa"
# 查看指定开始位置到结束位置的栈元素
127.0.0.1:6379> lrange mylist 0 2
1) "hh"
2) "ff"
3) "ee"
# 入队列
127.0.0.1:6379> lpush myqueue 11 22 33 44
(integer) 4
# 出队列
127.0.0.1:6379> rpop myqueue
"11"
# 查看队列中的所有元素
127.0.0.1:6379> lrange myqueue 0 -1
1) "44"
2) "33"
3) "22"
# 查看队列中的开始位置到结束位置的元素
127.0.0.1:6379> lrange myqueue 0 2
1) "44"
2) "33"
3) "22"
Set数据类型
# 添加元素到myset集合中
127.0.0.1:6379> sadd myset 00 00 11 22 22 33 33 44
(integer) 5
# 查看myset中的全部元素
127.0.0.1:6379> smembers myset
1) "00"
2) "33"
3) "11"
4) "22"
5) "44"
# 删除myset中的元素33
127.0.0.1:6379> srem myset 33
(integer) 1
# 查看myset中的全部元素
127.0.0.1:6379> smembers myset
1) "00"
2) "11"
3) "22"
4) "44"
# 从myset中随机取出一个元素
127.0.0.1:6379> spop myset
"00"
# 查看myset中的全部元素
127.0.0.1:6379> smembers myset
1) "11"
2) "22"
3) "44"
# 随机查看myset中指定个数的元素
127.0.0.1:6379> srandmember myset 2
1) "22"
2) "11"
127.0.0.1:6379> smembers myset
1) "11"
2) "22"
3) "44"
127.0.0.1:6379> sadd myset01 a b c d
(integer) 4
127.0.0.1:6379> sadd myset02 c e f d
(integer) 4
# myset01集合和myset02集合取差集
127.0.0.1:6379> sdiff myset01 myset02
1) "a"
2) "b"
# myset01集合和myset02集合取交集
127.0.0.1:6379> sinter myset01 myset02
1) "c"
2) "d"
# myset01集合和myset02集合取并集
127.0.0.1:6379> sunion myset01 myset02
1) "c"
2) "a"
3) "f"
4) "d"
5) "e"
6) "b"
Zset数据类型
# 根据分值排序的myZset集合
# zadd <key><score1><value1><score2><value2>
127.0.0.1:6379> zadd myZset 1 a 3 c 2 b 4 d
(integer) 4
# 查看myZset中的全部元素
127.0.0.1:6379> zrange myZset 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
# 删除myZset集合中元素
127.0.0.1:6379> zrem myZset c
(integer) 1
127.0.0.1:6379> zrange myZset 0 -1
1) "a"
2) "b"
3) "d"
# 根据分值范围查询myZset集合中的元素,(表示不包含
127.0.0.1:6379> zrangebyscore myZset 1 (2
1) "a"
# 根据分值范围查询myZset集合中的元素,(表示不包含
127.0.0.1:6379> zrangebyscore myZset (1 2
1) "b"